Merge "Add documentation for custom ansible playbooks"
This commit is contained in:
commit
f034ae4741
122
doc/source/custom-ansible-playbooks.rst
Normal file
122
doc/source/custom-ansible-playbooks.rst
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
========================
|
||||||
|
Custom Ansible Playbooks
|
||||||
|
========================
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Kayobe Custom Playbook API
|
||||||
|
==========================
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
* Only variables defined in the kayobe configuration files under ``etc/kayobe``
|
||||||
|
are supported.
|
||||||
|
* The groups defined in ``etc/kayobe/inventory/groups`` are supported.
|
||||||
|
* Any change to a supported variable (rename, schema change, default value
|
||||||
|
change, or removal) or supported group (rename or removal) will follow a
|
||||||
|
deprecation period of one release cycle.
|
||||||
|
* Kayobe's internal roles may not be used.
|
||||||
|
|
||||||
|
Note that these are guidelines, and exceptions may be made where appropriate.
|
||||||
|
|
||||||
|
Running Custom Ansible Playbooks
|
||||||
|
================================
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Packaging Custom Playbooks With Configuration
|
||||||
|
=============================================
|
||||||
|
|
||||||
|
The kayobe project encourages its users to manage configuration for a cloud
|
||||||
|
using version control, based on the `kayobe-config repository
|
||||||
|
<https://github.com/stackhpc/kayobe-config>`_. 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:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
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
|
||||||
|
--------------
|
||||||
|
|
||||||
|
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
|
||||||
|
control host::
|
||||||
|
|
||||||
|
(kayobe) $ kayobe control host bootstrap
|
||||||
|
|
||||||
|
And updated when upgrading the control host::
|
||||||
|
|
||||||
|
(kayobe) $ kayobe control host upgrade
|
||||||
|
|
||||||
|
Example
|
||||||
|
=======
|
||||||
|
|
||||||
|
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
|
@ -35,6 +35,7 @@ Advanced Documentation
|
|||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
control-plane-service-placement
|
control-plane-service-placement
|
||||||
|
custom-ansible-playbooks
|
||||||
|
|
||||||
Developer Documentation
|
Developer Documentation
|
||||||
-----------------------
|
-----------------------
|
||||||
|
2
tox.ini
2
tox.ini
@ -106,7 +106,7 @@ deps =
|
|||||||
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/queens}
|
-c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=stable/queens}
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/doc/requirements.txt
|
-r{toxinidir}/doc/requirements.txt
|
||||||
commands = sphinx-build -b html doc/source doc/build/html
|
commands = sphinx-build -W -b html doc/source doc/build/html
|
||||||
|
|
||||||
[testenv:debug]
|
[testenv:debug]
|
||||||
commands = oslo_debug_helper {posargs}
|
commands = oslo_debug_helper {posargs}
|
||||||
|
Loading…
Reference in New Issue
Block a user