ansible_spec 0.2.15 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +2 -2
- data/CHANGELOG.md +10 -0
- data/Gemfile +4 -0
- data/README.md +12 -8
- data/lib/ansible_spec/load_ansible.rb +20 -11
- data/lib/ansible_spec/version.rb +1 -1
- data/spec/case/load_vars_file/vars_dir/group_vars/all/file1 +1 -0
- data/spec/case/load_vars_file/vars_dir/group_vars/all/file2 +1 -0
- data/spec/dependency_spec.rb +23 -1
- data/spec/get_variable_spec.rb +27 -0
- data/spec/inventory_parameters_spec.rb +35 -0
- data/spec/ssh_spec.rb +25 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b23a5303fd8abc86840d5450d162dbb43d6e5e34
|
4
|
+
data.tar.gz: 1440c45d801dceaf4b0c745a4f10b46160adade8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f3b1574d6a15feb18ccb8ca038172ce8196407135a4647aad90c3ad08a4fc7bc235e1fe3e1ae0cb16649546aa4e9bae45260a16d8eae0c29e02e19bf85a66e6
|
7
|
+
data.tar.gz: 059a9313c114296ba18db37d96a7d9a0b7a0f71adad091cd76abe76266d9275b5f6fd2882d9f9170e8f4e7dc7927ed5df2ed6ce980a0c6a51cf1a2fe7117e2bc
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# v0.2.16
|
2
|
+
- Merge [#88 fix nil dependencies](https://github.com/volanja/ansible_spec/pull/88) by [developerinlondon](https://github.com/developerinlondon)
|
3
|
+
- Merge [#87 added .DS_Store to gitignore](https://github.com/volanja/ansible_spec/pull/87) by [developerinlondon](https://github.com/developerinlondon)
|
4
|
+
- Merge [#85 #84 modify variable expansion](https://github.com/volanja/ansible_spec/pull/85) by volanja
|
5
|
+
- Merge [#84 On errors print the playbook name](https://github.com/volanja/ansible_spec/pull/84) by [agx](https://github.com/agx)
|
6
|
+
- Merge [#83 Handle "simple" role dependencies](https://github.com/volanja/ansible_spec/pull/83) by [agx](https://github.com/agx)
|
7
|
+
- Merge [#82 Handle directories with vars as well](https://github.com/volanja/ansible_spec/pull/82) by [agx](https://github.com/agx)
|
8
|
+
- Merge [#78 should use json v1.8.3 at ruby 1.9.3](https://github.com/volanja/ansible_spec/pull/78) by volanja
|
9
|
+
- Merge [#77 support ansible_host, ansible_user, ansible_port](https://github.com/volanja/ansible_spec/pull/77) by volanja
|
10
|
+
|
1
11
|
# v0.2.15
|
2
12
|
- Merge [Add .rspec when run `ansiblespec-init`](https://github.com/volanja/ansible_spec/pull/76) by volanja
|
3
13
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# ansible_spec
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/ansible_spec)
|
4
4
|
[](https://travis-ci.org/volanja/ansible_spec)
|
@@ -11,9 +11,9 @@ and playbooks. You can test multiple roles and multiple hosts.
|
|
11
11
|
|
12
12
|
- Supports [Serverspec](http://serverspec.org/) v2
|
13
13
|
- Supports special host variables
|
14
|
-
- `ansible_ssh_port`
|
15
|
-
- `ansible_ssh_user`
|
16
|
-
- `ansible_ssh_host`
|
14
|
+
- `ansible_ssh_port` or `ansible_port`
|
15
|
+
- `ansible_ssh_user` or `ansible_user`
|
16
|
+
- `ansible_ssh_host` or `ansible_host`
|
17
17
|
- `ansible_ssh_private_key_file`
|
18
18
|
- Supports [host patterns/ranges](http://docs.ansible.com/intro_inventory.html#hosts-and-groups) -- e.g.: `www[01:50].example.com`
|
19
19
|
- Supports Ansible [dynamic inventory sources](http://docs.ansible.com/ansible/intro_dynamic_inventory.html)
|
@@ -81,10 +81,10 @@ See http://docs.ansible.com/ansible/intro_configuration.html#hash-behaviour.
|
|
81
81
|
Inventory files can:
|
82
82
|
|
83
83
|
- use standard ansible parameters
|
84
|
-
- `ansible_ssh_port`
|
85
|
-
- `ansible_ssh_user`
|
86
|
-
- `
|
87
|
-
- `
|
84
|
+
- `ansible_ssh_port` or `ansible_port`
|
85
|
+
- `ansible_ssh_user` or `ansible_user`
|
86
|
+
- `ansible_ssh_host` or `ansible_host`
|
87
|
+
- `ansible_ssh_private_key_file`
|
88
88
|
- define hosts as expressions. `host-[1:3]` would expand into `host-1`,`host-2`,`host-3`
|
89
89
|
- Group Children
|
90
90
|
- Use [dynamic inventory sources](http://docs.ansible.com/intro_dynamic_inventory.html)
|
@@ -106,6 +106,10 @@ Inventory files can:
|
|
106
106
|
192.168.0.5 ansible_ssh_user=git
|
107
107
|
# use port 5555 & host 192.168.1.50
|
108
108
|
jumper ansible_ssh_port=5555 ansible_ssh_host=192.168.1.50
|
109
|
+
# Ansible 2.0
|
110
|
+
192.168.10.2 ansible_port=2222
|
111
|
+
192.168.10.5 ansible_user=git
|
112
|
+
jumper2 ansible_port=5555 ansible_host=192.168.10.50
|
109
113
|
|
110
114
|
[web]
|
111
115
|
# www1.example.com to www99.example.com
|
@@ -150,10 +150,10 @@ module AnsibleSpec
|
|
150
150
|
host['uri'] = v
|
151
151
|
else
|
152
152
|
key,value = v.split("=")
|
153
|
-
host['port'] = value.to_i if key == "ansible_ssh_port"
|
153
|
+
host['port'] = value.to_i if key == "ansible_ssh_port" or key == "ansible_port"
|
154
154
|
host['private_key'] = value if key == "ansible_ssh_private_key_file"
|
155
|
-
host['user'] = value if key == "ansible_ssh_user"
|
156
|
-
host['uri'] = value if key == "ansible_ssh_host"
|
155
|
+
host['user'] = value if key == "ansible_ssh_user" or key == "ansible_user"
|
156
|
+
host['uri'] = value if key == "ansible_ssh_host" or key == "ansible_host"
|
157
157
|
host['pass'] = value if key == "ansible_ssh_pass"
|
158
158
|
host['connection'] = value if key == "ansible_connection"
|
159
159
|
end
|
@@ -203,11 +203,14 @@ module AnsibleSpec
|
|
203
203
|
path = File.join("./", "roles", role, "meta", "main.yml")
|
204
204
|
|
205
205
|
if File.exist?(path)
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
206
|
+
dependencies = YAML.load_file(path).fetch("dependencies", [])
|
207
|
+
unless dependencies.nil?
|
208
|
+
new_deps = dependencies.map { |h|
|
209
|
+
h["role"] || h
|
210
|
+
}
|
211
|
+
role_queue.concat(new_deps)
|
212
|
+
deps.concat(new_deps)
|
213
|
+
end
|
211
214
|
end
|
212
215
|
end
|
213
216
|
return deps
|
@@ -221,7 +224,7 @@ module AnsibleSpec
|
|
221
224
|
|
222
225
|
# e.g. comment-out
|
223
226
|
if playbook === false
|
224
|
-
puts
|
227
|
+
puts "Error: No data in #{f}"
|
225
228
|
exit
|
226
229
|
end
|
227
230
|
properties = Array.new
|
@@ -307,8 +310,14 @@ module AnsibleSpec
|
|
307
310
|
vars_file = path+".yml"
|
308
311
|
end
|
309
312
|
if File.exist?(vars_file)
|
310
|
-
|
311
|
-
|
313
|
+
if File.directory?(vars_file)
|
314
|
+
Dir.glob(File.join(vars_file, '*')).each { |f|
|
315
|
+
vars = load_vars_file(vars, f)
|
316
|
+
}
|
317
|
+
else
|
318
|
+
yaml = YAML.load_file(vars_file)
|
319
|
+
vars = merge_variables(vars, yaml)
|
320
|
+
end
|
312
321
|
end
|
313
322
|
return vars
|
314
323
|
end
|
data/lib/ansible_spec/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
var1: "val1"
|
@@ -0,0 +1 @@
|
|
1
|
+
var2: "val2"
|
data/spec/dependency_spec.rb
CHANGED
@@ -35,7 +35,7 @@ EOF
|
|
35
35
|
---
|
36
36
|
dependencies:
|
37
37
|
- { role: dep1 }
|
38
|
-
-
|
38
|
+
- dep2
|
39
39
|
EOF
|
40
40
|
|
41
41
|
dep1_meta_content = <<'EOF'
|
@@ -65,3 +65,25 @@ EOF
|
|
65
65
|
File.delete(tmp_dep1_meta)
|
66
66
|
end
|
67
67
|
end
|
68
|
+
|
69
|
+
describe "load_dependencies (nil dependencies)" do
|
70
|
+
tmp_webapp_meta = 'roles/webapp/meta/main.yml'
|
71
|
+
|
72
|
+
webapp_meta_content = <<'EOF'
|
73
|
+
---
|
74
|
+
dependencies:
|
75
|
+
EOF
|
76
|
+
|
77
|
+
before do
|
78
|
+
create_file(tmp_webapp_meta, webapp_meta_content)
|
79
|
+
@deps = AnsibleSpec.load_dependencies("webapp")
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'should correctly resolve nested dependencies' do
|
83
|
+
expect(@deps).to eq []
|
84
|
+
end
|
85
|
+
|
86
|
+
after do
|
87
|
+
File.delete(tmp_webapp_meta)
|
88
|
+
end
|
89
|
+
end
|
data/spec/get_variable_spec.rb
CHANGED
@@ -465,4 +465,31 @@ describe "load_vars_fileの実行" do
|
|
465
465
|
Dir.chdir(@current_dir)
|
466
466
|
end
|
467
467
|
end
|
468
|
+
|
469
|
+
context 'Correct operation : vars in directory' do
|
470
|
+
before do
|
471
|
+
@current_dir = Dir.pwd()
|
472
|
+
Dir.chdir('spec/case/load_vars_file/vars_dir/')
|
473
|
+
vars = Hash.new
|
474
|
+
file = 'group_vars/all'
|
475
|
+
@res = AnsibleSpec.load_vars_file(vars, file)
|
476
|
+
end
|
477
|
+
|
478
|
+
it 'res is hash' do
|
479
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
480
|
+
end
|
481
|
+
|
482
|
+
it 'exist 1 pair in Hash' do
|
483
|
+
expect(@res.length).to eq 2
|
484
|
+
end
|
485
|
+
|
486
|
+
it 'exist each pair' do
|
487
|
+
expect(@res).to include({'var1' => 'val1'})
|
488
|
+
expect(@res).to include({'var2' => 'val2'})
|
489
|
+
end
|
490
|
+
|
491
|
+
after do
|
492
|
+
Dir.chdir(@current_dir)
|
493
|
+
end
|
494
|
+
end
|
468
495
|
end
|
@@ -30,6 +30,7 @@ EOF
|
|
30
30
|
|
31
31
|
content_h = <<'EOF'
|
32
32
|
node ansible_ssh_port=4444 ansible_ssh_host=192.168.1.55
|
33
|
+
node1 ansible_port=4444 ansible_host=192.168.1.55
|
33
34
|
|
34
35
|
[normal]
|
35
36
|
192.168.0.1
|
@@ -39,6 +40,11 @@ node ansible_ssh_port=4444 ansible_ssh_host=192.168.1.55
|
|
39
40
|
192.168.0.5 ansible_ssh_user=git
|
40
41
|
jumper ansible_ssh_port=5555 ansible_ssh_host=192.168.1.50
|
41
42
|
node
|
43
|
+
# Ansible 2.0
|
44
|
+
192.168.10.2 ansible_port=2222
|
45
|
+
192.168.10.5 ansible_user=git
|
46
|
+
jumper2 ansible_port=5555 ansible_host=192.168.10.50
|
47
|
+
node1
|
42
48
|
EOF
|
43
49
|
|
44
50
|
create_file(tmp_ansiblespec,content)
|
@@ -116,6 +122,35 @@ describe "load_targetsの実行" do
|
|
116
122
|
expect(obj['port']).to eq 4444
|
117
123
|
end
|
118
124
|
|
125
|
+
it '192.168.10.2 ansible_port=2222' do
|
126
|
+
obj = @res['normal'][7]
|
127
|
+
expect(obj.instance_of?(Hash)).to be_truthy
|
128
|
+
expect(obj['uri']).to eq '192.168.10.2'
|
129
|
+
expect(obj['port']).to eq 2222
|
130
|
+
end
|
131
|
+
|
132
|
+
it '192.168.10.5 ansible_user=git' do
|
133
|
+
obj = @res['normal'][8]
|
134
|
+
expect(obj.instance_of?(Hash)).to be_truthy
|
135
|
+
expect(obj['uri']).to eq '192.168.10.5'
|
136
|
+
expect(obj['user']).to eq 'git'
|
137
|
+
end
|
138
|
+
|
139
|
+
it 'jumper2 ansible_port=5555 ansible_host=192.168.10.50' do
|
140
|
+
obj = @res['normal'][9]
|
141
|
+
expect(obj.instance_of?(Hash)).to be_truthy
|
142
|
+
expect(obj['name']).to eq 'jumper2 ansible_port=5555 ansible_host=192.168.10.50'
|
143
|
+
expect(obj['uri']).to eq '192.168.10.50'
|
144
|
+
expect(obj['port']).to eq 5555
|
145
|
+
end
|
146
|
+
|
147
|
+
it 'node1 ansible_port=4444 ansible_host=192.168.1.55' do
|
148
|
+
obj = @res['normal'][10]
|
149
|
+
expect(obj.instance_of?(Hash)).to be_truthy
|
150
|
+
expect(obj['name']).to eq 'node1 ansible_port=4444 ansible_host=192.168.1.55'
|
151
|
+
expect(obj['uri']).to eq '192.168.1.55'
|
152
|
+
expect(obj['port']).to eq 4444
|
153
|
+
end
|
119
154
|
after do
|
120
155
|
File.delete(tmp_hosts)
|
121
156
|
end
|
data/spec/ssh_spec.rb
CHANGED
@@ -91,6 +91,27 @@ describe 'ssh' do
|
|
91
91
|
expect(v.port).to eq '5985'
|
92
92
|
end
|
93
93
|
|
94
|
+
it '192.168.10.2 ansible_port=2222' do
|
95
|
+
v = @h["task_11"]
|
96
|
+
expect(v.user).to eq 'root'
|
97
|
+
expect(v.host).to eq '192.168.10.2'
|
98
|
+
expect(v.port).to eq '2222'
|
99
|
+
end
|
100
|
+
|
101
|
+
it '192.168.10.5 ansible_user=git' do
|
102
|
+
v = @h["task_12"]
|
103
|
+
expect(v.user).to eq 'git'
|
104
|
+
expect(v.host).to eq '192.168.10.5'
|
105
|
+
expect(v.port).to eq '22'
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'jumper2 ansible_port=5555 ansible_host=192.168.10.50' do
|
109
|
+
v = @h["task_13"]
|
110
|
+
expect(v.user).to eq 'root'
|
111
|
+
expect(v.host).to eq '192.168.10.50'
|
112
|
+
expect(v.port).to eq '5555'
|
113
|
+
end
|
114
|
+
|
94
115
|
after do
|
95
116
|
delete_normality
|
96
117
|
end
|
@@ -178,6 +199,10 @@ jumper ansible_ssh_port=5555 ansible_ssh_host=192.168.1.50
|
|
178
199
|
www[01:02].example.com
|
179
200
|
db-[a:b].example.com
|
180
201
|
192.168.1.3 ansible_connection=winrm ansible_ssh_port=5985 ansible_ssh_user=administrator ansible_ssh_pass=Passw0rd
|
202
|
+
# Ansible 2.0
|
203
|
+
192.168.10.2 ansible_port=2222
|
204
|
+
192.168.10.5 ansible_user=git
|
205
|
+
jumper2 ansible_port=5555 ansible_host=192.168.10.50
|
181
206
|
EOF
|
182
207
|
|
183
208
|
File.open(tmp_ansiblespec, 'w') do |f|
|
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.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- volanja
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -254,6 +254,8 @@ files:
|
|
254
254
|
- spec/case/load_vars_file/group_all/group_vars/all.yml
|
255
255
|
- spec/case/load_vars_file/group_all_deep_merge/.ansiblespec
|
256
256
|
- spec/case/load_vars_file/group_all_deep_merge/group_vars/all.yml
|
257
|
+
- spec/case/load_vars_file/vars_dir/group_vars/all/file1
|
258
|
+
- spec/case/load_vars_file/vars_dir/group_vars/all/file2
|
257
259
|
- spec/commands_spec.rb
|
258
260
|
- spec/dependency_spec.rb
|
259
261
|
- spec/dynamic_inventory_hosts_childrens_spec.rb
|
@@ -395,6 +397,8 @@ test_files:
|
|
395
397
|
- spec/case/load_vars_file/group_all/group_vars/all.yml
|
396
398
|
- spec/case/load_vars_file/group_all_deep_merge/.ansiblespec
|
397
399
|
- spec/case/load_vars_file/group_all_deep_merge/group_vars/all.yml
|
400
|
+
- spec/case/load_vars_file/vars_dir/group_vars/all/file1
|
401
|
+
- spec/case/load_vars_file/vars_dir/group_vars/all/file2
|
398
402
|
- spec/commands_spec.rb
|
399
403
|
- spec/dependency_spec.rb
|
400
404
|
- spec/dynamic_inventory_hosts_childrens_spec.rb
|