This article will cover the basics of installing a Chef Cookbook to perform an automated infrastructure task, in this case managing users with the Chef Cookbook users. This article builds off the article “How to install Chef Configuration Management Server Workstation and Node”.
*These steps are completed on your Chef Workstation
Add some basic information to your knife.rb file
berks install
berks upload |
Install the Berkshelf Ruby Gem
knife node run_list add your-node.com users
knife node run_list add your-node.com user_mg |
Configure your cookbook info into a Berksfile
knife node run_list remove your-node.com recipe[users] |
Create a cookbook user_mg
knife data bag from file users some-user.json |
Create a users data bag
knife data bag delete users some-user |
Create your user info in your users data bag (You can more then one user by repeating this step)
*see documentation for users cookbook for more options
vim ~/chef-repo/cookbooks/user_mg/metadata.rb |
Add a depends entry and other metadata for your user_mg cookbook
vim ~/chef-repo/cookbooks/user_mg/metadata.rb name 'user_mg' maintainer 'maintainer-name' maintainer_email 'your-email@host.com' license 'Apache 2.0' description 'Installs/Configures user_mg' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) version '0.1.1' depends "users" |
Create a recipe for your user_mg cookbook in the default.rb
*see documentation for users cookbook for more options
vim ~/chef-repo/cookbooks/user_mg/recipes/default.rb include_recipe "users" users_manage "devops" do action [ :remove, :create ] end |
Check your changes into git
git add ~/chef-repo/cookbooks/* git add ~/chef-repo/data_bags/* git commit -m'Added users cookbook and databag' |
Include your users data bag file some-user.json (*Run this for each user if more then one)
knife data bag from file users some-user.json |
Use Berkshelf to install and upload your changes
berks install
berks upload |
Add your cookbook recipes to your node
knife node run_list add your-node.com users
knife node run_list add your-node.com user_mg |
*If you need to remove a cookbook recipe ever you can run
knife node run_list remove your-node.com recipe[users] |
*If you change data bag data run this
knife data bag from file users some-user.json |
*If you need to delete a item in the data bag run this
knife data bag delete users some-user |
*If you update the recipe update your Cookbook Version
vim ~/chef-repo/cookbooks/user_mg/metadata.rb |
Hope this helps you get an idea on how to implement a Chef Cookbook!