Dear Readers,
In this article,we will see Most useful Chef Commands.
SNO | USE | COMMAND |
1 | Download Chef package from chef official website | wget https://packages.chef.io/files/stable/chef-workstation/0.13.35/el/7/chef-workstation-0.13.35-1.el7.x86_64.rpm |
2 | Install Chef package | yum install chef-workstation-0.13.35-1.el7.x86_64.rpm -y |
3 | Verify Chef Pacakge | which chef |
4 | See the version | chef -v or chef –version |
5 | Create a cookbook | chef generate cookbook <cookbook name> chef generate cookbook ktexperts-cookbook |
6 | Create a recipe | chef generate recipe <recipe name> chef generate recipe ktexperts-recipe |
7 | Verify ruby script | chef exec ruby -c <cookbook name>/recipes/<recipe name> chef exec ruby -c ktexperts-cookbook/recipes/ktexperts-recipe.rb |
8 | Run chef-client Locally | sudo chef-client -zr “recipe[<cookbook name>::<recipe name]” sudo chef-client -zr “recipe[ktexperts-cookbook::ktexperts-recipe]” |
9 | Get IP Address from Ohai store | ohai ipaddress |
10 | Get hostname from Ohai store | ohai hostname |
11 | Get memory/total from ohai store | ohai memory/total |
12 | Get cpu/0/mhz from ohai store | ohai cpu/0/mhz |
13 | Run List (Each recipe from each cookbook only) | sudo chef-client -zr “recipe[<cookbook name>::<recipe name>],recipe<cookbook name>::<recipe name>]” sudo chef-client -zr “recipe[ktexperts-apache-cookbook::ktexperts-apache-recipe],recipe[ktexperts-cookbook::ktexperts-recipe]” |
14 | Include_recipe (Run multiple recipes from same cookbook) | sudo chef-client -zr “recipe[<cookbook name>::default]” sudo chef-client -zr “recipe[ktexperts-apache-cookbook::default]” |
15 | Combine Run List and Include_recipe (Run any number of recipes from any number of cookbooks) | sudo chef-client -zr “recipe[<first cookbook name>],recipe[<second cookbook name>]” sudo chef-client -zr “recipe[ktexperts-apache-cookbook],recipe[ktexperts-cookbook]” |
16 | verify the connection between Workstation and Chef Server | knife ssl check (Be inside chef-repo) |
17 | Bootstrap a node | knife bootstrap <node-private IP> –ssh-user ec2-user –sudo -i <node-pem key> -N <Any node name> knife bootstrap 172.31.35.120 –ssh-user ec2-user –sudo -i chef.pem -N node1 |
18 | Verify Nodes | knife node list |
19 | Upload cookbook to Chef Server | knife cookbook upload <cookbook name> knife cookbook upload ktexperts-apache-cookbook |
20 | See the list of cookbooks | knife cookbook list |
21 | Attach recipe to node | knife node run_list set <node-name> “recipe[<cookbook name>::<recipe name>]” knife node run_list set node1 “recipe[ktexperts-apache-cookbook::ktexperts-apache-recipe]” |
22 | Verify the recipe added to the node or not | knife node show <node-name> knife node show node1 |
23 | Automate the chef-client (Add in node) | vi /etc/crontab * * * * * root chef-client |
24 | Automate the chef-client (Add in user data) | #!/bin/bash sudo sudo yum update -y echo “* * * * * root chef-client” >> /etc/crontab |
25 | Create a role | vi roles/ktexperts-web.rb name ‘ktexperts-web’ description “ktexperts web server role” run_list “recipe[<cookbook name>::<recipe name]”,”recipe[<cookbook name>::<recipe name]”,”recipe[<cookbook name>]” run_list “recipe[ktexperts-apache-cookbook::ktexperts-apache-recipe]”,”recipe[ktexperts-apache-cookbook::ktexperts-sample-recipe]”,”recipe[ktexperts-apache-cookbook]” |
26 | Upload role to chef server | knife role from file roles/<role-name> knife role from file roles/ktexperts-web.rb |
27 | Attach node to Role | knife node run_list set <node-name> “role[<role-name>]” knife node run_list set node1 “role[ktexperts-web]” |
28 | Verify the node added to the roles or not | knife node show <node-name> knife node show node1 |
29 | Upload all cookbooks to Chef Server | knife cookbook upload –all |
30 | See the list of Clients | knife client list |
31 | See the list of Roles | knife role list |
32 | Delete cookbooks from chef server | knife cookbook delete <cookbook name> knife cookbook delete ktexperts-apache-cookbook |
33 | Delete nodes from chef server | knfie node delete <node name> knfie node delete <node1> |
34 | Delete roles from chef server | knife role delete <role name> knife role delete ktexperts-web.rb |
35 | Delete clients from chef server | knife client delete <client name> knife client delete node1 |
Ruby Script for Single Resource
SNO | ACTION | SCRIPT |
1 | Create a file | file ‘ktexperts-file1’ do content ‘Ktexperts is a knowledge sharing platform’ action :create end |
2 | Install package | package ‘tree’ do action :install end |
3 | Create a web server | package ‘tree’ do action :install end file ‘/var/www/html/index.html’ do service ‘httpd’ do |
4 | Update the configuration information | file ‘/robofile’ do content “This is to get Attributes HOSTNAME: #{node[‘hostname’]} IPADDRESS: #{node[‘ipaddress’]} CPU: #{node[‘cpu’][‘0’][‘mhz’]} MEMORY: #{node[‘memory’][‘total’]}” owner ‘root’ group ‘root’ action :create end |
5 | Create a user | user ‘ramesh’ do action :create end |
6 | Create a group | group “DevOps” do action :create end |
7 | Add user to group | group “DevOps” do members”ramesh” append true end |
8 | Create user,group and file | user “Rammy” group “ktexperts” file “/rammyfile” |
9 | Execute Linux commands | execute “run a script” do command <<-EOH mkdir /ktexpertsdir touch /ktexpertsfile EOH end |
10 | Download package from internet | remote_file “/home/ec2-user/chef-workstation-0.13.35-1.el7.x86_64.rpm” do source “https://packages.chef.io/files/stable/chef-workstation/0.13.35/el/8/chef-workstation-0.13.35-1.el7.x86_64.rpm” action :create end |
Ruby Script for Multiple Resources
SNO | ACTION | SCRIPT |
1 | Install packages | %w(tree mysql httpd).each do |p| package p do action :install end end |
2 | Create users | %w(Ramesh Ajay Vinod).each do |p| user p do action :create end end |
3 | Create files | %w(/ktfile1 /ktfile2 /ktfile3).each do |p| file p do action :create end end |
4 | Create directories | %w(/ktdir1 /ktdir2 /ktdir3).each do |path| directory path do action :create end end |
5 | Create groups | %w(ktexperts1 ktexperts2 ktexperts3).each do |grp| group grp do action :create end end |
6 | Add users to single group | group ‘ktexperts1’ do action :modify members [‘Ramesh’,’Ajay’,’Vinod’] append true end |
Thank you for giving your valuable time to read the above information. Please click here to subscribe for further updates
KTEXPERTS is always active on below social media platforms.
Facebook : https://www.facebook.com/ktexperts/
LinkedIn : https://www.linkedin.com/company/ktexperts/
Twitter : https://twitter.com/ktexpertsadmin
YouTube : https://www.youtube.com/c/ktexperts
Instagram : https://www.instagram.com/knowledgesharingplatform