Introduction
Chef Solo is simple way to begin working with Chef. It is an open source version of the chef-client that allows using cookbooks with nodes without requiring access to a server. Chef Solo runs locally and requires that a cookbook (and any of its dependencies) be on the same physical disk as the node. It is a limited-functionality version of the chef-client and does not support the following:
- Node data storage
- Search indexes
- Centralized distribution of cookbooks
- A centralized API that interacts with and integrates infrastructure components
- Authentication or authorization
- Persistent attributes
Login to your box and run the following command to install the chef. Make sure that curl program is available on your box.
curl -L https://www.opscode.com/chef/install.sh | bash
To check if the installation was successful check the version of the installed chef-solo by:
chef-solo -v
Making Chef Repository
Next step is to setup a file structure that will help organize various Chef files. Opscode, the makers of Chef provide one sample structure. They call it simply the Chef Repository.
wget http://github.com/opscode/chef-repo/tarball/master
tar zxf master
mv opscode-chef-repo-**** chef-repo/
Assign cookbook's path to the newly created cookbook directory inside the Chef Repository which will hold the cookbook
mkdir .chef
echo "cookbook_path ['/root/chef-repo/cookbooks' ]" > .chef/knife.rb
knife cookbook site download apt
.Chef folder
For Chef Solo this directory generally contains only knife.rb file. A knife.rb file is used to specify the chef-repo-specific configuration details for Knife. This file is the default configuration file and is loaded every time this executable is run. The configuration file is located at: ~/.chef/knife.rb. If a
knife.rb file is present in the . chef/knife.rb directory in the chef-repo, the settings contained within that file will override the default configuration settings. Sample content of knife.rb file can be:
cookbook_path [ '/root/chef-repo/cookbooks' ]
role_path [ '/root/chef-repo/roles' ]
environment_path [ ' /root/chef-repo/environments ' ]
data_bag_path [ ' /root/chef-repo/data_bags ' ]
Getting Started with Chef Solo
Before we're able to run Chef Solo on our servers, we will need to add two files to our local Chef repository: solo.rb and node.json.
The solo.rb file tells Chef Solo where to find the cookbooks, roles, and data bags.
The node.json file sets the run list (and any other node-specific attributes if required). Create a solo.rb file inside our Chef repository with the following contents:
current_dir = File.expand_path(File.dirname(__FILE__))
file_cache_path "#{current_dir}"
cookbook_path "#{current_dir}/cookbooks"
role_path "#{current_dir}/roles"
data_bag_path "#{current_dir}/data_bags"
Create a file called node.json inside your Chef repository with the following contents:
{
"run_list": [ "recipe[<recipe-name>]" ]
}
Example:-
In this example i am going to install apt cookbook and the recipe which i am going to use is apt and here is my solo.rb and node.json files looks like
In this example i am going to install apt cookbook and the recipe which i am going to use is apt and here is my solo.rb and node.json files looks like
Our first Chef run
Goto chef-repo folder and execute following command
chef-solo -c solo.rb -j node.json
- solo.rb configures Chef Solo to look for its cookbooks, roles, and data bags inside the current directory: the Chef repository.
2. Chef Solo takes its node configuration from a JSON file, in our example we simply called it node.json. If we're going to manage multiple servers, we'll need a separate       file.
- Then, Chef Solo just executes a Chef run based on the configuration data found in
solo.rb and node.json
No comments:
Post a Comment