Chef Tutorials: What is Chef Solo with example programs


How to deploy chef cookbooks without chef server? – Answer is – Chef Solo

What is Chef Solo?

chef-solo is a command that executes Chef Infra Client in a way that does not require the Chef Infra Server to converge cookbooks. chef-solo uses Chef Infra Client’s Chef local mode, and does not support the following functionality present in Chef Infra Client / server configurations:

Centralized distribution of cookbooks
A centralized API that interacts with and integrates infrastructure components
Authentication or authorization

How Chef solo Works?

chef-solo supports two locations from which cookbooks can be run:

  • A local directory.
  • A URL at which a tar.gz archive is located.

Before running Chef-Solo on the local machine, one needs to install the following two files on the local machine.

  • Solo.rb − This file tells Chef about where to find cookbooks, roles, and data bags.
  • Node.json − This file sets the run list and any node-specific attribute, if required.

A small chef-solo example

Install chef
> curl -L | bash
> chef-solo -v
Setup chef repository
> wget
> tar zxvf master
> mv opscode-chef-repo-f9d4b0c/ chef-repo
>ls chef-repo/
Create .chef directory inside chef-repo
> mkdir chef-repo/.chef
Setup a local cookbook path
> vi chef-repo/.chef/knife.rb
cookbook_path [ ‘/root/chef-repo/cookbooks’ ]
Create your first cookbook
> knife cookbook create ntp
Writing your first recipe
> vi chef-repo/cookbooks/ntp/recipes/default.rb
package ‘ntp’
Now configure your server using chef-solo
> vi chef-repo/solo.rb
file_cache_path “/root/chef-solo”
cookbook_path “/root/chef-repo/cookbooks”
> vi node.json
“run_list”: [ “recipe[ntp]” ]
Ensure ntp is not installed
> yum remove -y ntp
Use chef-solo to configure your server
> chef-solo -c chef-repo/solo.rb -j chef-repo/node.json
Confirm ntp is installed
> yum info ntp


Rajesh Kumar
Follow me
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x