ansible_spec 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +53 -0
  4. data/lib/ansible_spec/load_ansible.rb +69 -0
  5. data/lib/ansible_spec/version.rb +1 -1
  6. data/lib/src/Rakefile +2 -1
  7. data/lib/src/spec/spec_helper.rb +10 -0
  8. data/spec/case/get_variable/group_all/group_vars/all.yml +6 -0
  9. data/spec/case/get_variable/group_all/hosts +10 -0
  10. data/spec/case/get_variable/group_all/roles/test/defaults/main.yml +4 -0
  11. data/spec/case/get_variable/group_all/site.yml +13 -0
  12. data/spec/case/get_variable/group_each_vars/group_vars/all.yml +6 -0
  13. data/spec/case/get_variable/group_each_vars/group_vars/group1.yml +4 -0
  14. data/spec/case/get_variable/group_each_vars/hosts +10 -0
  15. data/spec/case/get_variable/group_each_vars/site.yml +13 -0
  16. data/spec/case/get_variable/group_host_playbook/group_vars/all.yml +6 -0
  17. data/spec/case/get_variable/group_host_playbook/group_vars/group1.yml +4 -0
  18. data/spec/case/get_variable/group_host_playbook/host_vars/192.168.1.1.yml +3 -0
  19. data/spec/case/get_variable/group_host_playbook/host_vars/192.168.1.2.yml +3 -0
  20. data/spec/case/get_variable/group_host_playbook/hosts +10 -0
  21. data/spec/case/get_variable/group_host_playbook/site.yml +19 -0
  22. data/spec/case/get_variable/group_host_playbook_role/group_vars/all.yml +6 -0
  23. data/spec/case/get_variable/group_host_playbook_role/group_vars/group1.yml +4 -0
  24. data/spec/case/get_variable/group_host_playbook_role/host_vars/192.168.1.1.yml +3 -0
  25. data/spec/case/get_variable/group_host_playbook_role/host_vars/192.168.1.2.yml +3 -0
  26. data/spec/case/get_variable/group_host_playbook_role/hosts +10 -0
  27. data/spec/case/get_variable/group_host_playbook_role/roles/test/vars/main.yml +1 -0
  28. data/spec/case/get_variable/group_host_playbook_role/site.yml +19 -0
  29. data/spec/case/get_variable/host_vars/host_vars/192.168.1.1.yml +3 -0
  30. data/spec/case/get_variable/host_vars/host_vars/192.168.1.2.yml +3 -0
  31. data/spec/case/get_variable/host_vars/hosts +10 -0
  32. data/spec/case/get_variable/host_vars/site.yml +13 -0
  33. data/spec/case/get_variable/playbook_only/hosts +10 -0
  34. data/spec/case/get_variable/playbook_only/site.yml +19 -0
  35. data/spec/case/get_variable/roles_default/hosts +10 -0
  36. data/spec/case/get_variable/roles_default/roles/test/defaults/main.yml +4 -0
  37. data/spec/case/get_variable/roles_default/site.yml +13 -0
  38. data/spec/get_variable_spec.rb +227 -0
  39. data/spec/inventory_parameters_spec.rb +2 -2
  40. data/spec/load_ansible_spec.rb +4 -4
  41. metadata +64 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec67a8022665160ed4e838c35091ed7db813ac8f
4
- data.tar.gz: 06e9fcb7b68433a202142dccd5a9c15bab489b5f
3
+ metadata.gz: d122ed3ab0a82c97610d92c4003e312c9b840da8
4
+ data.tar.gz: a5aa9f19132d94f6a71a29dd5757fc1656ed5132
5
5
  SHA512:
6
- metadata.gz: 0bb346e2cd55b2c6498fb1787fba2fe4b3f717a9c15a3f23ed4ec59ab55c59215ad6064f48b06dfb2ce068978ae27f107cec11d1fdc64bf6b6051e98ed8f80c1
7
- data.tar.gz: 24e59c49e57c554720766e3e0f8dbee26290857c7d8a41ecfac53c1cf3ebbfe10cbf0a498f87f9efeb6ba12bd679be9b367b7277a40ee48d6d7d9f07ed9622d3
6
+ metadata.gz: c2032946eab61911a11307e40295d3264a313ae3e447bb44df3a93e35064f72ff5135051192cb7d0a25ffd575c8ab6860ef42088f1a425127958f0f8abc23dda
7
+ data.tar.gz: 27fcb234ef270985b4111e04c245bc890bd8a2d1b448e81085eb7cfef1e708322e68eae50cf8b759e3167eae35a846f63bdc81360040cb2ab1a47798d1ea22f3
@@ -1,3 +1,6 @@
1
+ # v0.2.8
2
+ - Merge [#60 Support ansible variable in playbook partially](https://github.com/volanja/ansible_spec/pull/60) by [okamototk](https://github.com/okamototk)
3
+
1
4
  # v0.2.7
2
5
  - Fix [#55 Connection fails where dynamic inventory has basic host list](https://github.com/volanja/ansible_spec/issues/55) by [temyers](https://github.com/temyers)
3
6
  - Merge [#59 Issue55 fail dynamic inventory](https://github.com/volanja/ansible_spec/pull/59)
data/README.md CHANGED
@@ -126,6 +126,59 @@ databases
126
126
  echo '{"databases": {"hosts": ["host1.example.com", "host2.example.com"],"vars":{"a": true}}}'
127
127
  ```
128
128
 
129
+ ## Variables
130
+
131
+ Ansible variables supported by following condition.
132
+
133
+ * Playbook's variables are supported. If same variable is defined in different places,
134
+ priority follows [Ansible order](http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable).
135
+ * Variables defined main.yml in role's tasks are not supported.
136
+ * Inventry variables are not supported.
137
+ * Facts are not supported.
138
+
139
+ ### Sample
140
+
141
+ Support variables are in site.yml, group_vars, host_vars, roles.
142
+
143
+ ```
144
+ ├── site.yml
145
+ ├── group_vars
146
+ │  ├── all.yml
147
+ │   ├── dbserver.yml
148
+ │  └── webserver.yml
149
+ ├── host_vars
150
+ │  ├── 192.168.1.1.yml
151
+ │  └── 192.168.1.2.yml
152
+ └── roles
153
+ ├── apaches
154
+ │ └── vars
155
+ │ └── main.yml
156
+ └── mariadb
157
+ └── vars
158
+ └── main.yml
159
+
160
+ ```
161
+
162
+ #### Define variable(site.yml)
163
+
164
+
165
+ ```
166
+ - name: Ansible-Variable-Sample
167
+ hosts: webserver.yml
168
+ user: root
169
+ vars:
170
+ - www_port: 8080
171
+ roles:
172
+ - nginx
173
+ ```
174
+
175
+ #### Spec file(roles/nginx/spec/nginx_spec.rb)
176
+
177
+ ```
178
+ describe port(property['www_port']) do
179
+ it { should be_listening }
180
+ end
181
+ ```
129
182
 
130
183
  # Sample
131
184
  ## Directory
@@ -1,6 +1,7 @@
1
1
  require 'hostlist_expression'
2
2
  require 'oj'
3
3
  require 'open3'
4
+ require 'yaml'
4
5
 
5
6
  module AnsibleSpec
6
7
  # param: inventory file of Ansible
@@ -277,6 +278,7 @@ module AnsibleSpec
277
278
  hosts = load_targets(inventoryfile)
278
279
  properties = load_playbook(playbook)
279
280
  properties.each do |var|
281
+ var["group"] = var["hosts"]
280
282
  if var["hosts"].to_s == "all"
281
283
  var["hosts"] = hosts.values.flatten
282
284
  elsif hosts.has_key?("#{var["hosts"]}")
@@ -287,4 +289,71 @@ module AnsibleSpec
287
289
  end
288
290
  return properties
289
291
  end
292
+
293
+ def self.get_variables(host, group_idx)
294
+ vars = {}
295
+ p = self.get_properties
296
+
297
+ # roles default
298
+ p[group_idx]['roles'].each do |role|
299
+ vars_file = "roles/#{role}/defaults/main.yml"
300
+ if File.exist?(vars_file)
301
+ yaml = YAML.load_file(vars_file)
302
+ if yaml.kind_of?(Hash)
303
+ vars.merge!(yaml)
304
+ end
305
+ end
306
+ end
307
+
308
+ # all group
309
+ vars_file = 'group_vars/all.yml'
310
+ if File.exist?(vars_file)
311
+ yaml = YAML.load_file(vars_file)
312
+ if yaml.kind_of?(Hash)
313
+ vars.merge!(yaml)
314
+ end
315
+ end
316
+
317
+ # each group vars
318
+ if p[group_idx].has_key?('group')
319
+ vars_file = "group_vars/#{p[group_idx]['group']}.yml"
320
+ if File.exist?(vars_file)
321
+ yaml = YAML.load_file(vars_file)
322
+ if yaml.kind_of?(Hash)
323
+ vars.merge!(yaml)
324
+ end
325
+ end
326
+ end
327
+
328
+ # each host vars
329
+ vars_file = "host_vars/#{host}.yml"
330
+ if File.exist?(vars_file)
331
+ yaml = YAML.load_file(vars_file)
332
+ if yaml.kind_of?(Hash)
333
+ vars.merge!(yaml)
334
+ end
335
+ end
336
+
337
+ # site vars
338
+ if p[group_idx].has_key?('vars')
339
+ if p[group_idx]['vars'].kind_of?(Hash)
340
+ vars.merge!(p[group_idx]['vars'])
341
+ end
342
+ end
343
+
344
+ # roles vars
345
+ p[group_idx]['roles'].each do |role|
346
+ vars_file = "roles/#{role}/vars/main.yml"
347
+ if File.exist?(vars_file)
348
+ yaml = YAML.load_file(vars_file)
349
+ if yaml.kind_of?(Hash)
350
+ vars.merge!(yaml)
351
+ end
352
+ end
353
+ end
354
+
355
+ return vars
356
+
357
+ end
358
+
290
359
  end
@@ -1,3 +1,3 @@
1
1
  module AnsibleSpec
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8"
3
3
  end
@@ -8,13 +8,14 @@ properties = AnsibleSpec.get_properties
8
8
  # {"name"=>"Ansible-Sample-TDD", "hosts"=>[{"name" => "192.168.0.103:22","uri"=>"192.168.0.103","port"=>22, "private_key"=> "~/.ssh/id_rsa"}], "user"=>"root", "roles"=>["nginx", "mariadb"]}
9
9
 
10
10
  namespace :serverspec do
11
- properties.each do |property|
11
+ properties.each_with_index.map do |property, index|
12
12
  property["hosts"].each do |host|
13
13
  desc "Run serverspec for #{property["name"]}"
14
14
  RSpec::Core::RakeTask.new(property["name"].to_sym) do |t|
15
15
  puts "Run serverspec for #{property["name"]} to #{host}"
16
16
  ENV['TARGET_HOST'] = host["uri"]
17
17
  ENV['TARGET_PORT'] = host["port"].to_s
18
+ ENV['TARGET_GROUP_INDEX'] = index.to_s
18
19
  ENV['TARGET_PRIVATE_KEY'] = host["private_key"]
19
20
  unless host["user"].nil?
20
21
  ENV['TARGET_USER'] = host["user"]
@@ -1,5 +1,6 @@
1
1
  require 'serverspec'
2
2
  require 'net/ssh'
3
+ require 'ansible_spec'
3
4
 
4
5
  set :backend, :ssh
5
6
 
@@ -34,3 +35,12 @@ set :ssh_options, options
34
35
 
35
36
  # Set PATH
36
37
  # set :path, '/sbin:/usr/local/sbin:$PATH'
38
+
39
+ #
40
+ # Set ansible variables to serverspec property
41
+ #
42
+
43
+ group_idx = ENV['TARGET_GROUP_INDEX'].to_i
44
+
45
+ vars = AnsibleSpec.get_variables(host, group_idx)
46
+ set_property vars
@@ -0,0 +1,6 @@
1
+ ---
2
+ role_var: "group all"
3
+ site_var: "group all"
4
+ host_var: "group all"
5
+ group_var: "group all"
6
+ group_all_var: "group all"
@@ -0,0 +1,10 @@
1
+ [group1]
2
+ 192.168.1.1
3
+
4
+ [group2]
5
+ 192.168.1.2
6
+
7
+ [all]
8
+ 192.168.1.1
9
+ 192.168.1.2
10
+
@@ -0,0 +1,4 @@
1
+ ---
2
+ role_var: 'role_var in roles default'
3
+ site_var: 'site_var in roles default'
4
+ host_var: 'host_var in roles default'
@@ -0,0 +1,13 @@
1
+ - name: group1
2
+ hosts: group1
3
+ connection: local
4
+ roles:
5
+ - test
6
+ - test/nested
7
+
8
+ - name: group2
9
+ hosts: group2
10
+ connection: local
11
+ roles:
12
+ - test
13
+ - test/nested
@@ -0,0 +1,6 @@
1
+ ---
2
+ role_var: "group all"
3
+ site_var: "group all"
4
+ host_var: "group all"
5
+ group_var: "group all"
6
+ group_all_var: "group all"
@@ -0,0 +1,4 @@
1
+ role_var: "group1"
2
+ site_var: "group1"
3
+ host_var: "group1"
4
+ group_var: 'group1'
@@ -0,0 +1,10 @@
1
+ [group1]
2
+ 192.168.1.1
3
+
4
+ [group2]
5
+ 192.168.1.2
6
+
7
+ [all]
8
+ 192.168.1.1
9
+ 192.168.1.2
10
+
@@ -0,0 +1,13 @@
1
+ - name: group1
2
+ hosts: group1
3
+ connection: local
4
+ roles:
5
+ - test
6
+ - test/nested
7
+
8
+ - name: group2
9
+ hosts: group2
10
+ connection: local
11
+ roles:
12
+ - test
13
+ - test/nested
@@ -0,0 +1,6 @@
1
+ ---
2
+ role_var: "group all"
3
+ site_var: "group all"
4
+ host_var: "group all"
5
+ group_var: "group all"
6
+ group_all_var: "group all"
@@ -0,0 +1,4 @@
1
+ role_var: "group1"
2
+ site_var: "group1"
3
+ host_var: "group1"
4
+ group_var: 'group1'
@@ -0,0 +1,3 @@
1
+ role_var: "host role_var"
2
+ site_var: "host site_var"
3
+ host_var: "host 192.168.1.1"
@@ -0,0 +1,3 @@
1
+ role_var: "host role_var"
2
+ site_var: "host site_var"
3
+ host_var: "host 192.168.1.2"
@@ -0,0 +1,10 @@
1
+ [group1]
2
+ 192.168.1.1
3
+
4
+ [group2]
5
+ 192.168.1.2
6
+
7
+ [all]
8
+ 192.168.1.1
9
+ 192.168.1.2
10
+
@@ -0,0 +1,19 @@
1
+ - name: group1
2
+ hosts: group1
3
+ connection: local
4
+ vars:
5
+ site_var: "site"
6
+ role_var: "site"
7
+ roles:
8
+ - test
9
+ - test/nested
10
+
11
+ - name: group2
12
+ hosts: group2
13
+ connection: local
14
+ vars:
15
+ site_var: "site"
16
+ role_var: "site"
17
+ roles:
18
+ - test
19
+ - test/nested
@@ -0,0 +1,6 @@
1
+ ---
2
+ role_var: "group all"
3
+ site_var: "group all"
4
+ host_var: "group all"
5
+ group_var: "group all"
6
+ group_all_var: "group all"
@@ -0,0 +1,4 @@
1
+ role_var: "group1"
2
+ site_var: "group1"
3
+ host_var: "group1"
4
+ group_var: 'group1'
@@ -0,0 +1,3 @@
1
+ role_var: "host role_var"
2
+ site_var: "host site_var"
3
+ host_var: "host 192.168.1.1"
@@ -0,0 +1,3 @@
1
+ role_var: "host role_var"
2
+ site_var: "host site_var"
3
+ host_var: "host 192.168.1.2"
@@ -0,0 +1,10 @@
1
+ [group1]
2
+ 192.168.1.1
3
+
4
+ [group2]
5
+ 192.168.1.2
6
+
7
+ [all]
8
+ 192.168.1.1
9
+ 192.168.1.2
10
+
@@ -0,0 +1,19 @@
1
+ - name: group1
2
+ hosts: group1
3
+ connection: local
4
+ vars:
5
+ site_var: "site"
6
+ role_var: "site"
7
+ roles:
8
+ - test
9
+ - test/nested
10
+
11
+ - name: group2
12
+ hosts: group2
13
+ connection: local
14
+ vars:
15
+ site_var: "site"
16
+ role_var: "site"
17
+ roles:
18
+ - test
19
+ - test/nested
@@ -0,0 +1,3 @@
1
+ role_var: "host role_var"
2
+ site_var: "host site_var"
3
+ host_var: "host 192.168.1.1"
@@ -0,0 +1,3 @@
1
+ role_var: "host role_var"
2
+ site_var: "host site_var"
3
+ host_var: "host 192.168.1.2"
@@ -0,0 +1,10 @@
1
+ [group1]
2
+ 192.168.1.1
3
+
4
+ [group2]
5
+ 192.168.1.2
6
+
7
+ [all]
8
+ 192.168.1.1
9
+ 192.168.1.2
10
+
@@ -0,0 +1,13 @@
1
+ - name: group1
2
+ hosts: group1
3
+ connection: local
4
+ roles:
5
+ - test
6
+ - test/nested
7
+
8
+ - name: group2
9
+ hosts: group2
10
+ connection: local
11
+ roles:
12
+ - test
13
+ - test/nested
@@ -0,0 +1,10 @@
1
+ [group1]
2
+ 192.168.1.1
3
+
4
+ [group2]
5
+ 192.168.1.2
6
+
7
+ [all]
8
+ 192.168.1.1
9
+ 192.168.1.2
10
+
@@ -0,0 +1,19 @@
1
+ - name: group1
2
+ hosts: group1
3
+ connection: local
4
+ vars:
5
+ site_var: "site"
6
+ role_var: "site"
7
+ roles:
8
+ - test
9
+ - test/nested
10
+
11
+ - name: group2
12
+ hosts: group2
13
+ connection: local
14
+ vars:
15
+ site_var: "site"
16
+ role_var: "site"
17
+ roles:
18
+ - test
19
+ - test/nested
@@ -0,0 +1,10 @@
1
+ [group1]
2
+ 192.168.1.1
3
+
4
+ [group2]
5
+ 192.168.1.2
6
+
7
+ [all]
8
+ 192.168.1.1
9
+ 192.168.1.2
10
+
@@ -0,0 +1,4 @@
1
+ ---
2
+ role_var: 'role_var in roles default'
3
+ site_var: 'site_var in roles default'
4
+ host_var: 'host_var in roles default'
@@ -0,0 +1,13 @@
1
+ - name: group1
2
+ hosts: group1
3
+ connection: local
4
+ roles:
5
+ - test
6
+ - test/nested
7
+
8
+ - name: group2
9
+ hosts: group2
10
+ connection: local
11
+ roles:
12
+ - test
13
+ - test/nested
@@ -0,0 +1,227 @@
1
+ # coding: utf-8
2
+ require 'fileutils'
3
+ require 'ansible_spec'
4
+
5
+ describe "get_variablesの実行" do
6
+ context 'Correct operation : roles default' do
7
+ before do
8
+ @current_dir = Dir.pwd()
9
+ Dir.chdir('spec/case/get_variable/roles_default/')
10
+ @res = AnsibleSpec.get_variables('192.168.1.1', 0)
11
+ end
12
+
13
+ it 'res is hash' do
14
+ expect(@res.instance_of?(Hash)).to be_truthy
15
+ end
16
+
17
+ it 'exist 3 pair in Hash' do
18
+ expect(@res.length).to eq 3
19
+ end
20
+
21
+ it 'exist each pair' do
22
+ expect(@res).to include({'role_var' => 'role_var in roles default'},
23
+ {'site_var' => 'site_var in roles default'},
24
+ {'host_var'=>'host_var in roles default'},
25
+ )
26
+ end
27
+
28
+ after do
29
+ Dir.chdir(@current_dir)
30
+ end
31
+ end
32
+
33
+ context 'Correct operation : all groups' do
34
+ before do
35
+ @current_dir = Dir.pwd()
36
+ Dir.chdir('spec/case/get_variable/group_all/')
37
+ @res = AnsibleSpec.get_variables('192.168.1.1', 0)
38
+ end
39
+
40
+ it 'res is hash' do
41
+ expect(@res.instance_of?(Hash)).to be_truthy
42
+ end
43
+
44
+ it 'exist 5 pair in Hash' do
45
+ expect(@res.length).to eq 5
46
+ end
47
+
48
+ it 'exist each pair' do
49
+ expect(@res).to include({'role_var' => 'group all'},
50
+ {'site_var' => 'group all'},
51
+ {'host_var'=>'group all'},
52
+ {'group_var'=>'group all'},
53
+ {'group_all_var'=>'group all'}
54
+ )
55
+ end
56
+
57
+ after do
58
+ Dir.chdir(@current_dir)
59
+ end
60
+ end
61
+
62
+ context 'Correct operation : each group vars' do
63
+ before do
64
+ @current_dir = Dir.pwd()
65
+ Dir.chdir('spec/case/get_variable/group_each_vars/')
66
+ @res = AnsibleSpec.get_variables('192.168.1.1', 0)
67
+ end
68
+
69
+ it 'res is hash' do
70
+ expect(@res.instance_of?(Hash)).to be_truthy
71
+ end
72
+
73
+ it 'exist 5 pair in Hash' do
74
+ expect(@res.length).to eq 5
75
+ end
76
+
77
+ it 'exist each pair' do
78
+ expect(@res).to include({'role_var' => 'group1'},
79
+ {'site_var' => 'group1'},
80
+ {'host_var'=>'group1'},
81
+ {'group_var'=>'group1'},
82
+ {'group_all_var'=>'group all'}
83
+ )
84
+ end
85
+
86
+ after do
87
+ Dir.chdir(@current_dir)
88
+ end
89
+ end
90
+
91
+ context 'Correct operation : host_vars' do
92
+ before do
93
+ @current_dir = Dir.pwd()
94
+ Dir.chdir('spec/case/get_variable/host_vars/')
95
+ @res = AnsibleSpec.get_variables('192.168.1.1', 0)
96
+ end
97
+
98
+ it 'res is hash' do
99
+ expect(@res.instance_of?(Hash)).to be_truthy
100
+ end
101
+
102
+ it 'exist 3 pair in Hash' do
103
+ expect(@res.length).to eq 3
104
+ end
105
+
106
+ it 'exist each pair' do
107
+ expect(@res).to include({'role_var' => 'host role_var'}, # in host_var/192.168.1.1.yml
108
+ {'site_var' => 'host site_var'}, # in host_var/192.168.1.1.yml
109
+ {'host_var'=>'host 192.168.1.1'}, # in host_var/192.168.1.1.yml
110
+ )
111
+ end
112
+
113
+ after do
114
+ Dir.chdir(@current_dir)
115
+ end
116
+ end
117
+
118
+ context 'Correct operation : host_vars' do
119
+ before do
120
+ @current_dir = Dir.pwd()
121
+ Dir.chdir('spec/case/get_variable/host_vars/')
122
+ @res = AnsibleSpec.get_variables('192.168.1.2', 1)
123
+ end
124
+
125
+ it 'res is hash' do
126
+ expect(@res.instance_of?(Hash)).to be_truthy
127
+ end
128
+
129
+ it 'exist 3 pair in Hash' do
130
+ expect(@res.length).to eq 3
131
+ end
132
+
133
+ it 'exist each pair' do
134
+ expect(@res).to include({'role_var' => 'host role_var'}, # in host_var/192.168.1.2.yml
135
+ {'site_var' => 'host site_var'}, # in host_var/192.168.1.2.yml
136
+ {'host_var'=>'host 192.168.1.2'}, # in host_var/192.168.1.2.yml
137
+ )
138
+ end
139
+
140
+ after do
141
+ Dir.chdir(@current_dir)
142
+ end
143
+ end
144
+
145
+ context 'Correct operation : playbook only' do
146
+ before do
147
+ @current_dir = Dir.pwd()
148
+ Dir.chdir('spec/case/get_variable/playbook_only/')
149
+ @res = AnsibleSpec.get_variables('192.168.1.1', 0)
150
+ end
151
+
152
+ it 'res is hash' do
153
+ expect(@res.instance_of?(Hash)).to be_truthy
154
+ end
155
+
156
+ it 'exist 2 pair in Hash' do
157
+ expect(@res.length).to eq 2
158
+ end
159
+
160
+ it 'exist each pair' do
161
+ expect(@res).to include({'role_var' => 'site'},
162
+ {'site_var' => 'site'})
163
+ end
164
+
165
+ after do
166
+ Dir.chdir(@current_dir)
167
+ end
168
+ end
169
+
170
+ context 'Correct operation : playbook & group_var & host_var' do
171
+ before do
172
+ @current_dir = Dir.pwd()
173
+ Dir.chdir('spec/case/get_variable/group_host_playbook/')
174
+ @res = AnsibleSpec.get_variables('192.168.1.1', 0)
175
+ end
176
+
177
+ it 'res is hash' do
178
+ expect(@res.instance_of?(Hash)).to be_truthy
179
+ end
180
+
181
+ it 'exist 5 pair in Hash' do
182
+ expect(@res.length).to eq 5
183
+ end
184
+
185
+ it 'exist each pair' do
186
+ expect(@res).to include({'role_var' => 'site'}, # site.yml
187
+ {'site_var' => 'site'}, # site.yml
188
+ {'host_var'=>'host 192.168.1.1'}, # in host_var/192.168.1.1.yml
189
+ {'group_var'=>'group1'}, # in group_var/all.yml
190
+ {'group_all_var'=>'group all'} # in group_var/all.yml
191
+ )
192
+ end
193
+
194
+ after do
195
+ Dir.chdir(@current_dir)
196
+ end
197
+ end
198
+
199
+ context 'Correct operation : playbook & group_var & host_var & variable in role' do
200
+ before do
201
+ @current_dir = Dir.pwd()
202
+ Dir.chdir('spec/case/get_variable/group_host_playbook_role/')
203
+ @res = AnsibleSpec.get_variables('192.168.1.1', 0)
204
+ end
205
+
206
+ it 'res is hash' do
207
+ expect(@res.instance_of?(Hash)).to be_truthy
208
+ end
209
+
210
+ it 'exist 5 pair in Hash' do
211
+ expect(@res.length).to eq 5
212
+ end
213
+
214
+ it 'exist each pair' do
215
+ expect(@res).to include({'role_var' => 'role'}, # in roles/test/vars/main.yml
216
+ {'site_var' => 'site'}, # site.yml
217
+ {'host_var'=>'host 192.168.1.1'}, # in host_var/192.168.1.1.yml
218
+ {'group_var'=>'group1'}, # in group_var/all.yml
219
+ {'group_all_var'=>'group all'} # in group_var/all.yml
220
+ )
221
+ end
222
+
223
+ after do
224
+ Dir.chdir(@current_dir)
225
+ end
226
+ end
227
+ end
@@ -142,8 +142,8 @@ describe "get_propertiesの実行" do
142
142
  expect(@res[0].instance_of?(Hash)).to be_truthy
143
143
  end
144
144
 
145
- it 'check 4 group' do
146
- expect(@res[0].length).to eq 4
145
+ it 'check 5 group' do
146
+ expect(@res[0].length).to eq 5
147
147
  end
148
148
 
149
149
  it 'exist name' do
@@ -1191,8 +1191,8 @@ EOF
1191
1191
  expect(@res[0].instance_of?(Hash)).to be_truthy
1192
1192
  end
1193
1193
 
1194
- it 'check 1 group' do
1195
- expect(@res[0].length).to eq 4
1194
+ it 'check 5 group' do
1195
+ expect(@res[0].length).to eq 5
1196
1196
  end
1197
1197
 
1198
1198
  it 'exist name' do
@@ -1276,8 +1276,8 @@ EOF
1276
1276
  expect(@res[0].instance_of?(Hash)).to be_truthy
1277
1277
  end
1278
1278
 
1279
- it 'check 1 group' do
1280
- expect(@res[0].length).to eq 4
1279
+ it 'check 5 group' do
1280
+ expect(@res[0].length).to eq 5
1281
1281
  end
1282
1282
 
1283
1283
  it 'exist name' do
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.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - volanja
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-13 00:00:00.000000000 Z
11
+ date: 2016-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -133,10 +133,41 @@ files:
133
133
  - lib/src/.ansiblespec
134
134
  - lib/src/Rakefile
135
135
  - lib/src/spec/spec_helper.rb
136
+ - spec/case/get_variable/group_all/group_vars/all.yml
137
+ - spec/case/get_variable/group_all/hosts
138
+ - spec/case/get_variable/group_all/roles/test/defaults/main.yml
139
+ - spec/case/get_variable/group_all/site.yml
140
+ - spec/case/get_variable/group_each_vars/group_vars/all.yml
141
+ - spec/case/get_variable/group_each_vars/group_vars/group1.yml
142
+ - spec/case/get_variable/group_each_vars/hosts
143
+ - spec/case/get_variable/group_each_vars/site.yml
144
+ - spec/case/get_variable/group_host_playbook/group_vars/all.yml
145
+ - spec/case/get_variable/group_host_playbook/group_vars/group1.yml
146
+ - spec/case/get_variable/group_host_playbook/host_vars/192.168.1.1.yml
147
+ - spec/case/get_variable/group_host_playbook/host_vars/192.168.1.2.yml
148
+ - spec/case/get_variable/group_host_playbook/hosts
149
+ - spec/case/get_variable/group_host_playbook/site.yml
150
+ - spec/case/get_variable/group_host_playbook_role/group_vars/all.yml
151
+ - spec/case/get_variable/group_host_playbook_role/group_vars/group1.yml
152
+ - spec/case/get_variable/group_host_playbook_role/host_vars/192.168.1.1.yml
153
+ - spec/case/get_variable/group_host_playbook_role/host_vars/192.168.1.2.yml
154
+ - spec/case/get_variable/group_host_playbook_role/hosts
155
+ - spec/case/get_variable/group_host_playbook_role/roles/test/vars/main.yml
156
+ - spec/case/get_variable/group_host_playbook_role/site.yml
157
+ - spec/case/get_variable/host_vars/host_vars/192.168.1.1.yml
158
+ - spec/case/get_variable/host_vars/host_vars/192.168.1.2.yml
159
+ - spec/case/get_variable/host_vars/hosts
160
+ - spec/case/get_variable/host_vars/site.yml
161
+ - spec/case/get_variable/playbook_only/hosts
162
+ - spec/case/get_variable/playbook_only/site.yml
163
+ - spec/case/get_variable/roles_default/hosts
164
+ - spec/case/get_variable/roles_default/roles/test/defaults/main.yml
165
+ - spec/case/get_variable/roles_default/site.yml
136
166
  - spec/commands_spec.rb
137
167
  - spec/dependency_spec.rb
138
168
  - spec/dynamic_inventory_spec.rb
139
169
  - spec/ec2_dynamic_inventory_spec.rb
170
+ - spec/get_variable_spec.rb
140
171
  - spec/inventory_parameters_spec.rb
141
172
  - spec/load_ansible_spec.rb
142
173
  - spec/spec_helper.rb
@@ -167,10 +198,41 @@ specification_version: 4
167
198
  summary: Ansible Config Parser for Serverspec. Run test Multi Role and Multi Host
168
199
  by Ansible Configuration
169
200
  test_files:
201
+ - spec/case/get_variable/group_all/group_vars/all.yml
202
+ - spec/case/get_variable/group_all/hosts
203
+ - spec/case/get_variable/group_all/roles/test/defaults/main.yml
204
+ - spec/case/get_variable/group_all/site.yml
205
+ - spec/case/get_variable/group_each_vars/group_vars/all.yml
206
+ - spec/case/get_variable/group_each_vars/group_vars/group1.yml
207
+ - spec/case/get_variable/group_each_vars/hosts
208
+ - spec/case/get_variable/group_each_vars/site.yml
209
+ - spec/case/get_variable/group_host_playbook/group_vars/all.yml
210
+ - spec/case/get_variable/group_host_playbook/group_vars/group1.yml
211
+ - spec/case/get_variable/group_host_playbook/host_vars/192.168.1.1.yml
212
+ - spec/case/get_variable/group_host_playbook/host_vars/192.168.1.2.yml
213
+ - spec/case/get_variable/group_host_playbook/hosts
214
+ - spec/case/get_variable/group_host_playbook/site.yml
215
+ - spec/case/get_variable/group_host_playbook_role/group_vars/all.yml
216
+ - spec/case/get_variable/group_host_playbook_role/group_vars/group1.yml
217
+ - spec/case/get_variable/group_host_playbook_role/host_vars/192.168.1.1.yml
218
+ - spec/case/get_variable/group_host_playbook_role/host_vars/192.168.1.2.yml
219
+ - spec/case/get_variable/group_host_playbook_role/hosts
220
+ - spec/case/get_variable/group_host_playbook_role/roles/test/vars/main.yml
221
+ - spec/case/get_variable/group_host_playbook_role/site.yml
222
+ - spec/case/get_variable/host_vars/host_vars/192.168.1.1.yml
223
+ - spec/case/get_variable/host_vars/host_vars/192.168.1.2.yml
224
+ - spec/case/get_variable/host_vars/hosts
225
+ - spec/case/get_variable/host_vars/site.yml
226
+ - spec/case/get_variable/playbook_only/hosts
227
+ - spec/case/get_variable/playbook_only/site.yml
228
+ - spec/case/get_variable/roles_default/hosts
229
+ - spec/case/get_variable/roles_default/roles/test/defaults/main.yml
230
+ - spec/case/get_variable/roles_default/site.yml
170
231
  - spec/commands_spec.rb
171
232
  - spec/dependency_spec.rb
172
233
  - spec/dynamic_inventory_spec.rb
173
234
  - spec/ec2_dynamic_inventory_spec.rb
235
+ - spec/get_variable_spec.rb
174
236
  - spec/inventory_parameters_spec.rb
175
237
  - spec/load_ansible_spec.rb
176
238
  - spec/spec_helper.rb