Update makefile, add files for variable blending tests.
This commit is contained in:
parent
1489a13020
commit
1b4ba5431b
14 changed files with 226 additions and 2 deletions
|
@ -3,5 +3,6 @@ all: non_destructive destructive # amazon rackspace
|
||||||
non_destructive:
|
non_destructive:
|
||||||
ansible-playbook non_destructive.yml -i inventory -e @integration_config.yml -v $(TEST_FLAGS)
|
ansible-playbook non_destructive.yml -i inventory -e @integration_config.yml -v $(TEST_FLAGS)
|
||||||
|
|
||||||
non_destructive:
|
destructive:
|
||||||
ansible-playbook destructive.yml -i inventory -e @integration_config.yml -v $(TEST_FLAGS)
|
ansible-playbook destructive.yml -i inventory -e @integration_config.yml -v $(TEST_FLAGS)
|
||||||
|
|
||||||
|
|
9
tests_new/integration/group_vars/all
Normal file
9
tests_new/integration/group_vars/all
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
a: 999
|
||||||
|
b: 998
|
||||||
|
c: 997
|
||||||
|
d: 996
|
||||||
|
uno: 1
|
||||||
|
dos: 2
|
||||||
|
tres: 3
|
||||||
|
etest: 'from group_vars'
|
||||||
|
inventory_beats_default: 'narf'
|
1
tests_new/integration/group_vars/local
Normal file
1
tests_new/integration/group_vars/local
Normal file
|
@ -0,0 +1 @@
|
||||||
|
tres: 'three'
|
1
tests_new/integration/host_vars/all
Normal file
1
tests_new/integration/host_vars/all
Normal file
|
@ -0,0 +1 @@
|
||||||
|
etest: 'from hostvars'
|
5
tests_new/integration/host_vars/testhost
Normal file
5
tests_new/integration/host_vars/testhost
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
a: 1
|
||||||
|
b: 2
|
||||||
|
c: 3
|
||||||
|
d: 4
|
||||||
|
role_var_beats_inventory: 'should_not_see_this'
|
|
@ -20,5 +20,5 @@
|
||||||
- { role: test_git, tags: test_git }
|
- { role: test_git, tags: test_git }
|
||||||
- { role: test_hg, tags: test_hg }
|
- { role: test_hg, tags: test_hg }
|
||||||
- { role: test_changed_when, tags: test_changed_when }
|
- { role: test_changed_when, tags: test_changed_when }
|
||||||
- { role: test_var_blending, tags: test_var_blending }
|
- { role: test_var_blending, parameterized_beats_default: 1234, tags: test_var_blending }
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
etest: "from role defaults"
|
||||||
|
role_var_beats_default: "shouldn't see this"
|
||||||
|
parameterized_beats_default: "shouldn't see this"
|
||||||
|
inventory_beats_default: "shouldn't see this"
|
77
tests_new/integration/roles/test_var_blending/files/foo.txt
Normal file
77
tests_new/integration/roles/test_var_blending/files/foo.txt
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
The value of groups_tree_var = 4000.
|
||||||
|
This comes from host, not the parents or grandparents.
|
||||||
|
|
||||||
|
The value of the grandparent variable grandparent_var is
|
||||||
|
not overridden and is = 2000
|
||||||
|
|
||||||
|
The value of the parent variable is not overriden and
|
||||||
|
is = 6000
|
||||||
|
|
||||||
|
The variable 'overridden_in_parent' is set in the parent
|
||||||
|
and grandparent, so the parent wins. It's value is = 1000.
|
||||||
|
|
||||||
|
The values of 'uno', 'dos', and 'tres' are set in group_vars/all but 'tres' is
|
||||||
|
set to the value of 'three' in group_vars/local, which should override it.
|
||||||
|
|
||||||
|
uno = 1
|
||||||
|
dos = 2
|
||||||
|
tres = three
|
||||||
|
|
||||||
|
The values of 'a', 'b', 'c', and 'd' are set in host_vars/local and should not
|
||||||
|
be clobbered by values that are also set in group_vars.
|
||||||
|
|
||||||
|
a = 1
|
||||||
|
b = 2
|
||||||
|
c = 3
|
||||||
|
d = 4
|
||||||
|
|
||||||
|
The value of 'badwolf' is set via the include_vars plugin.
|
||||||
|
|
||||||
|
badwolf = badwolf
|
||||||
|
|
||||||
|
The value of 'winter' is set via the main.yml in the role.
|
||||||
|
|
||||||
|
winter = coming
|
||||||
|
|
||||||
|
Here's an arbitrary variable set as vars_files in the playbook.
|
||||||
|
|
||||||
|
vars_file_var = 321
|
||||||
|
|
||||||
|
And vars.
|
||||||
|
|
||||||
|
vars = 123
|
||||||
|
|
||||||
|
Variables about other hosts can be looked up via hostvars. This includes
|
||||||
|
facts but here we'll just access a variable defined in the groups.
|
||||||
|
|
||||||
|
999
|
||||||
|
|
||||||
|
Ansible has pretty basic precedence rules for variable overriding. We already have
|
||||||
|
some tests above about group order. Here are a few more.
|
||||||
|
|
||||||
|
* -e variables always win
|
||||||
|
* then comes "most everything else"
|
||||||
|
* then comes variables defined in inventory
|
||||||
|
* then "role defaults", which are the most "defaulty" and lose in priority to everything.
|
||||||
|
|
||||||
|
Given the above rules, here's a test that a -e variable overrides inventory,
|
||||||
|
and also defaults, and role vars.
|
||||||
|
|
||||||
|
etest = from -e
|
||||||
|
|
||||||
|
Now a test to make sure role variables can override inventory variables.
|
||||||
|
|
||||||
|
role_var_beats_inventory = chevron 5 encoded
|
||||||
|
|
||||||
|
Role variables should also beat defaults.
|
||||||
|
|
||||||
|
role_var_beats_default = chevron 6 encoded
|
||||||
|
|
||||||
|
But defaults are lower priority than inventory, so inventory should win.
|
||||||
|
|
||||||
|
inventory_beats_default = narf
|
||||||
|
|
||||||
|
That's the end of the precedence tests for now, but more are welcome.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
dependencies:
|
||||||
|
- prepare_tests
|
||||||
|
|
36
tests_new/integration/roles/test_var_blending/tasks/main.yml
Normal file
36
tests_new/integration/roles/test_var_blending/tasks/main.yml
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
# test code
|
||||||
|
# (c) 2014, Michael DeHaan <michael.dehaan@gmail.com>
|
||||||
|
|
||||||
|
# This file is part of Ansible
|
||||||
|
#
|
||||||
|
# Ansible is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# Ansible is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
- include_vars: more_vars.yml
|
||||||
|
|
||||||
|
- name: deploy a template that will use variables at various levels
|
||||||
|
template: src=foo.j2 dest={{output_dir}}/foo.templated
|
||||||
|
register: template_result
|
||||||
|
|
||||||
|
- name: copy known good into place
|
||||||
|
copy: src=foo.txt dest={{output_dir}}/foo.txt
|
||||||
|
|
||||||
|
- name: compare templated file to known good
|
||||||
|
shell: diff {{output_dir}}/foo.templated {{output_dir}}/foo.txt
|
||||||
|
register: diff_result
|
||||||
|
|
||||||
|
- name: verify templated file matches known good
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- 'diff_result.stdout == ""'
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
The value of groups_tree_var = {{ groups_tree_var }}.
|
||||||
|
This comes from host, not the parents or grandparents.
|
||||||
|
|
||||||
|
The value of the grandparent variable grandparent_var is
|
||||||
|
not overridden and is = {{ grandparent_var }}
|
||||||
|
|
||||||
|
The value of the parent variable is not overriden and
|
||||||
|
is = {{ parent_var }}
|
||||||
|
|
||||||
|
The variable 'overridden_in_parent' is set in the parent
|
||||||
|
and grandparent, so the parent wins. It's value is = {{ overridden_in_parent }}.
|
||||||
|
|
||||||
|
The values of 'uno', 'dos', and 'tres' are set in group_vars/all but 'tres' is
|
||||||
|
set to the value of 'three' in group_vars/local, which should override it.
|
||||||
|
|
||||||
|
uno = {{ uno }}
|
||||||
|
dos = {{ dos }}
|
||||||
|
tres = {{ tres }}
|
||||||
|
|
||||||
|
The values of 'a', 'b', 'c', and 'd' are set in host_vars/local and should not
|
||||||
|
be clobbered by values that are also set in group_vars.
|
||||||
|
|
||||||
|
a = {{ a }}
|
||||||
|
b = {{ b }}
|
||||||
|
c = {{ c }}
|
||||||
|
d = {{ d }}
|
||||||
|
|
||||||
|
The value of 'badwolf' is set via the include_vars plugin.
|
||||||
|
|
||||||
|
badwolf = {{ badwolf }}
|
||||||
|
|
||||||
|
The value of 'winter' is set via the main.yml in the role.
|
||||||
|
|
||||||
|
winter = {{ winter }}
|
||||||
|
|
||||||
|
Here's an arbitrary variable set as vars_files in the playbook.
|
||||||
|
|
||||||
|
vars_file_var = {{ vars_file_var }}
|
||||||
|
|
||||||
|
And vars.
|
||||||
|
|
||||||
|
vars = {{ vars_var }}
|
||||||
|
|
||||||
|
Variables about other hosts can be looked up via hostvars. This includes
|
||||||
|
facts but here we'll just access a variable defined in the groups.
|
||||||
|
|
||||||
|
{{ hostvars['testhost2']['a'] }}
|
||||||
|
|
||||||
|
Ansible has pretty basic precedence rules for variable overriding. We already have
|
||||||
|
some tests above about group order. Here are a few more.
|
||||||
|
|
||||||
|
* -e variables always win
|
||||||
|
* then comes "most everything else"
|
||||||
|
* then comes variables defined in inventory
|
||||||
|
* then "role defaults", which are the most "defaulty" and lose in priority to everything.
|
||||||
|
|
||||||
|
Given the above rules, here's a test that a -e variable overrides inventory,
|
||||||
|
and also defaults, and role vars.
|
||||||
|
|
||||||
|
etest = {{ etest }}
|
||||||
|
|
||||||
|
Now a test to make sure role variables can override inventory variables.
|
||||||
|
|
||||||
|
role_var_beats_inventory = {{ role_var_beats_inventory }}
|
||||||
|
|
||||||
|
Role variables should also beat defaults.
|
||||||
|
|
||||||
|
role_var_beats_default = {{ role_var_beats_default }}
|
||||||
|
|
||||||
|
But defaults are lower priority than inventory, so inventory should win.
|
||||||
|
|
||||||
|
inventory_beats_default = {{ inventory_beats_default }}
|
||||||
|
|
||||||
|
That's the end of the precedence tests for now, but more are welcome.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
winter: coming
|
||||||
|
etest: 'from role vars'
|
||||||
|
role_var_beats_inventory: 'chevron 5 encoded'
|
||||||
|
role_var_beats_default: 'chevron 6 encoded'
|
|
@ -0,0 +1 @@
|
||||||
|
badwolf: badwolf
|
5
tests_new/integration/vars_file.yml
Normal file
5
tests_new/integration/vars_file.yml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# this file is here to support testing vars_files in the blending tests only.
|
||||||
|
# in general define test data in the individual role:
|
||||||
|
# roles/role_name/vars/main.yml
|
||||||
|
|
||||||
|
vars_file_var: 321
|
Loading…
Reference in a new issue