summaryrefslogtreecommitdiff
path: root/distro/common/markdown/man1/chef-shell.mkd
diff options
context:
space:
mode:
Diffstat (limited to 'distro/common/markdown/man1/chef-shell.mkd')
-rw-r--r--distro/common/markdown/man1/chef-shell.mkd195
1 files changed, 195 insertions, 0 deletions
diff --git a/distro/common/markdown/man1/chef-shell.mkd b/distro/common/markdown/man1/chef-shell.mkd
new file mode 100644
index 0000000000..5525ef8ea9
--- /dev/null
+++ b/distro/common/markdown/man1/chef-shell.mkd
@@ -0,0 +1,195 @@
+chef-shell(1) -- Interactive Chef Console
+=========================================
+
+## SYNOPSIS
+
+__chef-shell__ [_named configuration_] _(options)_
+
+ * `-S`, `--server CHEF_SERVER_URL`:
+ The chef server URL
+ * `-z`, `--client`:
+ chef-client mode
+ * `-c`, `--config CONFIG`:
+ The configuration file to use
+ * `-j`, `--json-attributes JSON_ATTRIBS`:
+ Load attributes from a JSON file or URL
+ * `-l`, `--log-level LOG_LEVEL`:
+ Set the logging level
+ * `-s`, `--solo`:
+ chef-solo session
+ * `-a`, `--standalone`:
+ standalone session
+ * `-v`, `--version`:
+ Show chef version
+ * `-h`, `--help`:
+ Show command options
+
+When no --config option is specified, chef-shell attempts to load a
+default configuration file:
+
+* If a _named configuration_ is given, chef-shell will load ~/.chef/_named
+ configuration_/chef_shell.rb
+* If no _named configuration_ is given chef-shell will load
+ ~/.chef/chef_shell.rb if it exists
+* chef-shell falls back to loading /etc/chef/client.rb or
+/etc/chef/solo.rb if -z or -s options are given and no chef_shell.rb
+can be found.
+* The --config option takes precedence over implicit configuration
+ paths.
+
+## DESCRIPTION
+
+`chef-shell` is an irb(1) (interactive ruby) session customized for Chef.
+`chef-shell` serves two primary functions: it provides a means to
+interact with a Chef Server interactively using a convenient DSL; it
+allows you to define and run Chef recipes interactively.
+
+## SYNTAX
+
+chef-shell uses irb's subsession feature to provide multiple modes of
+interaction. In addition to the primary mode which is entered on start,
+`recipe` and `attributes` modes are available.
+
+## PRIMARY MODE
+The following commands are available in the primary
+session:
+
+ * `help`:
+ Prints a list of available commands
+ * `version`:
+ Prints the Chef version
+ * `recipe`:
+ Switches to `recipe` mode
+ * `attributes`:
+ Switches to `attributes` mode
+ * `run_chef`:
+ Initiates a chef run
+ * `reset`:
+ reinitializes chef-shell session
+ * `echo :on|:off`:
+ Turns irb's echo function on or off. Echo is _on_ by default.
+ * `tracing :on|:off`:
+ Turns irb's function tracing feature on or off. Tracing is extremely
+ verbose and expected to be of interest primarily to developers.
+ * `node`:
+ Returns the _node_ object for the current host. See knife-node(1)
+ for more information about nodes.
+ * `ohai`:
+ Prints the attributes of _node_
+
+In addition to these commands, chef-shell provides a DSL for accessing
+data on the Chef Server. When working with remote data in chef-shell, you
+chain method calls in the form _object type_._operation_, where
+_object type_ is in plural form. The following object types are
+available:
+
+ * `nodes`
+ * `roles`
+ * `data_bags`
+ * `clients`
+ * `cookbooks`
+
+For each _object type_ the following operations are available:
+
+ * _object type_.all(_&block_):
+ Loads all items from the server. If the optional code _block_ is
+ given, each item will be passed to the block and the results
+ returned, similar to ruby's `Enumerable#map` method.
+ * _object type_.show(_object name_):
+ Aliased as _object type_.load
+
+ Loads the singular item identified by _object name_.
+ * _object type_.search(_query_, _&block_):
+ Aliased as _object type_.find
+
+ Runs a search against the server and returns the matching items. If
+ the optional code _block_ is given each item will be passed to the
+ block and the results returned.
+
+ The _query_ may be a Solr/Lucene format query given as a String, or
+ a Hash of conditions. If a Hash is given, the options will be ANDed
+ together. To join conditions with OR, use negative queries, or any
+ advanced search syntax, you must provide give the query in String
+ form.
+ * _object type_.transform(:all|_query_, _&block_):
+ Aliased as _object type_.bulk_edit
+
+ Bulk edit objects by processing them with the (required) code _block_.
+ You can edit all objects of the given type by passing the Symbol
+ `:all` as the argument, or only a subset by passing a _query_ as the
+ argument. The _query_ is evaluated in the same way as with
+ __search__.
+
+ The return value of the code _block_ is used to alter the behavior
+ of `transform`. If the value returned from the block is `nil` or
+ `false`, the object will not be saved. Otherwise, the object is
+ saved after being passed to the block. This behavior can be
+ exploited to create a dry run to test a data transformation.
+
+## RECIPE MODE
+Recipe mode implements Chef's recipe DSL. Exhaustively documenting this
+DSL is outside the scope of this document. See the following pages in
+the Chef documentation for more information:
+
+ * <http://wiki.opscode.com/display/chef/Resources>
+ * <http://wiki.opscode.com/display/chef/Recipes>
+
+Once you have defined resources in the recipe, you can trigger a
+convergence run via `run_chef`
+
+## EXAMPLES
+
+* A "Hello World" interactive recipe
+
+ chef > recipe
+ chef:recipe > echo :off
+ chef:recipe > file "/tmp/hello\_world"
+ chef:recipe > run\_chef
+ [Sat, 09 Apr 2011 08:56:56 -0700] INFO: Processing file[/tmp/hello\_world] action create ((irb#1) line 2)
+ [Sat, 09 Apr 2011 08:56:56 -0700] INFO: file[/tmp/hello\_world] created file /tmp/hello\_world
+ chef:recipe > pp ls '/tmp'
+ [".",
+ "..",
+ "hello\_world"]
+
+* Search for _nodes_ by role, and print their IP addresses
+
+ chef > nodes.find(:roles => 'monitoring-server') {|n| n[:ipaddress] }
+ => ["10.254.199.5"]
+
+* Remove the role _obsolete_ from every node in the system
+
+ chef > nodes.transform(:all) {|n| n.run\_list.delete('role[obsolete]') }
+ => [node[chef098b2.opschef.com], node[ree-woot], node[graphite-dev], node[fluke.localdomain], node[ghost.local], node[kallistec]]
+
+
+## BUGS
+
+`chef-shell` often does not perfectly replicate the context in which
+chef-client(8) configures a host, which may lead to discrepancies in
+observed behavior.
+
+`chef-shell` has to duplicate much code from chef-client's internal
+libraries and may become out of sync with the behavior of those
+libraries.
+
+## SEE ALSO
+
+ chef-client(8) knife(1)
+ <http://wiki.opscode.com/display/chef/Chef+Shell>
+
+## AUTHOR
+
+ Chef was written by Adam Jacob <adam@opscode.com> with many
+ contributions from the community. chef-shell was written by Daniel
+ DeLeo.
+
+## DOCUMENTATION
+
+ This manual page was written by Daniel DeLeo <dan@opscode.com>.
+ Permission is granted to copy, distribute and / or modify this
+ document under the terms of the Apache 2.0 License.
+
+## CHEF
+
+ chef-shell is distributed with Chef. <http://wiki.opscode.com/display/chef/Home>