sambot 0.1.171 → 0.1.172
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sambot.rb +3 -0
- data/lib/sambot/chef/cookbook.rb +2 -7
- data/lib/sambot/cli.rb +14 -0
- data/lib/sambot/templates/bootstrap_scripts/local/sidecar_vault/bootstrap.sh.erb +19 -5
- data/lib/sambot/testing/consul_helper.rb +15 -0
- data/lib/sambot/testing/vault_helper.rb +62 -0
- data/lib/sambot/version.rb +1 -1
- data/sambot.gemspec +1 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 628d48236e3e996ef6f94921ad3757df406bceb4
|
4
|
+
data.tar.gz: 1fbf9c147b85d8678cef0eb7502850db091cb6cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b37a2a22495762bd5358ca30136aa467e1d40cdec9220ee43dc2a0dbc99a38d50709352a5d8fdb328d0561526210f81d1d14fcd2ecddd7a3aeaf0d76f3de754
|
7
|
+
data.tar.gz: 859afcc95326d0576b678bb024ec68e3bdda8d17e414ffad89fec4a8fe8a16038d310198a648b4fa281ec352c85426c1865bc1b2a271bae1fc2ce75ee02b2dc8
|
data/lib/sambot.rb
CHANGED
@@ -8,6 +8,9 @@ require_relative 'sambot/version'
|
|
8
8
|
require_relative 'sambot/template'
|
9
9
|
require_relative 'sambot/fs'
|
10
10
|
|
11
|
+
require_relative 'sambot/testing/consul_helper'
|
12
|
+
require_relative 'sambot/testing/vault_helper'
|
13
|
+
|
11
14
|
require_relative 'sambot/chef/kitchen'
|
12
15
|
require_relative 'sambot/chef/metadata'
|
13
16
|
require_relative 'sambot/chef/hooks'
|
data/lib/sambot/chef/cookbook.rb
CHANGED
@@ -56,17 +56,12 @@ module Sambot
|
|
56
56
|
|
57
57
|
def create_files(config)
|
58
58
|
['.vault.yml', '.consul.yml', 'README.md'].each { |resource| FS.copy(resource) unless FS.exist?(resource) }
|
59
|
-
['spec', 'test', 'attributes', '
|
59
|
+
['spec', 'test', 'attributes', 'vault'].each { |resource| FS.mkdir(resource) unless FS.exist?(resource) }
|
60
60
|
Dir.chdir('attributes') { FileUtils.touch('default.rb') }
|
61
61
|
Dir.chdir('spec') { FS.copy('spec_helper.rb') unless FS.exist?('spec_helper.rb') }
|
62
|
-
Dir.chdir('local') do
|
63
|
-
FS.mkdir('vault') unless FS.exist?('vault')
|
64
|
-
Dir.chdir('vault') { FS.copy('vault_helper.rb') }
|
65
|
-
FS.mkdir('consul') unless FS.exist?('consul')
|
66
|
-
Dir.chdir('consul') { FS.copy('consul_helper.rb')}
|
67
|
-
end
|
68
62
|
['recipes', 'libraries', 'resources', 'files', 'templates'].each { |target| FS.mkdir(target) unless FS.exist?(target) }
|
69
63
|
Dir.chdir('recipes') do
|
64
|
+
# Need to correctly generate default.rb
|
70
65
|
FileUtils.touch('install.rb') unless FS.exist?('install.rb')
|
71
66
|
FileUtils.touch('configure.rb') unless FS.exist?('configure.rb')
|
72
67
|
FileUtils.touch('default.rb') unless FS.exist?('default.rb')
|
data/lib/sambot/cli.rb
CHANGED
@@ -10,6 +10,20 @@ module Sambot
|
|
10
10
|
execute { Chef::Cookbook.clean() }
|
11
11
|
end
|
12
12
|
|
13
|
+
desc 'populate', 'Populates either Vault or Consul with seed data'
|
14
|
+
option :vault, :type => :boolean
|
15
|
+
option :consul, :type => :boolean
|
16
|
+
def populate
|
17
|
+
execute do
|
18
|
+
unless options[:vault] || options[:consul]
|
19
|
+
UI.error('Please select the datastore you are populating from the following: --vault or --consul')
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
Sambot::Testing::VaultHelper.load_secrets if options[:vault]
|
23
|
+
Sambot::Testing::ConsulHelper.load_values if options[:consul]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
13
27
|
desc 'bump', 'Bump the patch version of a cookbook'
|
14
28
|
def bump
|
15
29
|
execute { Chef::Cookbook.bump() }
|
@@ -1,17 +1,30 @@
|
|
1
1
|
#!/bin/bash -e
|
2
2
|
|
3
|
-
|
3
|
+
cd /tmp
|
4
|
+
|
5
|
+
## Install required tools
|
4
6
|
sudo yum install -y unzip wget
|
7
|
+
|
8
|
+
## Download and install Hashicorp Vault
|
5
9
|
wget "https://releases.hashicorp.com/vault/0.6.5/vault_0.6.5_linux_amd64.zip"
|
6
10
|
unzip vault_0.6.5_linux_amd64.zip -d /usr/bin
|
7
11
|
sudo mkdir /etc/vault
|
8
12
|
|
13
|
+
## Download and install Hashicorp Consul
|
14
|
+
wget "https://releases.hashicorp.com/consul/0.8.5/consul_0.8.5_linux_amd64.zip"
|
15
|
+
unzip consul_0.8.5_linux_amd64.zip -d /usr/bin
|
16
|
+
sudo mkdir /etc/consul
|
17
|
+
|
18
|
+
## Launch the Consul Agent in Development mode
|
19
|
+
consul -dev -server -bootstrap
|
20
|
+
|
9
21
|
## Launch the Vault Server in Development mode
|
10
22
|
export VAULT_ADDR="http://127.0.0.1:8200"
|
11
23
|
export VAULT_TOKEN="root"
|
12
24
|
vault server -dev -dev-root-token-id=${VAULT_TOKEN} -dev-listen-address=0.0.0.0:8200 < /dev/null &> /dev/null &
|
25
|
+
vault mount -path=dev generic
|
13
26
|
|
14
|
-
## Create the addressing file so that Chef and other
|
27
|
+
## Create the addressing file so that Chef and other applications can access the Vault server
|
15
28
|
cat << EOF > /etc/vault/tokens.json
|
16
29
|
{
|
17
30
|
"vault-addr": "${VAULT_ADDR}",
|
@@ -24,8 +37,9 @@ EOF
|
|
24
37
|
## Install Ruby
|
25
38
|
sudo yum install -y ruby
|
26
39
|
|
27
|
-
## Install
|
28
|
-
gem install
|
40
|
+
## Install Sambot
|
41
|
+
gem install sambot
|
29
42
|
|
30
43
|
## Populate Vault
|
31
|
-
|
44
|
+
cd /vagrant
|
45
|
+
sambot populate --vault
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'vault'
|
3
|
+
|
4
|
+
module Sambot
|
5
|
+
module Testing
|
6
|
+
class VaultHelper
|
7
|
+
|
8
|
+
class << self
|
9
|
+
|
10
|
+
def load_secrets(filename = '.vault.yml', src = 'vault')
|
11
|
+
if File.exist?(filename)
|
12
|
+
read_secrets(filename, src)
|
13
|
+
else
|
14
|
+
UI.info("No secrets configuration file is available so Vault was not populated with any secrets")
|
15
|
+
return 0
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def read_secrets(filename, src)
|
22
|
+
UI.info("Reading the secrets configuration file")
|
23
|
+
contents = File.read(filename)
|
24
|
+
if contents.empty?
|
25
|
+
UI.info("No secrets were found in the secrets configuration file")
|
26
|
+
return 0
|
27
|
+
else
|
28
|
+
store_secrets(contents, src)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def store_secrets(contents, src)
|
33
|
+
secrets = YAML.load(contents)
|
34
|
+
counter = 0
|
35
|
+
secrets.each do |secret|
|
36
|
+
secret['keys'].each do |item|
|
37
|
+
store_secret(src, secret['path'], item.keys[0], item.values[0])
|
38
|
+
counter = counter + 1
|
39
|
+
end
|
40
|
+
end
|
41
|
+
counter
|
42
|
+
end
|
43
|
+
|
44
|
+
def store_secret(src, path, key, value)
|
45
|
+
if value.start_with?('file::')
|
46
|
+
filename = value.gsub(/file::/, '')
|
47
|
+
location = File.expand_path(File.join(src, filename))
|
48
|
+
value = File.read(location)
|
49
|
+
end
|
50
|
+
write_to_vault(path, key, value)
|
51
|
+
UI.info("Updated the secret with key '#{key}' located at '#{path}'")
|
52
|
+
end
|
53
|
+
|
54
|
+
def write_to_vault(path, key, value)
|
55
|
+
Vault.logical.write(path, "#{key}".to_sym => value)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/sambot/version.rb
CHANGED
data/sambot.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_dependency 'net-ssh'
|
31
31
|
spec.add_dependency 'titan'
|
32
32
|
spec.add_dependency 'open4'
|
33
|
+
spec.add_dependency 'diplomat'
|
33
34
|
spec.add_dependency 'semantic'
|
34
35
|
spec.add_dependency 'chef', '~> 12.18'
|
35
36
|
spec.add_dependency 'thor', '~> 0.19'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sambot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.172
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Olivier Kouame
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor-hollaback
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: diplomat
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: semantic
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -468,6 +482,8 @@ files:
|
|
468
482
|
- lib/sambot/templates/test_kitchen/rackspace.yml.erb
|
469
483
|
- lib/sambot/templates/vault_helper.rb
|
470
484
|
- lib/sambot/templates/winrm_config
|
485
|
+
- lib/sambot/testing/consul_helper.rb
|
486
|
+
- lib/sambot/testing/vault_helper.rb
|
471
487
|
- lib/sambot/ui.rb
|
472
488
|
- lib/sambot/version.rb
|
473
489
|
- lib/sambot/workflow/brew.rb
|