Skip to content

soltius/chef-efs

 
 

Repository files navigation

efs Cookbook

Cookbook to mount Elastic Filesystem endpoints in Amazon Web Services.

You just configure global defaults (presently the recommended values from Amazon) and individual mounts through node attributes. You also have the option of using the mount_efs resource within your own recipes.

Requirements

  • NFS

Platforms

  • Ubuntu 16.04
  • Centos 7.2
  • RHEL 7.2
  • Debian (untested)

Attributes

efs::default

Key Type Description Default
['efs']['mounts'] hash of hashes Keys are mount point paths, values can be any of the keys below. The fsid key is required. Any other optional keys will use global defaults from the attributes below. {}
['efs']['mounts'][mount point]['fsid'] string (required) FSID of the Elastic Filesystem (e.g. fs-1234abcd)
['efs']['mounts'][mount point]['region'] string Override AWS region for the mount derived from node['ec2']['placement_availability_zone']
['efs']['mounts'][mount point]['options'] string Override mount options string generated from attributes of mount and global below
['efs']['rsize'] int maximum read size in bytes 1048576
['efs']['wsize'] int maximum write size in bytes 1048576
['efs']['timeout'] int timeout between retries in deciseconds 600
['efs']['retrans'] int number of retries before further action 2
['efs']['behavior'] string determines timeout behavior (hard or soft) hard
['efs']['remove_unspecified_mounts'] boolean Unmount and remove any EFS mount in fstab that is not specified by ['efs']['mounts'] false

Usage

efs::default

Configure any desired mounts under node['efs']['mounts'] and include efs in your node's run_list:

{
  "name":"my_node",
  "run_list": [
    "recipe[efs]"
  ]
}

mount_efs

This cookbook is implemented with a custom resource so you can use mount_efs in your cookbook recipes as well with the same available attributes as the node['efs']['mounts'] structure.

Contributing

  1. Fork the repository on Github
  2. Create a named feature branch (like add_component_x)
  3. Write your change
  4. Write tests for your change (if applicable)
  5. Run the tests, ensuring they all pass
  6. Submit a Pull Request using Github

License and Authors

Authors: Matt Kulka [email protected]