Git Product home page Git Product logo

ramdisk-cookbook's Introduction

Ramdisk Cookbook

Cookbook Version Dependency Status Code Climate Build Status Coverage Status

This cookbook manages tmpfs RAM disks with Chef.

Requirements

Supported Platforms

This cookbook has been tested on the following platforms:

  • CentOS
  • Debian
  • Fedora
  • FreeBSD
  • RedHat
  • Ubuntu

FreeBSD support is somewhat limited due to its current implementation: the remount is not supported on this platform and some mount options are ignored.

Please, let us know if you use it successfully on any other platform.

Required Applications

  • Ruby 1.9.3 or higher.

Resources

ramdisk[path]

Creates or deletes a RAM disk.

If you change the RAM disk size, the ramdisk resource will try to remount the disk without umounting.

ramdisk Actions

  • create: Creates a RAM disk (default).
  • delete: Deletes a RAM disk.

ramdisk Parameters

Parameter Default Description
path name parameter tmpfs RAM disk mount path.
size nil Size of the filesystem (required). The size is given in bytes. Also accepts a suffix k, m or g.
persist true Whether to persist the RAM disk. Note: The data will not persist between reboots. This only creates the RAM disk on each boot.
nosuid false Do not allow set-user-identifier or set-group-identifier bits to take effect.
nodev false Do not interpret character or block special devices on the filesystem.
noexec false Do not allow direct execution of any binaries on the mounted filesystem.
noatime false Do not update inode access times on this filesystem.
nodiratime false Do not update directory inode access times on this filesystem.
inodes nil The maximum number of inodes for this instance.
mode nil Set initial permissions of the root directory.
uid nil The user id.
gid nil The group id.
user nil The same as uid, but using user names.
group nil The same as gid, but using group names.
mpol nil Set the NUMA memory allocation policy for all files in that instance.

Attributes

These attributes are primarily intended to support the different platforms. Do not touch them unless you know what you are doing.

Attribute Default Description
node['ramdisk']['options']['default'] ['rw'] Minimal default mount options to set.
node['ramdisk']['options']['flags'] calculated Supported mount flag options: nosuid, noexec, ...
node['ramdisk']['options']['variables'] calculated Supported mount variable options: size=, mode=, uid=, ...
node['ramdisk']['supports']['remount'] calculated Whether mount remount operation is supported.

Usage

Including in the metadata

Before using this cookbook, remember to put it as a dependency in your metadata:

# metadata.rb
depends 'ramdisk'

Basic Example

Create a 10MB tmpfs RAM disk:

ramdisk '/mnt/ramdisk1' do
  size '10m'
end

A Complex Example

Create a tmpfs RAM disk setting some options and the owner user:

ramdisk '/tmp/secure_bob_ramdisk' do
  size '1g'
  user 'bob'
  group 'bob'
  persist false
  nosuid true
  nodev true
  noexec true
  noatime true
  inodes '999k'
  mode '750'
end

Testing

See TESTING.md.

ChefSpec Matchers

ramdisk(path)

Helper method for locating a ramdisk resource in the collection.

resource = chef_run.ramdisk('/mnt/ramdisk1')
expect(resource).to notify('service[java-app]').to(:restart)

create_ramdisk(path)

Assert that the Chef run creates a ramdisk.

expect(chef_run).to create_ramdisk('/mnt/ramdisk1')

delete_ramdisk(name)

Assert that the Chef run deletes a ramdisk.

expect(chef_run).to delete_ramdisk('/mnt/ramdisk1')

Contributing

Please do not hesitate to open an issue with any questions or problems.

See CONTRIBUTING.md.

TODO

See TODO.md.

License and Author

Author: Xabier de Zuazo ([email protected])
Contributor: Hendrik Bergunde
Copyright: Copyright (c) 2015, Xabier de Zuazo
Copyright: Copyright (c) 2014, Onddo Labs, SL.
License: Apache License, Version 2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

ramdisk-cookbook's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.