Applying code with chef-solo

Even though a typical installation of chef includes a chef server and nodes running chef-client and working in a pull model, there are times your organization may not have a server and uses chef-solo instead.

In a severless model, there are three ways you could apply the code with following utilities
* chef-apply * chef-solo * chef-client --local-mode | -z

Even though, officially Chef recommends using chef-client with local mode as it creates a in memory server,

file: solo.rb

cookbook_path "/home/devops/sysfoo/cookbooks"
role_path  "/home/devops/sysfoo/cookbooks/roles"
environment_path "/home/devops/sysfoo/cookbooks/environments"
environment "prod"

file: node.json

{ "run_list" : "role[app]"}


  • Create solo.rb
  • Create node.json
  • Copy over the following
    • cookbooks
    • roles
    • environments

Generate dependencies and vendor those with the following command

    berks vendor /path