ansible_spec 0.2.19 → 0.2.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +48 -5
- data/lib/ansible_spec/load_ansible.rb +31 -7
- data/lib/ansible_spec/version.rb +1 -1
- data/lib/src/Rakefile +1 -1
- data/spec/case/get_variable/inventories_env_group_all/inventories/development/group_vars/all.yml +6 -0
- data/spec/case/get_variable/inventories_env_group_all/inventories/development/hosts +10 -0
- data/spec/case/get_variable/inventories_env_group_all/inventories/production/group_vars/all.yml +6 -0
- data/spec/case/get_variable/inventories_env_group_all/inventories/production/hosts +9 -0
- data/spec/case/get_variable/inventories_env_group_all/inventories/staging/group_vars/all.yml +6 -0
- data/spec/case/get_variable/inventories_env_group_all/inventories/staging/hosts +9 -0
- data/spec/case/get_variable/inventories_env_group_all/roles/test/defaults/main.yml +4 -0
- data/spec/case/get_variable/inventories_env_group_all/site.yml +13 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/development/group_vars/all.yml +6 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/development/group_vars/group1.yml +4 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/development/hosts +10 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/production/group_vars/all.yml +6 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/production/group_vars/group1.yml +4 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/production/hosts +9 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/group_vars/all.yml +6 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/group_vars/group1.yml +4 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/hosts +9 -0
- data/spec/case/get_variable/inventories_env_group_each_vars/site.yml +13 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/development/host_vars/192.168.1.1.yml +3 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/development/host_vars/192.168.1.2.yml +3 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/development/hosts +10 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/production/host_vars/192.168.3.1.yml +3 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/production/host_vars/192.168.3.2.yml +3 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/production/hosts +9 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/staging/host_vars/192.168.2.1.yml +3 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/staging/host_vars/192.168.2.2.yml +3 -0
- data/spec/case/get_variable/inventories_env_host_vars/inventories/staging/hosts +9 -0
- data/spec/case/get_variable/inventories_env_host_vars/site.yml +13 -0
- data/spec/get_variable_vars_dirs_path_spec.rb +321 -0
- data/spec/get_vars_dirs_path_spec.rb +157 -0
- metadata +62 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 739a7ec257b6767370c7919f2cbf8a5a0508f73c
|
4
|
+
data.tar.gz: d391ada2f510a29d259a5d7f6a51585857ffd5cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebe5c892c76fb3a1e30e06be59f3b88a94da0521ac92a64705acd20077a392cb98067b38c9393abc0e1b60ea91547240b160a3521ba96c7bb9208ae5998bc3db
|
7
|
+
data.tar.gz: a9f50b89fbba2ce8553517f3bba0033131b378af1760ec14153cc1069c8848cc2b0314de729833a7a7c1001ef32e468b923436b4b770c5c62f9fb45daf1a4da8
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
# v0.2.20
|
2
|
+
- Merge [#101 Added feature set path to group_vars and host_vars](https://github.com/volanja/ansible_spec/pull/101) by [rbramwell](https://github.com/rbramwell)
|
3
|
+
- Merge [#99 Unbreak 'serverspec:all' if groups with no hosts exist](https://github.com/volanja/ansible_spec/pull/99) by [agx](https://github.com/agx)
|
4
|
+
|
5
|
+
|
1
6
|
# v0.2.19
|
2
7
|
- Merge [#98 delete directory('roles','more_roles') after execute rpsec](https://github.com/volanja/ansible_spec/pull/98) by volanja
|
3
8
|
- Merge [#97 Add local connection test path](https://github.com/volanja/ansible_spec/pull/97) by [mtoriumi](https://github.com/mtoriumi)
|
data/README.md
CHANGED
@@ -48,6 +48,7 @@ customize the playbook and inventory using an `.ansiblespec` file.
|
|
48
48
|
-
|
49
49
|
playbook: site.yml
|
50
50
|
inventory: hosts
|
51
|
+
vars_dirs_path: inventories/staging
|
51
52
|
hash_behaviour: merge
|
52
53
|
```
|
53
54
|
|
@@ -55,9 +56,10 @@ customize the playbook and inventory using an `.ansiblespec` file.
|
|
55
56
|
|
56
57
|
You can use environment variables with the `rake` command. They are listed below.
|
57
58
|
|
58
|
-
- `PLAYBOOK`
|
59
|
-
- `INVENTORY`
|
60
|
-
- `
|
59
|
+
- `PLAYBOOK` -- playbook name (e.g. `site.yml`)
|
60
|
+
- `INVENTORY` -- inventory file name (e.g. `hosts`)
|
61
|
+
- `VARS_DIRS_PATH` -- directory path containing the group_vars and host_vars directories (e.g. `inventories/staging`)
|
62
|
+
- `HASH_BEHAVIOUR` -- hash behaviour when duplicate hash variables (e.g. `merge`)
|
61
63
|
- `SSH_CONFIG_FILE` -- ssh configuration file path (e.g. `ssh_config`)
|
62
64
|
`SSH_CONFIG_FILE` take precedence over the path at ssh_args( -F "filename") in [ssh_connection] section of ansible.cfg
|
63
65
|
|
@@ -73,6 +75,8 @@ $ PLAYBOOK=site.yml rake serverspec:Ansible-Sample-TDD
|
|
73
75
|
or
|
74
76
|
$ INVENTORY=hosts rake serverspec:Ansible-Sample-TDD
|
75
77
|
or
|
78
|
+
$ VARS_DIRS_PATH=inventories/staging rake serverspec:Ansible-Sample-TDD
|
79
|
+
or
|
76
80
|
$ HASH_BEHAVIOUR=merge rake serverspec:Ansible-Sample-TDD
|
77
81
|
```
|
78
82
|
|
@@ -148,7 +152,7 @@ Ansible variables supported by following condition.
|
|
148
152
|
* Playbook's variables are supported. If same variable is defined in different places,
|
149
153
|
priority follows [Ansible order](http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable).
|
150
154
|
* Variables defined main.yml in role's tasks are not supported.
|
151
|
-
*
|
155
|
+
* Inventory variables are not supported.
|
152
156
|
* Facts are not supported.
|
153
157
|
|
154
158
|
### Sample
|
@@ -174,7 +178,46 @@ Support variables are in site.yml, group_vars, host_vars, roles.
|
|
174
178
|
|
175
179
|
```
|
176
180
|
|
177
|
-
|
181
|
+
and (e.g. when `vars_dirs_path: inventories/staging`)
|
182
|
+
|
183
|
+
```
|
184
|
+
├── site.yml
|
185
|
+
├── inventories
|
186
|
+
│ ├── development
|
187
|
+
| | ├── group_vars
|
188
|
+
| | │ ├── all.yml
|
189
|
+
| | │ ├── dbserver.yml
|
190
|
+
| | │ └── webserver.yml
|
191
|
+
| | └── host_vars
|
192
|
+
| | ├── 192.168.1.1.yml
|
193
|
+
| | └── 192.168.1.2.yml
|
194
|
+
│ ├── production
|
195
|
+
| | ├── group_vars
|
196
|
+
| | │ ├── all.yml
|
197
|
+
| | │ ├── dbserver.yml
|
198
|
+
| | │ └── webserver.yml
|
199
|
+
| | └── host_vars
|
200
|
+
| | ├── 192.168.10.1.yml
|
201
|
+
| | └── 192.168.10.2.yml
|
202
|
+
│ └── staging
|
203
|
+
| ├── group_vars
|
204
|
+
| │ ├── all.yml
|
205
|
+
| │ ├── dbserver.yml
|
206
|
+
| │ └── webserver.yml
|
207
|
+
| └── host_vars
|
208
|
+
| ├── 192.168.20.1.yml
|
209
|
+
| └── 192.168.20.2.yml
|
210
|
+
└── roles
|
211
|
+
├── apaches
|
212
|
+
│ └── vars
|
213
|
+
│ └── main.yml
|
214
|
+
└── mariadb
|
215
|
+
└── vars
|
216
|
+
└── main.yml
|
217
|
+
|
218
|
+
```
|
219
|
+
|
220
|
+
**Note:** Parse role dirs from ansible.cfg. This allows us to find specs that are not under ./roles.
|
178
221
|
|
179
222
|
```
|
180
223
|
# ansible.cfg
|
@@ -205,7 +205,7 @@ module AnsibleSpec
|
|
205
205
|
|
206
206
|
if File.exist?(path)
|
207
207
|
dependencies = YAML.load_file(path).fetch("dependencies", [])
|
208
|
-
unless dependencies.nil?
|
208
|
+
unless dependencies.nil?
|
209
209
|
new_deps = dependencies.map { |h|
|
210
210
|
h["role"] || h
|
211
211
|
}
|
@@ -387,8 +387,8 @@ module AnsibleSpec
|
|
387
387
|
hosts["#{v}"].map {|target_server| target_server["hosts"] = v}
|
388
388
|
var["hosts"].concat hosts["#{v}"]
|
389
389
|
end
|
390
|
-
end
|
391
|
-
if var["hosts"].size == 0
|
390
|
+
end
|
391
|
+
if var["hosts"].size == 0
|
392
392
|
properties = properties.compact.reject{|e| e["hosts"].length == 0}
|
393
393
|
#puts "#{var["name"]} roles no hosts matched for #{var["hosts"]}"
|
394
394
|
end
|
@@ -400,6 +400,24 @@ module AnsibleSpec
|
|
400
400
|
return properties
|
401
401
|
end
|
402
402
|
|
403
|
+
# param: none
|
404
|
+
# return: vars_dirs_path
|
405
|
+
def self.get_vars_dirs_path()
|
406
|
+
f = '.ansiblespec'
|
407
|
+
y = nil
|
408
|
+
if File.exist?(f)
|
409
|
+
y = YAML.load_file(f)
|
410
|
+
end
|
411
|
+
if ENV["VARS_DIRS_PATH"]
|
412
|
+
vars_dirs_path = ENV["VARS_DIRS_PATH"]
|
413
|
+
elsif y.is_a?(Array) && y[0]['vars_dirs_path']
|
414
|
+
vars_dirs_path = y[0]['vars_dirs_path']
|
415
|
+
else
|
416
|
+
vars_dirs_path = ''
|
417
|
+
end
|
418
|
+
return vars_dirs_path
|
419
|
+
end
|
420
|
+
|
403
421
|
def self.find_group_vars_file(hosts_childrens, hosts)
|
404
422
|
target_host = hosts_childrens.select { |key, value|
|
405
423
|
value["children"].include?(hosts)
|
@@ -416,16 +434,22 @@ module AnsibleSpec
|
|
416
434
|
vars = load_vars_file(vars ,"roles/#{role}/defaults/main.yml")
|
417
435
|
end
|
418
436
|
|
437
|
+
# get parent directory of group_vars and host_vars directories
|
438
|
+
vars_dirs_path = get_vars_dirs_path
|
439
|
+
if vars_dirs_path != ''
|
440
|
+
vars_dirs_path = "#{vars_dirs_path}/"
|
441
|
+
end
|
442
|
+
|
419
443
|
# all group
|
420
|
-
vars = load_vars_file(vars ,
|
444
|
+
vars = load_vars_file(vars ,"#{vars_dirs_path}group_vars/all", true)
|
421
445
|
|
422
446
|
# each group vars
|
423
447
|
if p[group_idx].has_key?('group')
|
424
|
-
vars = load_vars_file(vars ,"group_vars/#{p[group_idx]['group']}", true)
|
448
|
+
vars = load_vars_file(vars ,"#{vars_dirs_path}group_vars/#{p[group_idx]['group']}", true)
|
425
449
|
end
|
426
450
|
|
427
451
|
# each host vars
|
428
|
-
vars = load_vars_file(vars ,"host_vars/#{host}", true)
|
452
|
+
vars = load_vars_file(vars ,"#{vars_dirs_path}host_vars/#{host}", true)
|
429
453
|
|
430
454
|
# site vars
|
431
455
|
if p[group_idx].has_key?('vars')
|
@@ -442,7 +466,7 @@ module AnsibleSpec
|
|
442
466
|
hosts_childrens = p[group_idx]["hosts_childrens"]
|
443
467
|
next_find_target = hosts
|
444
468
|
while(!next_find_target.nil? && hosts_childrens.size > 0)
|
445
|
-
vars = load_vars_file(vars ,"group_vars/#{next_find_target}", true)
|
469
|
+
vars = load_vars_file(vars ,"#{vars_dirs_path}group_vars/#{next_find_target}", true)
|
446
470
|
group_vars_file = find_group_vars_file(hosts_childrens,next_find_target)
|
447
471
|
next_find_target = group_vars_file
|
448
472
|
hosts_childrens.delete(group_vars_file)
|
data/lib/ansible_spec/version.rb
CHANGED
data/lib/src/Rakefile
CHANGED
@@ -12,8 +12,8 @@ desc "Run serverspec to all test"
|
|
12
12
|
task :all => "serverspec:all"
|
13
13
|
|
14
14
|
namespace :serverspec do
|
15
|
-
task :all => properties.map {|v| 'serverspec:' + v["name"] }
|
16
15
|
properties = properties.compact.reject{|e| e["hosts"].length == 0}
|
16
|
+
task :all => properties.map {|v| 'serverspec:' + v["name"] }
|
17
17
|
properties.each_with_index.map do |property, index|
|
18
18
|
property["hosts"].each do |host|
|
19
19
|
desc "Run serverspec for #{property["name"]}"
|
@@ -0,0 +1,321 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'fileutils'
|
3
|
+
require 'ansible_spec'
|
4
|
+
|
5
|
+
describe "Run get_variables" do
|
6
|
+
context 'Correct operation : env VARS_DIRS_PATH=inventories/staging - all groups' do
|
7
|
+
require 'yaml'
|
8
|
+
tmp_playbook = 'site.yml'
|
9
|
+
tmp_inventory_file = 'inventories/staging/hosts'
|
10
|
+
tmp_vars_dirs_path = 'inventories/staging'
|
11
|
+
|
12
|
+
before do
|
13
|
+
@current_dir = Dir.pwd()
|
14
|
+
Dir.chdir('spec/case/get_variable/inventories_env_group_all/')
|
15
|
+
ENV["PLAYBOOK"] = tmp_playbook
|
16
|
+
ENV["INVENTORY"] = tmp_inventory_file
|
17
|
+
ENV["VARS_DIRS_PATH"] = tmp_vars_dirs_path
|
18
|
+
@res = AnsibleSpec.get_variables('192.168.2.1', 0)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'res is hash' do
|
22
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'exist 5 pair in Hash' do
|
26
|
+
expect(@res.length).to eq 5
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'exist each pair' do
|
30
|
+
expect(@res).to include({'role_var' => 'group all'},
|
31
|
+
{'site_var' => 'group all'},
|
32
|
+
{'host_var' => 'group all'},
|
33
|
+
{'group_var' => 'group all'},
|
34
|
+
{'group_all_var' => 'group all'}
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
after do
|
39
|
+
ENV.delete('PLAYBOOK')
|
40
|
+
ENV.delete('INVENTORY')
|
41
|
+
ENV.delete('VARS_DIRS_PATH')
|
42
|
+
Dir.chdir(@current_dir)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'Correct operation : env VARS_DIRS_PATH=inventories/staging - each group vars' do
|
47
|
+
require 'yaml'
|
48
|
+
tmp_playbook = 'site.yml'
|
49
|
+
tmp_inventory_file = 'inventories/staging/hosts'
|
50
|
+
tmp_vars_dirs_path = 'inventories/staging'
|
51
|
+
|
52
|
+
before do
|
53
|
+
@current_dir = Dir.pwd()
|
54
|
+
Dir.chdir('spec/case/get_variable/inventories_env_group_each_vars/')
|
55
|
+
ENV["PLAYBOOK"] = tmp_playbook
|
56
|
+
ENV["INVENTORY"] = tmp_inventory_file
|
57
|
+
ENV["VARS_DIRS_PATH"] = tmp_vars_dirs_path
|
58
|
+
@res = AnsibleSpec.get_variables('192.168.2.1', 0)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'res is hash' do
|
62
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'exist 5 pair in Hash' do
|
66
|
+
expect(@res.length).to eq 5
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'exist each pair' do
|
70
|
+
expect(@res).to include({'role_var' => 'group1'},
|
71
|
+
{'site_var' => 'group1'},
|
72
|
+
{'host_var' => 'group1'},
|
73
|
+
{'group_var' => 'group1'},
|
74
|
+
{'group_all_var' => 'group all'}
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
after do
|
79
|
+
ENV.delete('PLAYBOOK')
|
80
|
+
ENV.delete('INVENTORY')
|
81
|
+
ENV.delete('VARS_DIRS_PATH')
|
82
|
+
Dir.chdir(@current_dir)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'Correct operation : env VARS_DIRS_PATH=inventories/staging - host_vars' do
|
87
|
+
require 'yaml'
|
88
|
+
tmp_playbook = 'site.yml'
|
89
|
+
tmp_inventory_file = 'inventories/staging/hosts'
|
90
|
+
tmp_vars_dirs_path = 'inventories/staging'
|
91
|
+
|
92
|
+
before do
|
93
|
+
@current_dir = Dir.pwd()
|
94
|
+
Dir.chdir('spec/case/get_variable/inventories_env_host_vars/')
|
95
|
+
ENV["PLAYBOOK"] = tmp_playbook
|
96
|
+
ENV["INVENTORY"] = tmp_inventory_file
|
97
|
+
ENV["VARS_DIRS_PATH"] = tmp_vars_dirs_path
|
98
|
+
@res = AnsibleSpec.get_variables('192.168.2.1', 0)
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'res is hash' do
|
102
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'exist 3 pair in Hash' do
|
106
|
+
expect(@res.length).to eq 3
|
107
|
+
end
|
108
|
+
|
109
|
+
it 'exist each pair' do
|
110
|
+
expect(@res).to include({'role_var' => 'host role_var'}, # in host_var/192.168.2.1.yml
|
111
|
+
{'site_var' => 'host site_var'}, # in host_var/192.168.2.1.yml
|
112
|
+
{'host_var' => 'host 192.168.2.1'} # in host_var/192.168.2.1.yml
|
113
|
+
)
|
114
|
+
end
|
115
|
+
|
116
|
+
after do
|
117
|
+
ENV.delete('PLAYBOOK')
|
118
|
+
ENV.delete('INVENTORY')
|
119
|
+
ENV.delete('VARS_DIRS_PATH')
|
120
|
+
Dir.chdir(@current_dir)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'Correct operation : env VARS_DIRS_PATH=inventories/staging - host_vars' do
|
125
|
+
require 'yaml'
|
126
|
+
tmp_playbook = 'site.yml'
|
127
|
+
tmp_inventory_file = 'inventories/staging/hosts'
|
128
|
+
tmp_vars_dirs_path = 'inventories/staging'
|
129
|
+
|
130
|
+
before do
|
131
|
+
@current_dir = Dir.pwd()
|
132
|
+
Dir.chdir('spec/case/get_variable/inventories_env_host_vars/')
|
133
|
+
ENV["PLAYBOOK"] = tmp_playbook
|
134
|
+
ENV["INVENTORY"] = tmp_inventory_file
|
135
|
+
ENV["VARS_DIRS_PATH"] = tmp_vars_dirs_path
|
136
|
+
@res = AnsibleSpec.get_variables('192.168.2.2', 1)
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'res is hash' do
|
140
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'exist 3 pair in Hash' do
|
144
|
+
expect(@res.length).to eq 3
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'exist each pair' do
|
148
|
+
expect(@res).to include({'role_var' => 'host role_var'}, # in host_var/192.168.2.2.yml
|
149
|
+
{'site_var' => 'host site_var'}, # in host_var/192.168.2.2.yml
|
150
|
+
{'host_var' => 'host 192.168.2.2'} # in host_var/192.168.2.2.yml
|
151
|
+
)
|
152
|
+
end
|
153
|
+
|
154
|
+
after do
|
155
|
+
ENV.delete('PLAYBOOK')
|
156
|
+
ENV.delete('INVENTORY')
|
157
|
+
ENV.delete('VARS_DIRS_PATH')
|
158
|
+
Dir.chdir(@current_dir)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
context 'Correct operation : .ansiblespec "vars_dirs_path: inventories/staging" - all groups' do
|
163
|
+
require 'yaml'
|
164
|
+
tmp_ansiblespec = '.ansiblespec'
|
165
|
+
|
166
|
+
before do
|
167
|
+
@current_dir = Dir.pwd()
|
168
|
+
Dir.chdir('spec/case/get_variable/inventories_env_group_all/')
|
169
|
+
content = <<'EOF'
|
170
|
+
---
|
171
|
+
-
|
172
|
+
playbook: 'site.yml'
|
173
|
+
inventory: 'inventories/staging/hosts'
|
174
|
+
vars_dirs_path: 'inventories/staging'
|
175
|
+
EOF
|
176
|
+
create_file(tmp_ansiblespec,content)
|
177
|
+
@res = AnsibleSpec.get_variables('192.168.2.1', 0)
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'res is hash' do
|
181
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
182
|
+
end
|
183
|
+
|
184
|
+
it 'exist 5 pair in Hash' do
|
185
|
+
expect(@res.length).to eq 5
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'exist each pair' do
|
189
|
+
expect(@res).to include({'role_var' => 'group all'},
|
190
|
+
{'site_var' => 'group all'},
|
191
|
+
{'host_var' => 'group all'},
|
192
|
+
{'group_var' => 'group all'},
|
193
|
+
{'group_all_var' => 'group all'}
|
194
|
+
)
|
195
|
+
end
|
196
|
+
|
197
|
+
after do
|
198
|
+
File.delete(tmp_ansiblespec)
|
199
|
+
Dir.chdir(@current_dir)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context 'Correct operation : .ansiblespec "vars_dirs_path: inventories/staging" - each group vars' do
|
204
|
+
require 'yaml'
|
205
|
+
tmp_ansiblespec = '.ansiblespec'
|
206
|
+
|
207
|
+
before do
|
208
|
+
@current_dir = Dir.pwd()
|
209
|
+
Dir.chdir('spec/case/get_variable/inventories_env_group_each_vars/')
|
210
|
+
content = <<'EOF'
|
211
|
+
---
|
212
|
+
-
|
213
|
+
playbook: 'site.yml'
|
214
|
+
inventory: 'inventories/staging/hosts'
|
215
|
+
vars_dirs_path: 'inventories/staging'
|
216
|
+
EOF
|
217
|
+
create_file(tmp_ansiblespec,content)
|
218
|
+
@res = AnsibleSpec.get_variables('192.168.2.1', 0)
|
219
|
+
end
|
220
|
+
|
221
|
+
it 'res is hash' do
|
222
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
223
|
+
end
|
224
|
+
|
225
|
+
it 'exist 5 pair in Hash' do
|
226
|
+
expect(@res.length).to eq 5
|
227
|
+
end
|
228
|
+
|
229
|
+
it 'exist each pair' do
|
230
|
+
expect(@res).to include({'role_var' => 'group1'},
|
231
|
+
{'site_var' => 'group1'},
|
232
|
+
{'host_var' => 'group1'},
|
233
|
+
{'group_var' => 'group1'},
|
234
|
+
{'group_all_var' => 'group all'}
|
235
|
+
)
|
236
|
+
end
|
237
|
+
|
238
|
+
after do
|
239
|
+
File.delete(tmp_ansiblespec)
|
240
|
+
Dir.chdir(@current_dir)
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
244
|
+
context 'Correct operation : .ansiblespec "vars_dirs_path: inventories/staging" - host_vars' do
|
245
|
+
require 'yaml'
|
246
|
+
tmp_ansiblespec = '.ansiblespec'
|
247
|
+
|
248
|
+
before do
|
249
|
+
@current_dir = Dir.pwd()
|
250
|
+
Dir.chdir('spec/case/get_variable/inventories_env_host_vars/')
|
251
|
+
content = <<'EOF'
|
252
|
+
---
|
253
|
+
-
|
254
|
+
playbook: 'site.yml'
|
255
|
+
inventory: 'inventories/staging/hosts'
|
256
|
+
vars_dirs_path: 'inventories/staging'
|
257
|
+
EOF
|
258
|
+
create_file(tmp_ansiblespec,content)
|
259
|
+
@res = AnsibleSpec.get_variables('192.168.2.1', 0)
|
260
|
+
end
|
261
|
+
|
262
|
+
it 'res is hash' do
|
263
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
264
|
+
end
|
265
|
+
|
266
|
+
it 'exist 3 pair in Hash' do
|
267
|
+
expect(@res.length).to eq 3
|
268
|
+
end
|
269
|
+
|
270
|
+
it 'exist each pair' do
|
271
|
+
expect(@res).to include({'role_var' => 'host role_var'}, # in host_var/192.168.2.1.yml
|
272
|
+
{'site_var' => 'host site_var'}, # in host_var/192.168.2.1.yml
|
273
|
+
{'host_var' => 'host 192.168.2.1'} # in host_var/192.168.2.1.yml
|
274
|
+
)
|
275
|
+
end
|
276
|
+
|
277
|
+
after do
|
278
|
+
File.delete(tmp_ansiblespec)
|
279
|
+
Dir.chdir(@current_dir)
|
280
|
+
end
|
281
|
+
end
|
282
|
+
|
283
|
+
context 'Correct operation : .ansiblespec "vars_dirs_path: inventories/staging" - host_vars' do
|
284
|
+
require 'yaml'
|
285
|
+
tmp_ansiblespec = '.ansiblespec'
|
286
|
+
|
287
|
+
before do
|
288
|
+
@current_dir = Dir.pwd()
|
289
|
+
Dir.chdir('spec/case/get_variable/inventories_env_host_vars/')
|
290
|
+
content = <<'EOF'
|
291
|
+
---
|
292
|
+
-
|
293
|
+
playbook: 'site.yml'
|
294
|
+
inventory: 'inventories/staging/hosts'
|
295
|
+
vars_dirs_path: 'inventories/staging'
|
296
|
+
EOF
|
297
|
+
create_file(tmp_ansiblespec,content)
|
298
|
+
@res = AnsibleSpec.get_variables('192.168.2.2', 1)
|
299
|
+
end
|
300
|
+
|
301
|
+
it 'res is hash' do
|
302
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
303
|
+
end
|
304
|
+
|
305
|
+
it 'exist 3 pair in Hash' do
|
306
|
+
expect(@res.length).to eq 3
|
307
|
+
end
|
308
|
+
|
309
|
+
it 'exist each pair' do
|
310
|
+
expect(@res).to include({'role_var' => 'host role_var'}, # in host_var/192.168.2.2.yml
|
311
|
+
{'site_var' => 'host site_var'}, # in host_var/192.168.2.2.yml
|
312
|
+
{'host_var' => 'host 192.168.2.2'} # in host_var/192.168.2.2.yml
|
313
|
+
)
|
314
|
+
end
|
315
|
+
|
316
|
+
after do
|
317
|
+
File.delete(tmp_ansiblespec)
|
318
|
+
Dir.chdir(@current_dir)
|
319
|
+
end
|
320
|
+
end
|
321
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require 'fileutils'
|
3
|
+
require 'ansible_spec'
|
4
|
+
|
5
|
+
def create_file(name,content)
|
6
|
+
dir = File.dirname(name)
|
7
|
+
unless File.directory?(dir)
|
8
|
+
FileUtils.mkdir_p(dir)
|
9
|
+
end
|
10
|
+
File.open(name, 'w') do |f|
|
11
|
+
f.puts content
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "Run get_vars_dirs_path" do
|
16
|
+
context 'Normal system (environment variable VARS_DIRS_PATH not specified and vars_dirs_path not specified in .ansiblespec)' do
|
17
|
+
require 'yaml'
|
18
|
+
expected_default_vars_dirs_path = ''
|
19
|
+
|
20
|
+
before do
|
21
|
+
@vars_dirs_path = AnsibleSpec.get_vars_dirs_path()
|
22
|
+
end
|
23
|
+
|
24
|
+
it "vars_dirs_path is '#{expected_default_vars_dirs_path}'" do
|
25
|
+
expect(@vars_dirs_path).to eq expected_default_vars_dirs_path
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'Normal system (environment variable VARS_DIRS_PATH specified as current directory and vars_dirs_path not specified in .ansiblespec)' do
|
30
|
+
require 'yaml'
|
31
|
+
tmp_vars_dirs_path = ''
|
32
|
+
|
33
|
+
before do
|
34
|
+
ENV['VARS_DIRS_PATH'] = tmp_vars_dirs_path
|
35
|
+
@vars_dirs_path = AnsibleSpec.get_vars_dirs_path()
|
36
|
+
end
|
37
|
+
|
38
|
+
it "vars_dirs_path is #{tmp_vars_dirs_path}" do
|
39
|
+
expect(@vars_dirs_path).to eq tmp_vars_dirs_path
|
40
|
+
end
|
41
|
+
|
42
|
+
after do
|
43
|
+
ENV.delete('VARS_DIRS_PATH')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'Normal system (environment variable VARS_DIRS_PATH specified relative to playbook base directory and vars_dirs_path not specified in .ansiblespec)' do
|
48
|
+
require 'yaml'
|
49
|
+
tmp_vars_dirs_path = 'inventories/staging'
|
50
|
+
|
51
|
+
before do
|
52
|
+
ENV['VARS_DIRS_PATH'] = tmp_vars_dirs_path
|
53
|
+
@vars_dirs_path = AnsibleSpec.get_vars_dirs_path()
|
54
|
+
end
|
55
|
+
|
56
|
+
it "vars_dirs_path is #{tmp_vars_dirs_path}" do
|
57
|
+
expect(@vars_dirs_path).to eq tmp_vars_dirs_path
|
58
|
+
end
|
59
|
+
|
60
|
+
after do
|
61
|
+
ENV.delete('VARS_DIRS_PATH')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'Normal system (environment variable VARS_DIRS_PATH specified as absolute path and vars_dirs_path not specified in .ansiblespec)' do
|
66
|
+
require 'yaml'
|
67
|
+
tmp_vars_dirs_path = '/etc/ansible/inventories/staging'
|
68
|
+
|
69
|
+
before do
|
70
|
+
ENV['VARS_DIRS_PATH'] = tmp_vars_dirs_path
|
71
|
+
@vars_dirs_path = AnsibleSpec.get_vars_dirs_path()
|
72
|
+
end
|
73
|
+
|
74
|
+
it "vars_dirs_path is #{tmp_vars_dirs_path}" do
|
75
|
+
expect(@vars_dirs_path).to eq tmp_vars_dirs_path
|
76
|
+
end
|
77
|
+
|
78
|
+
after do
|
79
|
+
ENV.delete('VARS_DIRS_PATH')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context 'Normal line (vars_dirs_path specified relative to playbook base directory in .ansiblespec and environment variable VARS_DIRS_PATH not specified)' do
|
84
|
+
require 'yaml'
|
85
|
+
tmp_ansiblespec = '.ansiblespec'
|
86
|
+
tmp_vars_dirs_path = 'inventories/staging'
|
87
|
+
|
88
|
+
before do
|
89
|
+
|
90
|
+
content = <<'EOF'
|
91
|
+
---
|
92
|
+
-
|
93
|
+
vars_dirs_path: 'inventories/staging'
|
94
|
+
EOF
|
95
|
+
create_file(tmp_ansiblespec,content)
|
96
|
+
@vars_dirs_path = AnsibleSpec.get_vars_dirs_path()
|
97
|
+
end
|
98
|
+
|
99
|
+
it "vars_dirs_path is #{tmp_vars_dirs_path}" do
|
100
|
+
expect(@vars_dirs_path).to eq tmp_vars_dirs_path
|
101
|
+
end
|
102
|
+
|
103
|
+
after do
|
104
|
+
File.delete(tmp_ansiblespec)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context 'Normal line (vars_dirs_path specified as absolute path in .ansiblespec and environment variable VARS_DIRS_PATH not specified)' do
|
109
|
+
require 'yaml'
|
110
|
+
tmp_ansiblespec = '.ansiblespec'
|
111
|
+
tmp_vars_dirs_path = '/etc/ansible/inventories/staging'
|
112
|
+
|
113
|
+
before do
|
114
|
+
|
115
|
+
content = <<'EOF'
|
116
|
+
---
|
117
|
+
-
|
118
|
+
vars_dirs_path: '/etc/ansible/inventories/staging'
|
119
|
+
EOF
|
120
|
+
create_file(tmp_ansiblespec,content)
|
121
|
+
@vars_dirs_path = AnsibleSpec.get_vars_dirs_path()
|
122
|
+
end
|
123
|
+
|
124
|
+
it "vars_dirs_path is #{tmp_vars_dirs_path}" do
|
125
|
+
expect(@vars_dirs_path).to eq tmp_vars_dirs_path
|
126
|
+
end
|
127
|
+
|
128
|
+
after do
|
129
|
+
File.delete(tmp_ansiblespec)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
context 'Normal line (ENV VAR higher precedence check: vars_dirs_path specified in .ansiblespec and environment variable VARS_DIRS_PATH specified)' do
|
134
|
+
require 'yaml'
|
135
|
+
tmp_ansiblespec = '.ansiblespec'
|
136
|
+
tmp_vars_dirs_path = 'inventories/staging'
|
137
|
+
|
138
|
+
before do
|
139
|
+
ENV['VARS_DIRS_PATH'] = tmp_vars_dirs_path
|
140
|
+
content = <<'EOF'
|
141
|
+
---
|
142
|
+
-
|
143
|
+
vars_dirs_path: 'inventories/development'
|
144
|
+
EOF
|
145
|
+
create_file(tmp_ansiblespec,content)
|
146
|
+
@vars_dirs_path = AnsibleSpec.get_vars_dirs_path()
|
147
|
+
end
|
148
|
+
|
149
|
+
it "vars_dirs_path is #{tmp_vars_dirs_path}" do
|
150
|
+
expect(@vars_dirs_path).to eq tmp_vars_dirs_path
|
151
|
+
end
|
152
|
+
|
153
|
+
after do
|
154
|
+
File.delete(tmp_ansiblespec)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ansible_spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- volanja
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -258,6 +258,34 @@ files:
|
|
258
258
|
- spec/case/get_variable/host_vars/host_vars/192.168.1.2.yml
|
259
259
|
- spec/case/get_variable/host_vars/hosts
|
260
260
|
- spec/case/get_variable/host_vars/site.yml
|
261
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/development/group_vars/all.yml
|
262
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/development/hosts
|
263
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/production/group_vars/all.yml
|
264
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/production/hosts
|
265
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/staging/group_vars/all.yml
|
266
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/staging/hosts
|
267
|
+
- spec/case/get_variable/inventories_env_group_all/roles/test/defaults/main.yml
|
268
|
+
- spec/case/get_variable/inventories_env_group_all/site.yml
|
269
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/development/group_vars/all.yml
|
270
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/development/group_vars/group1.yml
|
271
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/development/hosts
|
272
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/production/group_vars/all.yml
|
273
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/production/group_vars/group1.yml
|
274
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/production/hosts
|
275
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/group_vars/all.yml
|
276
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/group_vars/group1.yml
|
277
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/hosts
|
278
|
+
- spec/case/get_variable/inventories_env_group_each_vars/site.yml
|
279
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/development/host_vars/192.168.1.1.yml
|
280
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/development/host_vars/192.168.1.2.yml
|
281
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/development/hosts
|
282
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/production/host_vars/192.168.3.1.yml
|
283
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/production/host_vars/192.168.3.2.yml
|
284
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/production/hosts
|
285
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/staging/host_vars/192.168.2.1.yml
|
286
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/staging/host_vars/192.168.2.2.yml
|
287
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/staging/hosts
|
288
|
+
- spec/case/get_variable/inventories_env_host_vars/site.yml
|
261
289
|
- spec/case/get_variable/playbook_only/hosts
|
262
290
|
- spec/case/get_variable/playbook_only/site.yml
|
263
291
|
- spec/case/get_variable/roles_default/hosts
|
@@ -277,6 +305,8 @@ files:
|
|
277
305
|
- spec/ec2_dynamic_inventory_spec.rb
|
278
306
|
- spec/get_variable_hosts_childrens_spec.rb
|
279
307
|
- spec/get_variable_spec.rb
|
308
|
+
- spec/get_variable_vars_dirs_path_spec.rb
|
309
|
+
- spec/get_vars_dirs_path_spec.rb
|
280
310
|
- spec/inventory_parameters_spec.rb
|
281
311
|
- spec/load_ansible_cfg_spec.rb
|
282
312
|
- spec/load_ansible_cfg_ssh_spec.rb
|
@@ -403,6 +433,34 @@ test_files:
|
|
403
433
|
- spec/case/get_variable/host_vars/host_vars/192.168.1.2.yml
|
404
434
|
- spec/case/get_variable/host_vars/hosts
|
405
435
|
- spec/case/get_variable/host_vars/site.yml
|
436
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/development/group_vars/all.yml
|
437
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/development/hosts
|
438
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/production/group_vars/all.yml
|
439
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/production/hosts
|
440
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/staging/group_vars/all.yml
|
441
|
+
- spec/case/get_variable/inventories_env_group_all/inventories/staging/hosts
|
442
|
+
- spec/case/get_variable/inventories_env_group_all/roles/test/defaults/main.yml
|
443
|
+
- spec/case/get_variable/inventories_env_group_all/site.yml
|
444
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/development/group_vars/all.yml
|
445
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/development/group_vars/group1.yml
|
446
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/development/hosts
|
447
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/production/group_vars/all.yml
|
448
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/production/group_vars/group1.yml
|
449
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/production/hosts
|
450
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/group_vars/all.yml
|
451
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/group_vars/group1.yml
|
452
|
+
- spec/case/get_variable/inventories_env_group_each_vars/inventories/staging/hosts
|
453
|
+
- spec/case/get_variable/inventories_env_group_each_vars/site.yml
|
454
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/development/host_vars/192.168.1.1.yml
|
455
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/development/host_vars/192.168.1.2.yml
|
456
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/development/hosts
|
457
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/production/host_vars/192.168.3.1.yml
|
458
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/production/host_vars/192.168.3.2.yml
|
459
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/production/hosts
|
460
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/staging/host_vars/192.168.2.1.yml
|
461
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/staging/host_vars/192.168.2.2.yml
|
462
|
+
- spec/case/get_variable/inventories_env_host_vars/inventories/staging/hosts
|
463
|
+
- spec/case/get_variable/inventories_env_host_vars/site.yml
|
406
464
|
- spec/case/get_variable/playbook_only/hosts
|
407
465
|
- spec/case/get_variable/playbook_only/site.yml
|
408
466
|
- spec/case/get_variable/roles_default/hosts
|
@@ -422,6 +480,8 @@ test_files:
|
|
422
480
|
- spec/ec2_dynamic_inventory_spec.rb
|
423
481
|
- spec/get_variable_hosts_childrens_spec.rb
|
424
482
|
- spec/get_variable_spec.rb
|
483
|
+
- spec/get_variable_vars_dirs_path_spec.rb
|
484
|
+
- spec/get_vars_dirs_path_spec.rb
|
425
485
|
- spec/inventory_parameters_spec.rb
|
426
486
|
- spec/load_ansible_cfg_spec.rb
|
427
487
|
- spec/load_ansible_cfg_ssh_spec.rb
|