ansible_spec 0.2.25 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -3
- data/CHANGELOG.md +7 -0
- data/Gemfile +5 -0
- data/README.md +1 -1
- data/ansible_spec.gemspec +2 -1
- data/lib/ansible_spec/load_ansible.rb +31 -3
- data/lib/ansible_spec/version.rb +1 -1
- data/lib/src/spec/spec_helper.rb +5 -4
- data/spec/case/load_vars_file/vault_dir/ansible.cfg +2 -0
- data/spec/case/load_vars_file/vault_dir/group_vars/all/vault_file +6 -0
- data/spec/case/load_vars_file/vault_dir/vault-password-file +1 -0
- data/spec/get_variable_spec.rb +29 -0
- data/spec/load_ansible_spec.rb +12 -4
- metadata +26 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 250f5355a569c40d24193b19685ecc4d5ad454aa7c60ff445b12503b81a6a23a
|
4
|
+
data.tar.gz: 3b72c2519bc7600ba81c789b07a3415ac1ebd286d23c0133bdc39dce93ccd47a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8f3fb9cc3861c77526ea9c8d24657550fa4ee1f0f1d74299660765721008af3fd00531b3045e4b72357d527ef6e02d94d3937ef1e486e7749a1d3173fd24f98
|
7
|
+
data.tar.gz: a0c3454aa81f7c374208ac78e7abd0e2fe95427080f6cd104230e9b22bcea981576c77fbe82bcec489873bf66d258bc420f7427f139053c37ebe2db7172b1ab4
|
data/.travis.yml
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
language: ruby
|
2
|
+
dist: trusty # work at Ubuntu 14.04 for install Ruby 1.9.3
|
2
3
|
sudo: false
|
3
4
|
rvm:
|
4
5
|
- 1.9.3
|
5
6
|
- 2.0.0
|
6
7
|
- 2.1.10
|
7
8
|
- 2.2.10
|
8
|
-
- 2.3.
|
9
|
-
- 2.4.
|
10
|
-
- 2.5.
|
9
|
+
- 2.3.8
|
10
|
+
- 2.4.6
|
11
|
+
- 2.5.5
|
12
|
+
- 2.6.3
|
13
|
+
- 2.7.0-preview1
|
11
14
|
script:
|
12
15
|
- rspec spec
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# v0.3
|
2
|
+
- Support Ansible Vault (Run Ruby 2.1.0 and higher.)
|
3
|
+
- Merge [#116 Feature ansible vault](https://github.com/volanja/ansible_spec/pull/116) by [RebelCodeBase](https://github.com/RebelCodeBase)
|
4
|
+
- Merge [#123 skip test at unsupported version ref ansible vault](https://github.com/volanja/ansible_spec/pull/123) by volanja
|
5
|
+
|
6
|
+
And Some Bug Fixed. See [Milestone v0.3](https://github.com/volanja/ansible_spec/milestone/13?closed=1)
|
7
|
+
|
1
8
|
# v0.2.25
|
2
9
|
- Merge [#118 Incorporate group parent child relationships into variable assignment hierarchy](https://github.com/volanja/ansible_spec/pull/118) by [rbramwell](https://github.com/rbramwell)
|
3
10
|
|
data/Gemfile
CHANGED
@@ -13,3 +13,8 @@ if Gem::Version.new(RUBY_VERSION.dup) <= Gem::Version.new('1.9.3')
|
|
13
13
|
# winrm 2.1.1 dropped Ruby 1.9 support.
|
14
14
|
gem 'winrm', '< 2.1.1'
|
15
15
|
end
|
16
|
+
|
17
|
+
if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1')
|
18
|
+
# Ansible::Vault support Ruby 2.1.0 and higher.
|
19
|
+
gem 'ansible-vault'
|
20
|
+
end
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ansible_spec
|
2
2
|
|
3
|
-
[![Gem Version](https://badge.fury.io/rb/ansible_spec.svg)](
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/ansible_spec.svg)](https://badge.fury.io/rb/ansible_spec)
|
4
4
|
[![Build Status](https://travis-ci.org/volanja/ansible_spec.svg?branch=master)](https://travis-ci.org/volanja/ansible_spec)
|
5
5
|
|
6
6
|
This is a Ruby gem that implements an Ansible Config Parser for Serverspec.
|
data/ansible_spec.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.add_development_dependency "bundler"
|
21
|
+
gem.add_development_dependency "bundler"
|
22
22
|
gem.add_development_dependency "rake"
|
23
23
|
gem.add_development_dependency "diff-lcs"
|
24
24
|
gem.add_development_dependency "simplecov"
|
@@ -28,5 +28,6 @@ Gem::Specification.new do |gem|
|
|
28
28
|
gem.add_runtime_dependency "oj"
|
29
29
|
gem.add_runtime_dependency "winrm"
|
30
30
|
gem.add_runtime_dependency "inifile"
|
31
|
+
gem.add_runtime_dependency "ansible-vault"
|
31
32
|
|
32
33
|
end
|
@@ -5,6 +5,9 @@ require 'open3'
|
|
5
5
|
require 'yaml'
|
6
6
|
require 'inifile'
|
7
7
|
require 'ansible_spec/vendor/hash'
|
8
|
+
if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1')
|
9
|
+
require 'ansible/vault'
|
10
|
+
end
|
8
11
|
|
9
12
|
module AnsibleSpec
|
10
13
|
# param: inventory file of Ansible
|
@@ -158,6 +161,7 @@ module AnsibleSpec
|
|
158
161
|
# 初期値
|
159
162
|
host['name'] = line
|
160
163
|
host['port'] = 22
|
164
|
+
host['connection'] = "ssh"
|
161
165
|
if line.include?(":") # 192.168.0.1:22
|
162
166
|
host['uri'] = line.split(":")[0]
|
163
167
|
host['port'] = line.split(":")[1].to_i
|
@@ -365,15 +369,39 @@ module AnsibleSpec
|
|
365
369
|
if File.directory?(vars_file)
|
366
370
|
Dir.glob(File.join(vars_file, '*')).each { |f|
|
367
371
|
vars = load_vars_file(vars, f)
|
368
|
-
|
372
|
+
}
|
369
373
|
else
|
370
|
-
|
371
|
-
|
374
|
+
# you can use Ansible::Vault when use ruby 2.1.0 and higher.
|
375
|
+
# Ansible::Vault support Ruby 2.1.0 and higher.
|
376
|
+
if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1')
|
377
|
+
if Ansible::Vault.encrypted?(vars_file)
|
378
|
+
yaml = load_encrypted_file(vars_file)
|
379
|
+
else
|
380
|
+
yaml = YAML.load_file(vars_file)
|
381
|
+
end
|
382
|
+
vars = merge_variables(vars, yaml)
|
383
|
+
else
|
384
|
+
# Ruby 1.9 and 2.0
|
385
|
+
yaml = YAML.load_file(vars_file)
|
386
|
+
vars = merge_variables(vars, yaml)
|
387
|
+
end
|
372
388
|
end
|
373
389
|
end
|
374
390
|
return vars
|
375
391
|
end
|
376
392
|
|
393
|
+
# param: variable file
|
394
|
+
# return: be merged hash
|
395
|
+
def self.load_encrypted_file(vars_file)
|
396
|
+
cfg = AnsibleSpec::AnsibleCfg.new
|
397
|
+
vault_password_file = cfg.get('defaults', 'vault_password_file')
|
398
|
+
if vault_password_file
|
399
|
+
vault_password = File.open(vault_password_file).read.chomp
|
400
|
+
yaml = YAML.load(Ansible::Vault.read(path: vars_file, password: vault_password))
|
401
|
+
end
|
402
|
+
return yaml
|
403
|
+
end
|
404
|
+
|
377
405
|
# param: target hash
|
378
406
|
# param: be merged hash
|
379
407
|
def self.merge_variables(vars, hash)
|
data/lib/ansible_spec/version.rb
CHANGED
data/lib/src/spec/spec_helper.rb
CHANGED
@@ -23,15 +23,16 @@ when 'ssh'
|
|
23
23
|
#
|
24
24
|
set :backend, :ssh
|
25
25
|
|
26
|
+
# Ansible use `BECOME`, But Serverspec use `SUDO`.
|
26
27
|
if ENV['ASK_BECOME_PASSWORD']
|
27
28
|
begin
|
28
29
|
require 'highline/import'
|
29
30
|
rescue LoadError
|
30
31
|
fail "highline is not available. Try installing it."
|
31
32
|
end
|
32
|
-
set :
|
33
|
+
set :sudo_password, ask("Enter become password: ") { |q| q.echo = false }
|
33
34
|
else
|
34
|
-
set :
|
35
|
+
set :sudo_password, ENV['BECOME_PASSWORD']
|
35
36
|
end
|
36
37
|
|
37
38
|
options = Net::SSH::Config.for(host)
|
@@ -48,8 +49,8 @@ when 'ssh'
|
|
48
49
|
set :host, options[:host_name] || host
|
49
50
|
set :ssh_options, options
|
50
51
|
|
51
|
-
# Disable become
|
52
|
-
# set :
|
52
|
+
# Disable become (Serverspec use sudo)
|
53
|
+
# set :disable_sudo, true
|
53
54
|
|
54
55
|
|
55
56
|
# Set environment variables
|
@@ -0,0 +1,6 @@
|
|
1
|
+
$ANSIBLE_VAULT;1.1;AES256
|
2
|
+
33623930383865383331633337653461646233633934353935376363306265636331363565306532
|
3
|
+
3935313131623364363162616335333530376134383137350a376231363430353963646535313335
|
4
|
+
36383533346433306666623162663335353035333931366162353131383539643239646637333561
|
5
|
+
3963386635663534310a323134643666343962303733616263613535623965366337393666623832
|
6
|
+
3032
|
@@ -0,0 +1 @@
|
|
1
|
+
supersecretpassword
|
data/spec/get_variable_spec.rb
CHANGED
@@ -638,4 +638,33 @@ describe "load_vars_fileの実行" do
|
|
638
638
|
end
|
639
639
|
end
|
640
640
|
|
641
|
+
# Ansible::Vault support Ruby 2.1.0 and higher.
|
642
|
+
# Skip test when Ruby 1.9.3 & 2.0.0
|
643
|
+
if Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.1')
|
644
|
+
context 'Correct operation : vaults in directory' do
|
645
|
+
before do
|
646
|
+
@current_dir = Dir.pwd()
|
647
|
+
Dir.chdir('spec/case/load_vars_file/vault_dir/')
|
648
|
+
vars = Hash.new
|
649
|
+
file = 'group_vars/all'
|
650
|
+
@res = AnsibleSpec.load_vars_file(vars, file)
|
651
|
+
end
|
652
|
+
|
653
|
+
it 'res is hash' do
|
654
|
+
expect(@res.instance_of?(Hash)).to be_truthy
|
655
|
+
end
|
656
|
+
|
657
|
+
it 'exists one pair in Hash' do
|
658
|
+
expect(@res.length).to eq 1
|
659
|
+
end
|
660
|
+
|
661
|
+
it 'exists the pair' do
|
662
|
+
expect(@res).to include({'vault_var' => 'val'})
|
663
|
+
end
|
664
|
+
|
665
|
+
after do
|
666
|
+
Dir.chdir(@current_dir)
|
667
|
+
end
|
668
|
+
end
|
669
|
+
end
|
641
670
|
end
|
data/spec/load_ansible_spec.rb
CHANGED
@@ -1531,16 +1531,20 @@ EOF
|
|
1531
1531
|
expect(@res[0]['hosts'].instance_of?(Array)).to be_truthy
|
1532
1532
|
expect([{'name' => '192.168.0.103',
|
1533
1533
|
'uri' => '192.168.0.103',
|
1534
|
-
'port' => 22
|
1534
|
+
'port' => 22,
|
1535
|
+
'connection' => 'ssh'},
|
1535
1536
|
{'name' => '192.168.0.104',
|
1536
1537
|
'uri' => '192.168.0.104',
|
1537
|
-
'port' => 22
|
1538
|
+
'port' => 22,
|
1539
|
+
'connection' => 'ssh'},
|
1538
1540
|
{'name' => '192.168.0.105',
|
1539
1541
|
'uri' => '192.168.0.105',
|
1540
|
-
'port' => 22
|
1542
|
+
'port' => 22,
|
1543
|
+
'connection' => 'ssh'},
|
1541
1544
|
{'name' => '192.168.0.106',
|
1542
1545
|
'uri' => '192.168.0.106',
|
1543
|
-
'port' => 22
|
1546
|
+
'port' => 22,
|
1547
|
+
'connection' => 'ssh'}]).to match_array(@res[0]['hosts'])
|
1544
1548
|
end
|
1545
1549
|
|
1546
1550
|
it 'exist user' do
|
@@ -1676,18 +1680,22 @@ EOF
|
|
1676
1680
|
expect([{'name' => '192.168.0.103',
|
1677
1681
|
'uri' => '192.168.0.103',
|
1678
1682
|
'port' => 22,
|
1683
|
+
'connection' => 'ssh',
|
1679
1684
|
'hosts'=>'server'},
|
1680
1685
|
{'name' => '192.168.0.104',
|
1681
1686
|
'uri' => '192.168.0.104',
|
1682
1687
|
'port' => 22,
|
1688
|
+
'connection' => 'ssh',
|
1683
1689
|
'hosts'=>'server'},
|
1684
1690
|
{'name' => '192.168.0.105',
|
1685
1691
|
'uri' => '192.168.0.105',
|
1686
1692
|
'port' => 22,
|
1693
|
+
'connection' => 'ssh',
|
1687
1694
|
'hosts'=>'server2'},
|
1688
1695
|
{'name' => '192.168.0.106',
|
1689
1696
|
'uri' => '192.168.0.106',
|
1690
1697
|
'port' => 22,
|
1698
|
+
'connection' => 'ssh',
|
1691
1699
|
'hosts'=>'server2'}]).to match_array(@res[0]['hosts'])
|
1692
1700
|
end
|
1693
1701
|
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ansible_spec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- volanja
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: ansible-vault
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :runtime
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
139
153
|
description: Ansible Config Parser for Serverspec. Run test Multi Role and Multi Host
|
140
154
|
by Ansible Configuration
|
141
155
|
email:
|
@@ -310,6 +324,9 @@ files:
|
|
310
324
|
- spec/case/load_vars_file/group_all_deep_merge/group_vars/all.yml
|
311
325
|
- spec/case/load_vars_file/vars_dir/group_vars/all/file1
|
312
326
|
- spec/case/load_vars_file/vars_dir/group_vars/all/file2
|
327
|
+
- spec/case/load_vars_file/vault_dir/ansible.cfg
|
328
|
+
- spec/case/load_vars_file/vault_dir/group_vars/all/vault_file
|
329
|
+
- spec/case/load_vars_file/vault_dir/vault-password-file
|
313
330
|
- spec/commands_spec.rb
|
314
331
|
- spec/dependency_spec.rb
|
315
332
|
- spec/dynamic_inventory_hosts_childrens_spec.rb
|
@@ -497,6 +514,9 @@ test_files:
|
|
497
514
|
- spec/case/load_vars_file/group_all_deep_merge/group_vars/all.yml
|
498
515
|
- spec/case/load_vars_file/vars_dir/group_vars/all/file1
|
499
516
|
- spec/case/load_vars_file/vars_dir/group_vars/all/file2
|
517
|
+
- spec/case/load_vars_file/vault_dir/ansible.cfg
|
518
|
+
- spec/case/load_vars_file/vault_dir/group_vars/all/vault_file
|
519
|
+
- spec/case/load_vars_file/vault_dir/vault-password-file
|
500
520
|
- spec/commands_spec.rb
|
501
521
|
- spec/dependency_spec.rb
|
502
522
|
- spec/dynamic_inventory_hosts_childrens_spec.rb
|