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 https://www.opscode.com/chef/install.sh | bash
Check
=====
> chef-solo -v
Setup chef repository
=====================
> wget http://github.com/opscode/chef-repo/tarball/master
> 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
Reference
- https://docs.chef.io/chef_solo/
- https://www.devopsschool.com/blog/difference-between-chef-infra-server-vs-chef-zero-vs-chef-solo/
- https://docs.chef.io/ctl_chef_solo/
Chef Essential Tutorial By Rajesh Kumar in 2020 – Session-1
Chef Essential Tutorial By Rajesh Kumar in 2020 – Session-2
Chef Essential Tutorial By Rajesh Kumar in 2020 – Session-3
Latest posts by Rajesh Kumar (see all)
- Best AI tools for Software Engineers - November 4, 2024
- Installing Jupyter: Get up and running on your computer - November 2, 2024
- An Introduction of SymOps by SymOps.com - October 30, 2024