Merge "Deploy var_files before playing ansible playbooks"
This commit is contained in:
commit
5e7c6baf3e
|
@ -76,24 +76,30 @@ class AnsiblePlaybook(tobiko.SharedFixture):
|
||||||
return None
|
return None
|
||||||
return self._ensure_work_file(inventory_filename, 'inventory')
|
return self._ensure_work_file(inventory_filename, 'inventory')
|
||||||
|
|
||||||
def _ensure_playbook_filename(self,
|
|
||||||
playbook: str = None,
|
|
||||||
playbook_dirname: str = None,
|
|
||||||
playbook_filename: str = None) \
|
|
||||||
-> typing.Optional[str]:
|
|
||||||
if playbook_filename is None:
|
|
||||||
playbook_filename = self._get_playbook_filename(
|
|
||||||
playbook=playbook, playbook_dirname=playbook_dirname)
|
|
||||||
return self._ensure_work_file(playbook_filename)
|
|
||||||
|
|
||||||
def _get_playbook_filename(self,
|
def _get_playbook_filename(self,
|
||||||
playbook: str = None,
|
basename: str = None,
|
||||||
playbook_dirname: str = None) -> str:
|
dirname: str = None) -> str:
|
||||||
if playbook is None:
|
if basename is None:
|
||||||
playbook = self._playbook
|
basename = self._playbook
|
||||||
if playbook_dirname is None:
|
if dirname is None:
|
||||||
playbook_dirname = self.playbook_dirname
|
dirname = self.playbook_dirname
|
||||||
return os.path.join(playbook_dirname, playbook + '.yaml')
|
return os.path.join(dirname, basename)
|
||||||
|
|
||||||
|
def _ensure_vars_files(self,
|
||||||
|
vars_files: typing.Iterable[str],
|
||||||
|
sub_dir: str = None,
|
||||||
|
dirname: str = None) -> typing.List[str]:
|
||||||
|
work_filenames = []
|
||||||
|
for vars_file in vars_files:
|
||||||
|
filename = self._get_playbook_filename(basename=vars_file,
|
||||||
|
dirname=dirname)
|
||||||
|
if sub_dir is None and dirname is not None:
|
||||||
|
sub_dir = os.path.relpath(os.path.dirname(filename), dirname)
|
||||||
|
|
||||||
|
work_filename = self._ensure_work_file(filename=filename,
|
||||||
|
sub_dir=sub_dir)
|
||||||
|
work_filenames.append(work_filename)
|
||||||
|
return work_filenames
|
||||||
|
|
||||||
def _ensure_work_file(self, filename: str, sub_dir: str = None) -> str:
|
def _ensure_work_file(self, filename: str, sub_dir: str = None) -> str:
|
||||||
filename = os.path.realpath(filename)
|
filename = os.path.realpath(filename)
|
||||||
|
@ -123,7 +129,8 @@ class AnsiblePlaybook(tobiko.SharedFixture):
|
||||||
playbook: str = None,
|
playbook: str = None,
|
||||||
playbook_dirname: str = None,
|
playbook_dirname: str = None,
|
||||||
playbook_filename: str = None,
|
playbook_filename: str = None,
|
||||||
inventory_filename: str = None) -> \
|
inventory_filename: str = None,
|
||||||
|
vars_files: typing.Iterable[str] = None) -> \
|
||||||
sh.ShellCommand:
|
sh.ShellCommand:
|
||||||
# ensure command
|
# ensure command
|
||||||
if command is None:
|
if command is None:
|
||||||
|
@ -137,11 +144,15 @@ class AnsiblePlaybook(tobiko.SharedFixture):
|
||||||
command += ['-i', work_inventory_filename]
|
command += ['-i', work_inventory_filename]
|
||||||
|
|
||||||
# ensure playbook file
|
# ensure playbook file
|
||||||
command += [self._ensure_playbook_filename(
|
if playbook_filename is None:
|
||||||
playbook=playbook,
|
playbook_filename = self._get_playbook_filename(
|
||||||
playbook_dirname=playbook_dirname,
|
basename=playbook, dirname=playbook_dirname)
|
||||||
playbook_filename=playbook_filename)]
|
playbook_dirname = os.path.dirname(playbook_filename)
|
||||||
|
command += [self._ensure_work_file(playbook_filename)]
|
||||||
|
|
||||||
|
if vars_files is not None:
|
||||||
|
self._ensure_vars_files(vars_files=vars_files,
|
||||||
|
dirname=playbook_dirname)
|
||||||
return command
|
return command
|
||||||
|
|
||||||
def run_playbook(self,
|
def run_playbook(self,
|
||||||
|
@ -149,13 +160,15 @@ class AnsiblePlaybook(tobiko.SharedFixture):
|
||||||
playbook: str = None,
|
playbook: str = None,
|
||||||
playbook_dirname: str = None,
|
playbook_dirname: str = None,
|
||||||
playbook_filename: str = None,
|
playbook_filename: str = None,
|
||||||
inventory_filename: str = None):
|
inventory_filename: str = None,
|
||||||
|
vars_files: typing.Iterable[str] = None):
|
||||||
tobiko.setup_fixture(self)
|
tobiko.setup_fixture(self)
|
||||||
command = self._get_command(command=command,
|
command = self._get_command(command=command,
|
||||||
playbook=playbook,
|
playbook=playbook,
|
||||||
playbook_dirname=playbook_dirname,
|
playbook_dirname=playbook_dirname,
|
||||||
playbook_filename=playbook_filename,
|
playbook_filename=playbook_filename,
|
||||||
inventory_filename=inventory_filename)
|
inventory_filename=inventory_filename,
|
||||||
|
vars_files=vars_files)
|
||||||
return self.sh_connection.execute(command, current_dir=self.work_dir)
|
return self.sh_connection.execute(command, current_dir=self.work_dir)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- hosts: localhost
|
||||||
|
vars_files: vars/some-vars.yaml
|
||||||
|
tasks:
|
||||||
|
- debug: var=var1
|
||||||
|
- debug: var=var2
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
- var1: value1
|
||||||
|
var2: value2
|
|
@ -29,5 +29,11 @@ class OpenShiftTest(testtools.TestCase):
|
||||||
@tripleo.skip_if_missing_tripleo_ansible_inventory
|
@tripleo.skip_if_missing_tripleo_ansible_inventory
|
||||||
def test_ping_all_hosts(self):
|
def test_ping_all_hosts(self):
|
||||||
tripleo.run_playbook_from_undercloud(
|
tripleo.run_playbook_from_undercloud(
|
||||||
playbook='ping-shiftstack',
|
playbook='ping-shiftstack.yaml',
|
||||||
playbook_dirname=PLAYBOOK_DIRNAME)
|
playbook_dirname=PLAYBOOK_DIRNAME)
|
||||||
|
|
||||||
|
def test_debug_vars(self):
|
||||||
|
tripleo.run_playbook_from_undercloud(
|
||||||
|
playbook='debug-vars.yaml',
|
||||||
|
playbook_dirname=PLAYBOOK_DIRNAME,
|
||||||
|
vars_files=['vars/some-vars.yaml'])
|
||||||
|
|
|
@ -15,6 +15,7 @@ from __future__ import absolute_import
|
||||||
|
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
|
import typing
|
||||||
|
|
||||||
import tobiko
|
import tobiko
|
||||||
from tobiko.shell import ansible
|
from tobiko.shell import ansible
|
||||||
|
@ -104,13 +105,15 @@ def run_playbook_from_undercloud(command: sh.ShellCommand = None,
|
||||||
playbook: str = None,
|
playbook: str = None,
|
||||||
playbook_dirname: str = None,
|
playbook_dirname: str = None,
|
||||||
playbook_filename: str = None,
|
playbook_filename: str = None,
|
||||||
inventory_filename: str = None):
|
inventory_filename: str = None,
|
||||||
|
vars_files: typing.Iterable[str] = None):
|
||||||
return undercloud_ansible_playbook().run_playbook(
|
return undercloud_ansible_playbook().run_playbook(
|
||||||
command=command,
|
command=command,
|
||||||
playbook=playbook,
|
playbook=playbook,
|
||||||
playbook_dirname=playbook_dirname,
|
playbook_dirname=playbook_dirname,
|
||||||
playbook_filename=playbook_filename,
|
playbook_filename=playbook_filename,
|
||||||
inventory_filename=inventory_filename)
|
inventory_filename=inventory_filename,
|
||||||
|
vars_files=vars_files)
|
||||||
|
|
||||||
|
|
||||||
def setup_undercloud_ansible_plabook():
|
def setup_undercloud_ansible_plabook():
|
||||||
|
|
Loading…
Reference in New Issue