Kayobe supports running custom Ansible playbooks located outside of the kayobe project. This provides a flexible mechanism for customising a control plane. Access to the kayobe variables is possible, ensuring configuration does not need to be repeated.
Explicitly allowing users to run custom playbooks with access to the kayobe variables elevates the variable namespace and inventory to become an interface. This raises questions about the stability of this interface, and the guarantees it provides.
The following guidelines apply to the custom playbook API:
etc/kayobe
are supported.etc/kayobe/inventory/groups
are supported.Note that these are guidelines, and exceptions may be made where appropriate.
Run one or more custom ansible playbooks:
(kayobe) $ kayobe playbook run <playbook>[, <playbook>...]
Playbooks do not by default have access to the Kayobe playbook group variables, filter plugins, and test plugins, since these are relative to the current playbook’s directory. This can be worked around by creating symbolic links to the Kayobe repository from the Kayobe configuration.
The kayobe project encourages its users to manage configuration for a cloud using version control, based on the kayobe-config repository. Storing custom Ansible playbooks in this repository makes a lot of sense, and kayobe has special support for this.
It is recommended to store custom playbooks in
$KAYOBE_CONFIG_PATH/ansible/
. Roles located in
$KAYOBE_CONFIG_PATH/ansible/roles/
will be automatically available to
playbooks in this directory.
With this directory layout, the following commands could be used to create symlinks that allow access to Kayobe’s filter plugins, group variables and test plugins:
cd ${KAYOBE_CONFIG_PATH}/ansible/
ln -s ../../../../kayobe/ansible/filter_plugins/ filter_plugins
ln -s ../../../../kayobe/ansible/group_vars/ group_vars
ln -s ../../../../kayobe/ansible/test_plugins/ test_plugins
These symlinks can even be committed to the kayobe-config Git repository.
Ansible Galaxy provides a means for sharing Ansible roles. Kayobe configuration may provide a Galaxy requirements file that defines roles to be installed from Galaxy. These roles may then be used by custom playbooks.
Galaxy role dependencies may be defined in
$KAYOBE_CONFIG_PATH/ansible/requirements.yml
. These roles will be
installed in $KAYOBE_CONFIG_PATH/ansible/roles/
when bootstrapping the
Ansible control host:
(kayobe) $ kayobe control host bootstrap
And updated when upgrading the Ansible control host:
(kayobe) $ kayobe control host upgrade
The following example adds a foo.yml
playbook to a set of kayobe
configuration. The playbook uses a Galaxy role, bar.baz
.
Here is the kayobe configuration repository structure:
etc/kayobe/
ansible/
foo.yml
requirements.yml
roles/
bifrost.yml
...
Here is the playbook, ansible/foo.yml
:
---
- hosts: controllers
roles:
- name: bar.baz
Here is the Galaxy requirements file, ansible/requirements.yml
:
---
- bar.baz
We should first install the Galaxy role dependencies, to download the
bar.baz
role:
(kayobe) $ kayobe control host bootstrap
Then, to run the foo.yml
playbook:
(kayobe) $ kayobe playbook run $KAYOBE_CONFIG_PATH/ansible/foo.yml
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.