Chef - Client Setup



In order to make Chef node communicate with Chef server, you need to set up Chef client on the node.

Chef Client

This is one of the key components of Chef node, which retrieves the cookbooks from the Chef server and executes them on the node. It is also known as the Chef provisioner.

Here, we will use Vagrant to manage VM. Vagrant can also be configured with the provisioner such as Shell script, Chef and Puppet to get VM into a desired state. In our case, we will use Vagrant to manage VMs using VirtualBox and Chef client as a provisioner.

Step 1 − Download and install VirtualBox from https://www.virtualbox.org/wiki/downlod

Step 2 − Download and install Vagrant at http://downloads.vagrantup.com

Step 3 − Install Vagrant Omnibus plugin to enable Vagrant to install Chef client on the VM.

$ vagrant plugin install vagrant-omnibus 

Creating and Booting Virtual

Step 1 − We can download the required Vagrant box from the Opscode vagrant repo. Download the opscode-ubuntu-12.04 box from the following URL https://opscode-vmbento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box

Step 2 − Once you have the Vagrant file, download the path you need to edit the Vagrant file.

vipin@laptop:~/chef-repo $ subl Vagrantfile 
Vagrant.configure("2") do |config| 
   config.vm.box = "opscode-ubuntu-12.04" 
   config.vm.box_url = https://opscode-vm-bento.s3.amazonaws.com/ 
   vagrant/opscode_ubuntu-12.04_provisionerless.box 
   config.omnibus.chef_version = :latest  
   config.vm.provision :chef_client do |chef| 
      chef.provisioning_path = "/etc/chef" 
      chef.chef_server_url = "https://api.opscode.com/ 
      organizations/<YOUR_ORG>" 
      chef.validation_key_path = "/.chef/<YOUR_ORG>-validator.pem"
      chef.validation_client_name = "<YOUR_ORG>-validator" 
      chef.node_name = "server" 
   end 
end 

In the above program, you need to update the <YOUR_ORG> name with the correct or required organization name.

Step 3 − Next step after the configuration is, to get the vagrant box up. For this, you need to move to the location where Vagrant box is located and run the following command.

$ vagrant up

Step 4 − Once the machine is up, you can login to the machine using the following command.

$ vagrant ssh

In the above command, vagrantfile is written in a Ruby Domain Specific Language (DSL) for configuring the vagrant virtual machine.

In the vagrant file, we have the config object. Vagrant will use this config object to configure the VM.

Vagrant.configure("2") do |config| 
……. 
End

Inside the config block, you will tell vagrant which VM image to use, in order to boot the node.

config.vm.box = "opscode-ubuntu-12.04" 
config.vm.box_url = https://opscode-vm-bento.s3.amazonaws.com/ 
   vagrant/opscode_ubuntu-12.04_provisionerless.box

In the next step, you will tell Vagrant to download the omnibus plugin.

config.omnibus.chef_version = :latest

After selecting the VM box to boot, configure how to provision the box using Chef.

config.vm.provision :chef_client do |chef| 
….. 
End 

Inside this, you need to set up instruction on how to hook up the virtual node to the Chef server. You need to tell Vagrant where you need to store all the Chef stuff on the node.

chef.provisioning_path = "/etc/chef" 
Advertisements