Enabled the use of extra vars in playbook file paths when including playbooks from other playbooks.
This commit is contained in:
parent
c3a8b6ff07
commit
4a732c1e9f
3 changed files with 29 additions and 2 deletions
|
@ -130,7 +130,7 @@ class PlayBook(object):
|
|||
|
||||
self.basedir = os.path.dirname(playbook) or '.'
|
||||
utils.plugins.push_basedir(self.basedir)
|
||||
vars = {}
|
||||
vars = extra_vars.copy()
|
||||
if self.inventory.basedir() is not None:
|
||||
vars['inventory_dir'] = self.inventory.basedir()
|
||||
self.filename = playbook
|
||||
|
|
|
@ -119,7 +119,8 @@ class TestPlaybook(unittest.TestCase):
|
|||
filename = os.path.join(self.stage_dir, filename)
|
||||
return filename
|
||||
|
||||
def _run(self, test_playbook, host_list='test/ansible_hosts'):
|
||||
def _run(self, test_playbook, host_list='test/ansible_hosts',
|
||||
extra_vars=None):
|
||||
''' run a module and get the localhost results '''
|
||||
# This ensures tests are independent of eachother
|
||||
global EVENTS
|
||||
|
@ -135,6 +136,7 @@ class TestPlaybook(unittest.TestCase):
|
|||
timeout = 5,
|
||||
remote_user = self.user,
|
||||
remote_pass = None,
|
||||
extra_vars = extra_vars,
|
||||
stats = ans_callbacks.AggregateStats(),
|
||||
callbacks = self.test_callbacks,
|
||||
runner_callbacks = self.test_callbacks
|
||||
|
@ -216,6 +218,29 @@ class TestPlaybook(unittest.TestCase):
|
|||
|
||||
assert utils.jsonify(expected, format=True) == utils.jsonify(actual,format=True)
|
||||
|
||||
def test_templated_includes(self):
|
||||
pb = os.path.join(self.test_dir, 'playbook-templated-includer.yml')
|
||||
actual = self._run(pb, extra_vars={ 'dir': self.test_dir })
|
||||
|
||||
# if different, this will output to screen
|
||||
print "**ACTUAL**"
|
||||
actual_json = utils.jsonify(actual, format=True)
|
||||
print actual_json
|
||||
expected = {
|
||||
"localhost": {
|
||||
"changed": 0,
|
||||
"failures": 0,
|
||||
"ok": 2,
|
||||
"skipped": 0,
|
||||
"unreachable": 0
|
||||
}
|
||||
}
|
||||
expected_json = utils.jsonify(expected, format=True)
|
||||
print "**EXPECTED**"
|
||||
print expected_json
|
||||
|
||||
assert actual_json == expected_json
|
||||
|
||||
def test_task_includes(self):
|
||||
pb = os.path.join(self.test_dir, 'task-includer.yml')
|
||||
actual = self._run(pb)
|
||||
|
|
2
test/playbook-templated-includer.yml
Normal file
2
test/playbook-templated-includer.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
- include: "{{dir}}/playbook-included.yml variable=foobar"
|
Loading…
Reference in a new issue