sambot 0.1.171 → 0.1.172
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/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
|