Expose the playbook to callback plugins
Spelling, grammar, layout changes, plus more examples and an orchestration chapter
Require a recent enough version of pycrypto and see that playbook and vault ues it.
distutils' requires parameter doesn't work with setuptools.  Use
setuptools' instal_requires instead
Allow vault encrypted vars as extra_vars

Forward the vault_password to the yaml file utility.
authorized_key: Be more specific about manage_dir

- Explain which properties are managed when manage_dir is True.
Respect region_name in nova_compute

Signed-off-by: Oleg Bulatov <oleg@bulatov.me>
Improvements to the rax inventory script
Treat 255 errors from raw as dark host

Any other module is able to detect a dark host, but raw was treating 255
as a return code from the module execution, rather from the connection
attempt. This change allows 255 to be treated as a connection failure
when using the raw module.
Allow you to pass in arbitrary rsync options. I also added help for it, and what version it was added in.
Allow raw and script to support su
Fix the default url of get_xml function.

* This enable a user to configure uri in get_xml function
Example for queueing build in Jenkins
Update uri
ssh: Properly check for wrong su password
ssh: propagate prompt to _communicate()

_communicate() uses the prompt variable to detect wrong passwords early,
therefore it needs to be passed to it from exec_command().
ssh connection plugin: Report missing sudo password

If no password is provided, sudo hangs at the prompt. Identify this and
report that the password is missing as an error.
ssh connection plugin: Make comments more verbose

Explain _communicate() more.
Output URL for debugging
Make `vpc_security_group` docs more accurate

Without the `subnet` parameter supplied there's an error `msg: Parameter vpc_security_groups invalid for create command`. (This might be a bug?)

If the VPC security group name rather than ID is supplied there's an error: `msg: Invalid security group , groupId= <some group name>, groupName=.` (Accepting a group name might be a feature enhancement.)

In my case I set the subnet as `default` and used `register` to get the result of the security group creation section and just referred to its `group_id` property.