summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/include_vars/tasks/main.yml
blob: db15ba3c5db294ba6752fa32dc81cbcad30f9468 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
---
- name: verify that the default value is indeed 1
  assert:
    that:
      - "testing == 1"
      - "base_dir == 'defaults'"

- name: include the vars/environments/development/all.yml
  include_vars:
    file: environments/development/all.yml
  register: included_one_file

- name: verify that the correct file has been loaded and default value is indeed 789
  assert:
    that:
      - "testing == 789"
      - "base_dir == 'environments/development'"
      - "{{ included_one_file.ansible_included_var_files | length }} == 1"
      - "'vars/environments/development/all.yml' in included_one_file.ansible_included_var_files[0]"

- name: include the vars/environments/development/all.yml and save results in all
  include_vars:
    file: environments/development/all.yml
    name: all

- name: verify that the values are stored in the all variable
  assert:
    that:
      - "all['testing'] == 789"
      - "all['base_dir'] == 'environments/development'"

- name: include the all directory in vars
  include_vars:
    dir: all
    depth: 1

- name: verify that the default value is indeed 123
  assert:
    that:
      - "testing == 123"
      - "base_dir == 'all'"

- name: include var files with extension only
  include_vars:
    dir: webapp
    ignore_unknown_extensions: True
    extensions: ['', 'yaml', 'yml', 'json']
  register: include_without_file_extension

- name: verify that only files with valid extensions are loaded
  assert:
    that:
      - webapp_version is defined
      - "'file_without_extension' in '{{ include_without_file_extension.ansible_included_var_files | join(' ') }}'"

- name: include every directory in vars
  include_vars:
    dir: vars
    extensions: ['', 'yaml', 'yml', 'json']
    ignore_files:
      - no_auto_unsafe.yml
  register: include_every_dir

- name: verify that the correct files have been loaded and overwrite based on alphabetical order
  assert:
    that:
      - "testing == 456"
      - "base_dir == 'services'"
      - "webapp_containers == 10"
      - "{{ include_every_dir.ansible_included_var_files | length }} == 7"
      - "'vars/all/all.yml' in include_every_dir.ansible_included_var_files[0]"
      - "'vars/environments/development/all.yml' in include_every_dir.ansible_included_var_files[1]"
      - "'vars/environments/development/services/webapp.yml' in include_every_dir.ansible_included_var_files[2]"
      - "'vars/services/webapp.yml' in include_every_dir.ansible_included_var_files[5]"
      - "'vars/webapp/file_without_extension' in include_every_dir.ansible_included_var_files[6]"

- name: include every directory in vars except files matching webapp.yml
  include_vars:
    dir: vars
    ignore_files:
      - webapp.yml
      - file_without_extension
      - no_auto_unsafe.yml
  register: include_without_webapp

- name: verify that the webapp.yml file was not included
  assert:
    that:
      - "testing == 789"
      - "base_dir == 'environments/development'"
      - "{{ include_without_webapp.ansible_included_var_files | length }} == 4"
      - "'webapp.yml' not in '{{ include_without_webapp.ansible_included_var_files | join(' ') }}'"
      - "'file_without_extension' not in '{{ include_without_webapp.ansible_included_var_files | join(' ') }}'"

- name: include only files matching webapp.yml
  include_vars:
    dir: environments
    files_matching: webapp.yml
  register: include_match_webapp

- name: verify that only files matching webapp.yml and in the environments directory get loaded.
  assert:
    that:
      - "testing == 101112"
      - "base_dir == 'development/services'"
      - "webapp_containers == 20"
      - "{{ include_match_webapp.ansible_included_var_files | length }} == 1"
      - "'vars/environments/development/services/webapp.yml' in include_match_webapp.ansible_included_var_files[0]"
      - "'all.yml' not in '{{ include_match_webapp.ansible_included_var_files | join(' ') }}'"

- name: include only files matching webapp.yml and store results in webapp
  include_vars:
    dir: environments
    files_matching: webapp.yml
    name: webapp

- name: verify that only files matching webapp.yml and in the environments directory get loaded into stored variable webapp.
  assert:
    that:
      - "webapp['testing'] == 101112"
      - "webapp['base_dir'] == 'development/services'"
      - "webapp['webapp_containers'] == 20"

- name: include var files without extension
  include_vars:
    dir: webapp
    ignore_unknown_extensions: False
  register: include_with_unknown_file_extension
  ignore_errors: True

- name: verify that files without valid extensions are loaded
  assert:
    that:
      - "'a valid extension' in include_with_unknown_file_extension.message"

- name: include var with raw params
  include_vars: >
    services/service_vars.yml

- name: Verify that files with raw params is include without new line character
  assert:
    that:
      - "service_name ==  'my_custom_service'"

- name: Check NoneType for raw params and file
  include_vars:
    file: "{{ lookup('first_found', possible_files, errors='ignore') }}"
  vars:
    possible_files:
    - "does_not_exist.yml"
  ignore_errors: True
  register: include_with_non_existent_file

- name: Verify that file and raw_params provide correct error message to user
  assert:
    that:
      - "'Could not find file' in include_with_non_existent_file.message"

- name: include var (FQCN) with raw params
  ansible.builtin.include_vars: >
    services/service_vars_fqcn.yml

- name: Verify that FQCN of include_vars works
  assert:
    that:
      - "'my_custom_service' == service_name_fqcn"
      - "'my_custom_service' == service_name_tmpl_fqcn"

- name: Include a vars file with a hash variable
  include_vars:
    file: vars2/hashes/hash1.yml

- name: Verify the hash variable
  assert:
    that:
      - "{{ config | length }} == 3"
      - "config.key0 == 0"
      - "config.key1 == 0"
      - "{{ config.key2 | length }} == 1"
      - "config.key2.a == 21"

- name: Include the second file to merge the hash variable
  include_vars:
    file: vars2/hashes/hash2.yml
    hash_behaviour: merge

- name: Verify that the hash is merged
  assert:
    that:
      - "{{ config | length }} == 4"
      - "config.key0 == 0"
      - "config.key1 == 1"
      - "{{ config.key2 | length }} == 2"
      - "config.key2.a == 21"
      - "config.key2.b == 22"
      - "config.key3 == 3"

- name: Include the second file again without hash_behaviour option
  include_vars:
    file: vars2/hashes/hash2.yml

- name: Verify that the properties from the first file is cleared
  assert:
    that:
      - "{{ config | length }} == 3"
      - "config.key1 == 1"
      - "{{ config.key2 | length }} == 1"
      - "config.key2.b == 22"
      - "config.key3 == 3"

- include_vars:
    file: no_auto_unsafe.yml
  register: baz

- assert:
    that:
      - baz.ansible_facts.foo|type_debug != "AnsibleUnsafeText"