Support --kolla-playbook argument

Adds support for specifying a custom playbook when running Kolla Ansible
commands via a '--kolla-playbook' argument.

Change-Id: Ie4bba0f1bdc82657572e0f06a71db1140c0bd3a4
This commit is contained in:
Mark Goddard 2022-06-24 12:20:41 +01:00
parent 0c9912ece1
commit 79a8610030
3 changed files with 27 additions and 0 deletions

View File

@ -56,6 +56,8 @@ def add_args(parser):
parser.add_argument("-kl", "--kolla-limit", metavar="SUBSET",
help="further limit selected hosts to an additional "
"pattern")
parser.add_argument("-kp", "--kolla-playbook", metavar="PLAYBOOK",
help="path to Ansible playbook file")
parser.add_argument("--kolla-skip-tags", metavar="TAGS",
help="only run plays and tasks whose tags do not "
"match these values in Kolla Ansible")
@ -104,6 +106,13 @@ def _validate_args(parsed_args, inventory_filename):
parsed_args.kolla_venv, result["message"])
sys.exit(1)
if parsed_args.kolla_playbook:
result = utils.is_readable_file(parsed_args.kolla_playbook)
if not result["result"]:
LOG.error("Kolla Ansible playbook %s is invalid: %s",
parsed_args.kolla_playbook, result["message"])
sys.exit(1)
def build_args(parsed_args, command, inventory_filename, extra_vars=None,
tags=None, verbose_level=None, extra_args=None, limit=None):
@ -113,6 +122,8 @@ def build_args(parsed_args, command, inventory_filename, extra_vars=None,
cmd += ["kolla-ansible", command]
if verbose_level:
cmd += ["-" + "v" * verbose_level]
if parsed_args.kolla_playbook:
cmd += ["--playbook", parsed_args.kolla_playbook]
cmd += vault.build_args(parsed_args, "--key")
inventory = _get_inventory_path(parsed_args, inventory_filename)
cmd += ["--inventory", inventory]

View File

@ -61,12 +61,14 @@ class TestCase(unittest.TestCase):
"-ki", "/path/to/inventory",
"-kl", "host1:host2",
"-kt", "tag1,tag2",
"-kp", "/path/to/playbook",
]
parsed_args = parser.parse_args(args)
kolla_ansible.run(parsed_args, "command", "overcloud")
expected_cmd = [
".", "/path/to/cwd/venvs/kolla-ansible/bin/activate", "&&",
"kolla-ansible", "command",
"--playbook", "/path/to/playbook",
"--inventory", "/path/to/inventory",
"--configdir", "/path/to/config",
"--passwords", "/path/to/config/passwords.yml",
@ -98,6 +100,7 @@ class TestCase(unittest.TestCase):
"--kolla-limit", "host1:host2",
"--kolla-skip-tags", "tag3,tag4",
"--kolla-tags", "tag1,tag2",
"--kolla-playbook", "/path/to/playbook",
]
parsed_args = parser.parse_args(args)
mock_run.return_value = "/path/to/kayobe-vault-password-helper"
@ -105,6 +108,7 @@ class TestCase(unittest.TestCase):
expected_cmd = [
".", "/path/to/cwd/venvs/kolla-ansible/bin/activate", "&&",
"kolla-ansible", "command",
"--playbook", "/path/to/playbook",
"--key", "/path/to/kayobe-vault-password-helper",
"--inventory", "/path/to/inventory",
"--configdir", "/path/to/config",

View File

@ -0,0 +1,12 @@
---
features:
- |
Adds support for specifying a custom playbook when running Kolla Ansible
commands via a ``--kolla-playbook`` argument. For example:
.. code-block:: console
kayobe overcloud service deploy --kolla-playbook /path/to/playbook.yml
This may be used to specify a playbook that replaces or extends the default
``site.yml`` playbook, and needs to execute in the Kolla Ansible context.