Not Logged In

ploy_ansible 1.1.0

Overview

The ploy_ansible plugin provides integration of Ansible with ploy.
It automatically builds an inventory and provides a custom connection plugin.

Installation

ploy_ansible is best installed with easy_install, pip or with zc.recipe.egg in a buildout.

Commands

The plugin adds the following commands to ploy.

configure

Configures an instance.
There are three ways to specify how to configure an instance.
Applying the roles given by the roles option of an instance, a playbook set by the playbook option or a playbook with the unique name of the instance found in the playbooks-directory.
Using roles or a playbook is mutually exclusive.
If you specify a playbook and there is also a playbook in the default location, you will get a warning.

ansible

Runs an Ansible command.
This basically reflects the ansible script of Ansible.

playbook

Applies a playbook.
This basically reflects the ansible-playbook script of Ansible.

Options

Global

The playbooks-directory option of the ansible section allows you to specify the directory where playbooks, roles, host_vars etc are looked up.
If you specify a relative path, then it’s always relative to the ploy.conf directory.
If you have a structure like this:

By default it is set to the parent directory of the directory the ploy.conf is located at like this:

project
|-- roles
|-- host_vars
|-- etc
|-- ploy.conf

Per instance

roles

Used by the configure command.
This allows you to configure an instance by applying the whitespace separated roles.
This is like creating a playbook which only specifies a host and a list of roles names.

playbook

Allows you to explicitly specify a playbook to use for this instance.

Any option starting with ansible_ is passed through to Ansible as is. This can be used for settings like ansible_python_interpreter.

Any option starting with ansible- is stripped of the ansible- prefix and then passed through to Ansible.
This is the main way to set Ansible variables for use in playbooks and roles.

All other options are prefixed with ploy_ and made available to Ansible.

Ansible inventory

All instances in ploy.conf are available to Ansible via their unique id.

The variables for each instance are gathered from group_vars, host_vars and the ploy.conf.

API usage

On the Python side, each ploy instance gains the following methods:

apply_playbook(self, playbook, *args, **kwargs)

Applies the playbook to the instance.

has_playbook

Return True if the instance has either of the roles or a playbook option set.

get_playbook(*args, **kwargs)

Returns an instance of the Ansible internal PlayBook class.
This is either from a file (from playbook option or the playbook kwarg), or dynamically generated from the roles option.

configure(*args, **kwargs)

Configures the instance with the same semantics as the configure command.

get_ansible_variables

Returns the Ansible variables from the inventory.
This does not include facts, as it doesn’t connect to the instance.
This is particularly useful in Fabric scripts.

Changelog

1.1.0 - 2014-08-13

Test and fixes for changes in ansible 1.7.
[fschulze]

Add verbosity argument to configure command.
[fschulze]

1.0.0 - 2014-07-19

Added documentation.
[fschulze]

1.0b8 - 2014-07-15

Add ansible as dependency if it can’t be imported already.
[fschulze]

1.0b7 - 2014-07-08

Packaging and test fixes.
[fschulze]

1.0b6 - 2014-07-04

Use unique instance id to avoid issues.
[fschulze]

Renamed mr.awsome to ploy and mr.awsome.ansible to ploy_ansible.
[fschulze]

1.0b5 - 2014-06-16

Set user in playbook to the one from the config if it’s not set already.
[fschulze]