diff --git a/Makefile b/Makefile
index 946af4abad..428fc01b68 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
ASCII2MAN = a2x -D $(dir $@) -d manpage -f manpage $<
ASCII2HTMLMAN = a2x -D docs/html/man/ -d manpage -f xhtml
-MANPAGES := docs/man/man1/ansible.1 docs/man/man5/ansible-modules.1
+MANPAGES := docs/man/man1/ansible.1 docs/man/man5/ansible-modules.1 docs/man/man5/ansible-playbook.1
SITELIB = $(shell python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
docs: manuals
diff --git a/docs/man/man5/ansible-modules.5 b/docs/man/man5/ansible-modules.5
index 61a13dac57..80dc1ef98a 100644
--- a/docs/man/man5/ansible-modules.5
+++ b/docs/man/man5/ansible-modules.5
@@ -38,7 +38,7 @@ This module does not support change hooks\&.
.sp
Returns the return code from the program as well as timing information\&.
.sp
-Async command running and command execution time limits are in plan\&.
+Async command running and command execution time limits are in plan\&. These will probably be special keyvalue parameters expressed on the end of the command line, like ANSTIMEOUT=1 and ANS_ASYNC=1 or similar\&.
.SH "COPY"
.sp
The copy module takes a list of source files
@@ -56,11 +56,18 @@ Remote absolute path where the file should end up
This module also returns md5sum information about the resultant file\&.
.SH "FACTER"
.sp
-Runs the discovery program \fIfacter\fR on the remote system, returning JSON data that can be useful for inventory purposes\&. It makes no changes on the remote system\&.
+Runs the discovery program \fIfacter\fR on the remote system, returning JSON data that can be useful for inventory purposes\&.
.sp
Requires that \fIfacter\fR and \fIruby\-json\fR be installed on the remote end\&.
.sp
-This module takes no parameters & does not support change hooks\&.
+This module is information only \- it takes no parameters & does not support change hooks, nor does it make any changes on the system\&.
+.SH "FILE"
+.sp
+Ensures the ownership and permissions of files are as desired\&.
+.sp
+Use copy or template first if you need to make sure a file is on the box\&.
+.sp
+In plan\&.
.SH "GIT"
.sp
Deploys software from git checkouts\&.
@@ -68,16 +75,18 @@ Deploys software from git checkouts\&.
This module is in plan\&.
.SH "OHAI"
.sp
-Similar to the facter module, this returns JSON inventory data but makes no changes on the remote system\&.
+Similar to the facter module, this returns JSON inventory data\&. Ohai data is a bit more verbose and nested than facter\&.
.sp
Requires that \fIohai\fR be installed on the remote end\&.
.sp
-This module takes no parameters & does not support change hooks\&.
+This module is information only \- it takes no parameters & does not support change hooks, nor does it make any changes on the system\&.
.SH "PING"
.sp
-A trivial test module, this module always returns the integer \fI1\fR on successful contact\&. It makes no changes on the remote system\&.
+A trivial test module, this module always returns the integer \fI1\fR on successful contact\&.
.sp
This module does not support change hooks\&.
+.sp
+This module is information only \- it takes no parameters & does not support change hooks, nor does it make any changes on the system\&.
.SH "SERVICE"
.sp
Controls services on remote machines\&.
@@ -103,10 +112,8 @@ Writes a JSON file containing key/value data, for use in templating\&. Call this
\fBmetadata=\fR
.RS 4
Optionally overrides the default JSON file location of /etc/ansible/setup\&. If used, also supply the metadata parameter to
-\fItemplate\fR\&.
+\fItemplate\fR\&. Change if running as a non\-root remote user who does not have permissions on /etc/ansible\&.
.RE
-.sp
-Does not support change hooks yet, but in plan\&.
.SH "TEMPLATE"
.sp
Templates a file out to a remote server\&. Call the setup module prior to usage\&.
@@ -123,9 +130,7 @@ location to render the template on the remote server
.PP
\fBmetadata\fR
.RS 4
-location of a JSON file to use to supply template data\&. Default is /etc/ansible/setup which can be easily created using the
-\fIsetup\fR
-module\&.
+location of a JSON file to use to supply template data\&. Default is /etc/ansible/setup which is the same as the default for the setup module\&. Change if running as a non\-root remote user who does not have permissions on /etc/ansible\&.
.RE
.sp
This module also returns md5sum information about the resultant file\&.
diff --git a/docs/man/man5/ansible-playbook.1.asciidoc b/docs/man/man5/ansible-playbook.1.asciidoc
new file mode 100644
index 0000000000..04212cbc87
--- /dev/null
+++ b/docs/man/man5/ansible-playbook.1.asciidoc
@@ -0,0 +1,113 @@
+ansible-modules(5)
+=================
+:doctype:manpage
+:man source: Ansible-playbook
+:man version: 0.0.1
+:man manual: System administration commands
+
+
+NAME
+----
+ansible-playbook - format and function of an ansible playbook file
+
+
+DESCRIPTION
+-----------
+
+Ansible ships with a ansible-playbook tool for running playbooks. Playbooks can represent
+frequent tasks, desired system configurations, or deployment processes.
+
+
+FORMAT
+------
+
+Playbooks are currently writeable in YAML. Other formats (JSON?) may be supported in the future.
+
+
+EXAMPLE
+-------
+
+- pattern: '*'
+ hosts: '/etc/ansible/hosts'
+ tasks:
+ - do:
+ - configure template & module variables for future template calls
+ - setup http_port=80 max_clients=200
+ - do:
+ - write the apache config file
+ - template src=/srv/mytemplates/httpd.j2 dest=/etc/httpd/conf
+ notify:
+ - restart apache
+ - do
+ - ensure apache is running
+ - service name=httpd ensure=started
+ handlers:
+ - do:
+ - restart apache
+ - service name=httpd ensure=restarted
+
+
+WHAT THE EXAMPLE MEANS
+-----------------------
+
+Here's what the above example will do.
+
+For all hosts in /etc/ansible/hosts (one host per line) that are named 'webserver-anything', first
+write a JSON file into /etc/ansible/setup on each remote system with the values
+max_clients and http_port.
+
+Next, use a Jinja2 template locally residing
+at /srv/mytemplates/httpd.j2 to write the Apache config file on each host
+to the path /etc/httpd/conf, using the previous values.
+
+Ensure that apache is running if stopped.
+
+If and only if the config file changed, note that we need to restart apache at the end of
+the run, otherwise, don't bother because we already know it is running.
+
+
+HIGH LEVEL EXPLANATION
+----------------------
+
+Playbooks are executed top down and can contain multiple references to patterns.
+For instance, a playbook could do something to all webservers, then do something
+to all database servers, then do something different to all webservers again.
+
+For each pattern, the tasks in the 'tasks' list are executed in order for all
+hosts in the host file matching the pattern.
+
+For each task, a "do" statement describes what the task is and what ansible
+module to use to accomplish the task, along with any arguments. The first
+line in the "do" is the name of the task -- this will appear in any log output.
+
+The second line in each "do" is the module name followed by module arguments.
+
+Most modules accept key=value format arguments.
+
+Handlers are like tasks, but are conditionally executed. If a module reports
+a 'change', it can choose to notify a handler by name. If notified, it will
+run only for hosts that changed.
+
+
+FUTURE BEHAVIOR
+---------------
+
+What the playbook run does with a host when an error is detected is currently being refined
+and is subject to change.
+
+
+AUTHOR
+------
+
+Ansible was originally written by Michael DeHaan. See the AUTHORS file
+for a complete list of contributors.
+
+
+SEE ALSO
+--------
+
+ansible(1)
+
+ansible-playbook(1) - pending
+
+Ansible home page:
diff --git a/docs/man/man5/ansible-playbook.5 b/docs/man/man5/ansible-playbook.5
new file mode 100644
index 0000000000..83bf903f14
--- /dev/null
+++ b/docs/man/man5/ansible-playbook.5
@@ -0,0 +1,221 @@
+'\" t
+.\" Title: ansible-modules
+.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
+.\" Generator: DocBook XSL Stylesheets v1.75.2
+.\" Date: 02/26/2012
+.\" Manual: System administration commands
+.\" Source: Ansible-playbook 0.0.1
+.\" Language: English
+.\"
+.TH "ANSIBLE\-MODULES" "5" "02/26/2012" "Ansible\-playbook 0\&.0\&.1" "System administration commands"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+ansible-playbook \- format and function of an ansible playbook file
+.SH "DESCRIPTION"
+.sp
+Ansible ships with a ansible\-playbook tool for running playbooks\&. Playbooks can represent frequent tasks, desired system configurations, or deployment processes\&.
+.SH "FORMAT"
+.sp
+Playbooks are currently writeable in YAML\&. Other formats (JSON?) may be supported in the future\&.
+.SH "EXAMPLE"
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+pattern:
+\fI*\fR
+hosts:
+\fI/etc/ansible/hosts\fR
+tasks:
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+do:
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+configure template & module variables for future template calls
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+setup http_port=80 max_clients=200
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+do:
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+write the apache config file
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+template src=/srv/mytemplates/httpd\&.j2 dest=/etc/httpd/conf notify:
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+restart apache
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+do
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+ensure apache is running
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+service name=httpd ensure=started handlers:
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+do:
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+restart apache
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.sp -1
+.IP \(bu 2.3
+.\}
+service name=httpd ensure=restarted
+.RE
+.SH "WHAT THE EXAMPLE MEANS"
+.sp
+Here\(cqs what the above example will do\&.
+.sp
+For all hosts in /etc/ansible/hosts (one host per line) that are named \fIwebserver\-anything\fR, first write a JSON file into /etc/ansible/setup on each remote system with the values max_clients and http_port\&.
+.sp
+Next, use a Jinja2 template locally residing at /srv/mytemplates/httpd\&.j2 to write the Apache config file on each host to the path /etc/httpd/conf, using the previous values\&.
+.sp
+Ensure that apache is running if stopped\&.
+.sp
+If and only if the config file changed, note that we need to restart apache at the end of the run, otherwise, don\(cqt bother because we already know it is running\&.
+.SH "HIGH LEVEL EXPLANATION"
+.sp
+Playbooks are executed top down and can contain multiple references to patterns\&. For instance, a playbook could do something to all webservers, then do something to all database servers, then do something different to all webservers again\&.
+.sp
+For each pattern, the tasks in the \fItasks\fR list are executed in order for all hosts in the host file matching the pattern\&.
+.sp
+For each task, a "do" statement describes what the task is and what ansible module to use to accomplish the task, along with any arguments\&. The first line in the "do" is the name of the task \(em this will appear in any log output\&.
+.sp
+The second line in each "do" is the module name followed by module arguments\&.
+.sp
+Most modules accept key=value format arguments\&.
+.sp
+Handlers are like tasks, but are conditionally executed\&. If a module reports a \fIchange\fR, it can choose to notify a handler by name\&. If notified, it will run only for hosts that changed\&.
+.SH "FUTURE BEHAVIOR"
+.sp
+What the playbook run does with a host when an error is detected is currently being refined and is subject to change\&.
+.SH "SEE ALSO"
+.sp
+ansible(1)
+.sp
+ansible\-playbook(1) \- pending
+.sp
+Ansible home page: https://github\&.com/mpdehaan/ansible/