cookbook 'container', '~> 0.5.0'
container (5) Versions 0.5.0 Follow1
Installs lxc and offers containers as resource
cookbook 'container', '~> 0.5.0', :supermarket
knife supermarket install container
knife supermarket download container
Container cookbook
Chef cookbook for managing linux containers.
Description
This cookbook provides chef gears for installing and managing linux
containers. You can use this cookbook following ways:
- Recipes
- Resource-Providers
- container - resource/provider to create privileged container
- container_user - resource/provider to create an user who can create containers (unprivileged container).
These resource providers require native ruby-lxc bindings (installed by container::ruby recipe).
Note: Container cookbook is only tested on ubuntu 14.04.
Usage
container resource
Following will create a privileged ubuntu container named test-1
container 'test-1'
And following will create and start a ubuntu 10.04 container
ruby
container 'test-2' do
options(template: 'ubuntu', template_options: ['-r lucid'])
action [:create, :start]
end
container
resource can have following actions:
- create default
- destroy
- start
- stop
And following attributes
- container_name name attribute, default to resource name
- options a hash of action specific parameters
The options attribute can take following parameters (as hash)
- for create action:
- template: name of the template that will be used for creating the container (e.g. ubuntu, fedora, oracle etc). Default is ubuntu.
- template_options: an array containing addiotional arguments that will be passed to template (use lxc-create -t foo --help
to get the list of supported options for individual templates). Default is an empty array
- block_device: The backing storage device (e.g lvm, zfs etc). Default is nil
- flags: An integer flag passed to lxc-crate (currently only LXC::LXC_CREATE_QUIET is available)
container_user resource
This resource/provider setup necessary configuration files and folders required
to create unprivilged containers
(containers that are not owned by root).
Following will create an user named foo
with '/opt/foo' as home directory, who can create containers.
container_user 'foo' do home_dir '/opt/foo' end
container_user
resource can have following attributes:
- username name of the user
- user_password shadow password of the user
- create_user whetere the user will be created or an existing user will be used
- home_dir home directory of the user. Containers will be stored under this directory
- veth_limit number the veth interfaces that this user can create for containers (default is 100, which means by default 100 containers can be created by this user, assuming each of them will have 1 veth interface).
container_user
only allows setup
action
Chef-Lxc offerings
container::ruby
recipe installs chef-lxc
gem which also allowis creation of containers via the lxc
resource or chef-lxc
command line binary. But unlike the container
resource provided by this cookbook
lxc
resource can also configure containers (packages, services etc) using the same
chef recipe, but without actually installing chef inside it.
lxc "web" do template "ubuntu" recipe do package "apache2" service "apache2" do action [:start, :enable] end end action [:create, :start] end
If you want to install chef inside a container to configure it, you should look at
chef-provisioning-lxc.
License
Contributing
- Fork it ( https://github.com/GoatOS/container/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Dependent cookbooks
This cookbook has no specified dependencies.
Contingent cookbooks
Collaborator Number Metric
0.5.0 failed this metric
Failure: Cookbook has 0 collaborators. A cookbook must have at least 2 collaborators to pass this metric.
Contributing File Metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
0.5.0 failed this metric
FC064: Ensure issues_url is set in metadata: container/metadata.rb:1
FC065: Ensure source_url is set in metadata: container/metadata.rb:1
FC066: Ensure chef_version is set in metadata: container/metadata.rb:1
FC069: Ensure standardized license defined in metadata: container/metadata.rb:1
FC118: Resource property setting name_attribute vs. name_property: container/resources/container_user.rb:2
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
No Binaries Metric
0.5.0 passed this metric
Testing File Metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
0.5.0 failed this metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a CONTRIBUTING.md file
Foodcritic Metric
0.5.0 failed this metric
FC064: Ensure issues_url is set in metadata: container/metadata.rb:1
FC065: Ensure source_url is set in metadata: container/metadata.rb:1
FC066: Ensure chef_version is set in metadata: container/metadata.rb:1
FC069: Ensure standardized license defined in metadata: container/metadata.rb:1
FC118: Resource property setting name_attribute vs. name_property: container/resources/container_user.rb:2
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
No Binaries Metric
0.5.0 passed this metric
Testing File Metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
0.5.0 failed this metric
FC065: Ensure source_url is set in metadata: container/metadata.rb:1
FC066: Ensure chef_version is set in metadata: container/metadata.rb:1
FC069: Ensure standardized license defined in metadata: container/metadata.rb:1
FC118: Resource property setting name_attribute vs. name_property: container/resources/container_user.rb:2
Run with Foodcritic Version 16.3.0 with tags metadata,correctness ~FC031 ~FC045 and failure tags any
0.5.0 passed this metric
Testing File Metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must contain a TESTING.md file
Version Tag Metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number
0.5.0 failed this metric
0.5.0 failed this metric
Failure: To pass this metric, your cookbook metadata must include a source url, the source url must be in the form of https://github.com/user/repo, and your repo must include a tag that matches this cookbook version number