<!DOCTYPE html> <html> <head> <meta http-equiv='content-type' value='text/html;charset=utf8'> <meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'> <title>chef-solo(8) - Runs chef in solo mode against a specified cookbook location.</title> <style type='text/css' media='all'> /* style: man */ body#manpage {margin:0} .mp {max-width:100ex;padding:0 9ex 1ex 4ex} .mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0} .mp h2 {margin:10px 0 0 0} .mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex} .mp h3 {margin:0 0 0 4ex} .mp dt {margin:0;clear:left} .mp dt.flush {float:left;width:8ex} .mp dd {margin:0 0 0 9ex} .mp h1,.mp h2,.mp h3,.mp h4 {clear:left} .mp pre {margin-bottom:20px} .mp pre+h2,.mp pre+h3 {margin-top:22px} .mp h2+pre,.mp h3+pre {margin-top:5px} .mp img {display:block;margin:auto} .mp h1.man-title {display:none} .mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143} .mp h2 {font-size:16px;line-height:1.25} .mp h1 {font-size:20px;line-height:2} .mp {text-align:justify;background:#fff} .mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211} .mp h1,.mp h2,.mp h3,.mp h4 {color:#030201} .mp u {text-decoration:underline} .mp code,.mp strong,.mp b {font-weight:bold;color:#131211} .mp em,.mp var {font-style:italic;color:#232221;text-decoration:none} .mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff} .mp b.man-ref {font-weight:normal;color:#434241} .mp pre {padding:0 4ex} .mp pre code {font-weight:normal;color:#434241} .mp h2+pre,h3+pre {padding-left:0} ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px} ol.man-decor {width:100%} ol.man-decor li.tl {text-align:left} ol.man-decor li.tc {text-align:center;letter-spacing:4px} ol.man-decor li.tr {text-align:right;float:right} </style> <style type='text/css' media='all'> /* style: toc */ .man-navigation {display:block !important;position:fixed;top:0;left:113ex;height:100%;width:100%;padding:48px 0 0 0;border-left:1px solid #dbdbdb;background:#eee} .man-navigation a,.man-navigation a:hover,.man-navigation a:link,.man-navigation a:visited {display:block;margin:0;padding:5px 2px 5px 30px;color:#999;text-decoration:none} .man-navigation a:hover {color:#111;text-decoration:underline} </style> </head> <!-- The following styles are deprecated and will be removed at some point: div#man, div#man ol.man, div#man ol.head, div#man ol.man. The .man-page, .man-decor, .man-head, .man-foot, .man-title, and .man-navigation should be used instead. --> <body id='manpage'> <div class='mp' id='man'> <div class='man-navigation' style='display:none'> <a href="#NAME">NAME</a> <a href="#SYNOPSIS">SYNOPSIS</a> <a href="#DESCRIPTION">DESCRIPTION</a> <a href="#SEE-ALSO">SEE ALSO</a> <a href="#AUTHOR">AUTHOR</a> </div> <ol class='man-decor man-head man head'> <li class='tl'>chef-solo(8)</li> <li class='tc'>Chef Manual</li> <li class='tr'>chef-solo(8)</li> </ol> <h2 id="NAME">NAME</h2> <p class="man-name"> <code>chef-solo</code> - <span class="man-whatis">Runs chef in solo mode against a specified cookbook location.</span> </p> <h2 id="SYNOPSIS">SYNOPSIS</h2> <p><strong>chef-solo</strong> <em>(options)</em></p> <dl> <dt><code>-c</code>, <code>--config CONFIG</code></dt><dd>The configuration file to use</dd> <dt><code>-d</code>, <code>--daemonize</code></dt><dd>Daemonize the process</dd> <dt><code>-g</code>, <code>--group GROUP</code></dt><dd>Group to set privilege to</dd> <dt><code>-i</code>, <code>--interval SECONDS</code></dt><dd>Run chef-client periodically, in seconds</dd> <dt><code>-j</code>, <code>--json-attributes JSON_ATTRIBS</code></dt><dd>Load attributes from a JSON file or URL</dd> <dt><code>-l</code>, <code>--log_level LEVEL</code></dt><dd>Set the log level (debug, info, warn, error, fatal)</dd> <dt><code>-L</code>, <code>--logfile LOGLOCATION</code></dt><dd>Set the log file location, defaults to STDOUT - recommended for daemonizing</dd> <dt><code>-N</code>, <code>--node-name NODE_NAME</code></dt><dd>The node name for this client</dd> <dt><code>-r</code>, <code>--recipe-url RECIPE_URL</code></dt><dd>Pull down a remote gzipped tarball of recipes and untar it to the cookbook cache.</dd> <dt><code>-s</code>, <code>--splay SECONDS</code></dt><dd>The splay time for running at intervals, in seconds</dd> <dt><code>-u</code>, <code>--user USER</code></dt><dd>User to set privilege to</dd> <dt><code>-v</code>, <code>--version</code></dt><dd>Show chef version</dd> <dt><code>-h</code>, <code>--help</code></dt><dd>Show this message</dd> </dl> <h2 id="DESCRIPTION">DESCRIPTION</h2> <p>Chef Solo allows you to run Chef Cookbooks in the absence of a Chef Server. To do this, the complete cookbook needs to be present on disk.</p> <p>By default Chef Solo will look in /etc/chef/solo.rb for its configuration. This configuration file has two required variables: file_cache_path and cookbook_path.</p> <p>For example:</p> <pre><code>file_cache_path "/var/chef-solo" cookbook_path "/var/chef-solo/cookbooks" </code></pre> <p>For your own systems, you can change this to reflect any directory you like, but you'll need to specify absolute paths and the cookbook_path directory should be a subdirectory of the file_cache_path.</p> <p>You can also specify cookbook_path as an array, passing multiple locations to search for cookbooks.</p> <p>For example:</p> <pre><code>file_cache_path "/var/chef-solo" cookbook_path ["/var/chef-solo/cookbooks", "/var/chef-solo/site-cookbooks"] </code></pre> <p>Note that earlier entries are now overridden by later ones.</p> <p>Since chef-solo doesn't have any interaction with a Chef Server, you'll need to specify node-specifc attributes in a JSON file. This can be located on the target system itself, or it can be stored on a remote server such as S3, or a web server on your network.</p> <p>Within the JSON file, you'll also specify the recipes that Chef should run in the "run_list". An example JSON file, which sets a resolv.conf:</p> <pre><code>{ "resolver": { "nameservers": [ "10.0.0.1" ], "search":"int.example.com" }, "run_list": [ "recipe[resolver]" ] } </code></pre> <p>Then you can run chef-solo with -j to specify the JSON file. It will look for cookbooks in the cookbook_path configured in the configuration file, and apply attributes and use the run_list from the JSON file specified.</p> <p>You can use -c to specify the path to the configuration file (if you don't want chef-solo to use the default). You can also specify -r for a cookbook tarball.</p> <p>For example:</p> <pre><code>chef-solo -c ~/solo.rb -j ~/node.json -r http://www.example.com/chef-solo.tar.gz </code></pre> <p>In the above case, chef-solo would extract the tarball to your specified cookbook_path, use ~/solo.rb as the configuration file, and apply attributes and use the run_list from ~/node.json.</p> <h2 id="SEE-ALSO">SEE ALSO</h2> <p>Full documentation for Chef and chef-solo is located on the Chef wiki, http://wiki.opscode.com/display/chef/Home.</p> <h2 id="AUTHOR">AUTHOR</h2> <p>Chef was written by Adam Jacob <a href="mailto:adam@ospcode.com" data-bare-link="true">adam@ospcode.com</a> of Opscode (http://www.opscode.com), with contributions from the community. This manual page was written by Joshua Timberman <a href="mailto:joshua@opscode.com" data-bare-link="true">joshua@opscode.com</a> with help2man. Permission is granted to copy, distribute and / or modify this document under the terms of the Apache 2.0 License.</p> <p>On Debian systems, the complete text of the Apache 2.0 License can be found in /usr/share/common-licenses/Apache-2.0.</p> <ol class='man-decor man-foot man foot'> <li class='tl'>Chef 10.12.0.rc.1</li> <li class='tc'>May 2012</li> <li class='tr'>chef-solo(8)</li> </ol> </div> </body> </html>