Please refer my previous article on chef:
Part 1 | Install/Setup and configure Chef Server/Workstation/Node on CentOS/RHEL 6.4 |
Part 2 | Understanding Chef Cookbook/Recipe. |
I) Extending existing Cookbook (cookbook-test) and configure a recipe for deploying Packages.
- Login to Workstation node which have knife configured.
- Lets say you have not yet install sendmail on your system, check it out using following command:
# rpm -qa | grep -v grep | grep -i sendmail
Note: In case if sendmail is installed and you want to delete it please refer to my rpm page. - Now lets create a recipe for a sendmail package.
# vim /usr/local/src/chef/cookbooks/cookbook-test/recipes/sendmail.rb package 'sendmail' do action :install end
- To upload a cookbook (cookbook-test) use following command:
# knife upload cookbooks cookbook-test
- Once we have upload the cookbook, now is the time to associate it with a Node using “run_list” Knife option:
# knife node run_list add node1.example.com recipe[cookbook-test::sendmail] node1.example.com: run_list: recipe[cookbook-test] recipe[cookbook-test::sendmail]
- Now login to machine “node1.example.com” and run the following command:
# chef-client Starting Chef Client, version 11.6.2 [2013-10-25T22:05:20-07:00] INFO: *** Chef 11.6.2 *** [2013-10-25T22:05:22-07:00] INFO: Run List is [recipe[cookbook-test], recipe[cookbook-test::sendmail]] [2013-10-25T22:05:22-07:00] INFO: Run List expands to [cookbook-test, cookbook-test::sendmail] [2013-10-25T22:05:22-07:00] INFO: Starting Chef Run for node1.example.com [2013-10-25T22:05:22-07:00] INFO: Running start handlers [2013-10-25T22:05:22-07:00] INFO: Start handlers complete. resolving cookbooks for run list: ["cookbook-test", "cookbook-test::sendmail"] [2013-10-25T22:05:22-07:00] INFO: Loading cookbooks [cookbook-test] Synchronizing Cookbooks: [2013-10-25T22:05:22-07:00] INFO: Storing updated cookbooks/cookbook-test/recipes/default.rb in the cache. - cookbook-test Compiling Cookbooks... Converging 3 resources Recipe: cookbook-test::default * group[system-admins] action create[2013-10-25T22:05:22-07:00] INFO: Processing group[system-admins] action create (cookbook-test::default line 9) (up to date) * user[sachin] action create[2013-10-25T22:05:22-07:00] INFO: Processing user[sachin] action create (cookbook-test::default line 13) (up to date) Recipe: cookbook-test::sendmail * package[sendmail] action install[2013-10-25T22:05:22-07:00] INFO: Processing package[sendmail] action install (cookbook-test::sendmail line 1) [2013-10-25T22:06:14-07:00] INFO: package[sendmail] installing sendmail-8.14.4-8.el6 from base repository - install version 8.14.4-8.el6 of package sendmail [2013-10-25T22:06:28-07:00] INFO: Chef Run complete in 66.492800835 seconds [2013-10-25T22:06:28-07:00] INFO: Running report handlers [2013-10-25T22:06:28-07:00] INFO: Report handlers complete Chef Client finished, 1 resources updated
- Check the sendmail rpm is installed on the system.
# rpm -qa | grep -i send sendmail-8.14.4-8.el6.x86_64
- Login to Workstation node which have knife configured.
- Edit the recipe file as per following rule:
# vim /usr/local/src/chef/cookbooks/cookbook-test/recipes/sendmail.rb package 'sendmail' do action :install end service 'sendmail' do action [ :enable,:start ] end
- To upload a cookbook (cookbook-test) use following command:
# knife upload cookbooks cookbook-test
- Now login to machine “node1.example.com” and run the following command and check the output of this command:
# chef-client Recipe: system-users::sendmail * package[sendmail] action install[2013-10-28T04:12:05-07:00] INFO: Processing package[sendmail] action install (system-users::sendmail line 1) (up to date) * service[sendmail] action enable[2013-10-28T04:12:10-07:00] INFO: Processing service[sendmail] action enable (system-users::sendmail line 5) (up to date) * service[sendmail] action start[2013-10-28T04:12:11-07:00] INFO: Processing service[sendmail] action start (system-users::sendmail line 5) [2013-10-28T04:12:11-07:00] INFO: service[sendmail] started - start service service[sendmail]
NOTE: Please check the comment marked in red.
- Login to Workstation node which have knife configured.
- Edit the recipe file as per following rule:
# vim /usr/local/src/chef/cookbooks/cookbook-test/recipes/sendmail.rb package 'sendmail' do action :remove end
- To upload a cookbook (cookbook-test) use following command:
# knife upload cookbooks cookbook-test
- Now login to machine “node1.example.com” and run the following command and check the output of this command:
# chef-client Recipe: system-users::sendmail * package[sendmail] action remove[2013-10-28T04:16:59-07:00] INFO: Processing package[sendmail] action remove (system-users::sendmail line 1) [2013-10-28T04:17:09-07:00] INFO: package[sendmail] removed - remove package sendmail