sambot 0.1.69 → 0.1.83

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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sambot/cli.rb +16 -18
  3. data/lib/sambot/commands/cookbook.rb +56 -38
  4. data/lib/sambot/commands/packer.rb +21 -0
  5. data/lib/sambot/commands/session.rb +15 -5
  6. data/lib/sambot/commands/workstation.rb +8 -10
  7. data/lib/sambot/domain/bastion_host.rb +59 -0
  8. data/lib/sambot/domain/chef/kitchen.rb +39 -0
  9. data/lib/sambot/domain/{cookbooks → chef}/metadata.rb +6 -5
  10. data/lib/sambot/domain/common/{application_exception.rb → application_error.rb} +1 -1
  11. data/lib/sambot/domain/common/config.rb +13 -6
  12. data/lib/sambot/domain/common/file_checker.rb +3 -2
  13. data/lib/sambot/domain/common/runtime.rb +5 -5
  14. data/lib/sambot/domain/common/template_provider.rb +1 -1
  15. data/lib/sambot/domain/cookbook.rb +103 -0
  16. data/lib/sambot/domain/dns.rb +24 -0
  17. data/lib/sambot/domain/packer.rb +26 -0
  18. data/lib/sambot/domain/session.rb +25 -0
  19. data/lib/sambot/domain/{workstations/ssh_config_file.rb → ssh/config_file.rb} +7 -7
  20. data/lib/sambot/domain/{workstations/ssh_config_section.rb → ssh/config_section.rb} +2 -2
  21. data/lib/sambot/domain/{workstations/ssh_parser.rb → ssh/parser.rb} +8 -7
  22. data/lib/sambot/domain/ui.rb +19 -0
  23. data/lib/sambot/domain/vault.rb +32 -0
  24. data/lib/sambot/domain/workstation.rb +25 -0
  25. data/lib/sambot/templates/{.kitchen.gcp.windows.yml → .kitchen.gcp.yml.erb} +33 -5
  26. data/lib/sambot/templates/.kitchen.rackspace.yml.erb +49 -0
  27. data/lib/sambot/templates/{.kitchen.centos.yml → .kitchen.yml.erb} +6 -1
  28. data/lib/sambot/templates/metadata.rb.erb +9 -2
  29. data/lib/sambot/templates/packer.linux.json +22 -0
  30. data/lib/sambot/templates/packer.windows.json.erb +18 -0
  31. data/lib/sambot/templates/teamcity.sh.erb +7 -7
  32. data/lib/sambot/version.rb +1 -1
  33. data/sambot.gemspec +7 -1
  34. metadata +120 -36
  35. data/lib/sambot/commands/secret.rb +0 -32
  36. data/lib/sambot/commands/teamcity.rb +0 -15
  37. data/lib/sambot/domain/common/ui.rb +0 -21
  38. data/lib/sambot/domain/cookbooks/assistant_chef.rb +0 -103
  39. data/lib/sambot/domain/cookbooks/kitchen.rb +0 -30
  40. data/lib/sambot/domain/secrets/vault.rb +0 -28
  41. data/lib/sambot/domain/workstations/env.rb +0 -0
  42. data/lib/sambot/domain/workstations/hosts.rb +0 -0
  43. data/lib/sambot/domain/workstations/install.sh +0 -1
  44. data/lib/sambot/templates/.kitchen.gcp.centos.yml +0 -39
  45. data/lib/sambot/templates/.kitchen.rackspace.centos.yml +0 -27
  46. data/lib/sambot/templates/.kitchen.rackspace.windows.yml +0 -34
  47. data/lib/sambot/templates/.kitchen.windows.yml +0 -16
@@ -0,0 +1,49 @@
1
+ ---
2
+ provisioner:
3
+ name: chef_zero
4
+ log_level: _@= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' @_
5
+ deprecations_as_errors: true
6
+ require_chef_omnibus: 12
7
+ cookbooks_path:
8
+ - .
9
+
10
+ platforms:
11
+ <% if @platforms.include?('centos') %>
12
+ - name: centos
13
+ transport:
14
+ ssh_key: ./id_rsa
15
+ driver:
16
+ name: rackspace
17
+ rackconnect_wait: true
18
+ servicenet: true
19
+ require_chef_omnibus: true
20
+ no_ssh_tcp_check: true
21
+ no_ssh_tcp_check_sleep: 240
22
+ image_id: 398c5f65-23e2-44da-97d8-d28ff5ec583b
23
+ flavor_id: 6
24
+ public_key_path: ./id_rsa.pub
25
+ rackspace_region: 'lon'
26
+ server_name: @@cookbook_name@@-_@ Time.now.to_i @_
27
+ <% end %>
28
+ <% if @platforms.include?('windows') %>
29
+ - name: windows
30
+ driver:
31
+ name: rax
32
+ log_level: info
33
+ wait_for: 3600
34
+ use_private_ip: _@= ENV['IN_CI_PIPELINE'] @_
35
+ rackspace_username: _@= ENV['RACKSPACE_USERNAME'] @_
36
+ rackspace_api_key: _@= ENV['RACKSPACE_API_KEY'] @_
37
+ network: _@= ENV['NETWORK'] || 'public' @_
38
+ image_id: 8bfada8f-9917-46dd-aa82-be533d5279fa
39
+ flavor_id: general1-4
40
+ rackspace_region: LON
41
+ rackconnect_wait: true
42
+ platform: windows
43
+ user_data: winrm_config
44
+ <% end %>
45
+
46
+ verifier:
47
+ name: inspec
48
+ format: junit
49
+ output: inspec_results.xml
@@ -5,12 +5,17 @@ driver:
5
5
  provisioner:
6
6
  name: chef_zero
7
7
  log_level: info
8
- deprecations_as_errors: true
8
+ require_chef_omnibus: 12
9
9
  cookbooks_path:
10
10
  - .
11
11
 
12
12
  platforms:
13
+ <% if @platforms.include?('centos') %>
13
14
  - name: "centos-7.2"
15
+ <% end %>
16
+ <% if @platforms.include?('windows') %>
17
+ - name: "windows"
18
+ <% end %>
14
19
 
15
20
  verifier:
16
21
  name: inspec
@@ -5,12 +5,19 @@ license 'All rights reserved'
5
5
  description '<%= @cookbook_description %>'
6
6
  long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
7
7
  version '<%= @cookbook_version %>'
8
- chef_version '>=12'
8
+ chef_version '~> 12'
9
9
  issues_url 'https://github.exacttarget.com/ads-cookbooks/<%= @cookbook_name %>/issues'
10
10
  source_url 'https://github.exacttarget.com/ads-cookbooks/<%= @cookbook_name %>'
11
- supports '<%= @cookbook_platform %>'
11
+ <% @cookbook_platforms.each do |platform| %>
12
+ supports '<%= platform %>'
13
+ <% end %>
12
14
  <% if @cookbook_dependencies %>
13
15
  <% @cookbook_dependencies.each do |dependency| %>
14
16
  depends '<%= dependency %>'
15
17
  <% end %>
16
18
  <% end %>
19
+ <% if @cookbook_gems %>
20
+ <% @cookbook_gems.each do |gem_dependency| %>
21
+ gem '<%= gem_dependency %>'
22
+ <% end %>
23
+ <% end %>
@@ -0,0 +1,22 @@
1
+ {
2
+ "variables": {
3
+ "as_project_id": "{{env `GCP_PROJECT`}}",
4
+ "as_source_image_family": "{{env `GCP_CENTOS_IMAGE_FAMILY`}}",
5
+ "as_zone": "{{env `GCP_REGION`}}",
6
+ "as_cookbook_name": "{{env `COOKBOOK_NAME`}}",
7
+ "as_account_file": "{{env `GOOGLE_APPLICATION_CREDENTIALS`}}",
8
+ "as_source_image_project_id": "{{env `GCP_CENTOS_IMAGE_PROJECT`}}",
9
+ },
10
+ "builders": [
11
+ {
12
+ "type": "googlecompute",
13
+ "account_file": "{{user `as_account_file`}}",
14
+ "image_family": "{{user `as_cookbook_name`}}",
15
+ "image_name": "{{env `COOKBOOK_NAME`}}-@@cookbook_name@@",
16
+ "project_id": "{{user `as_project_id`}}",
17
+ "source_image_family": "{{user `as_source_image_family`}}",
18
+ "source_image_project_id": "{{user `as_source_image_project_id`}}",
19
+ "zone": "{{user `as_zone`}}"
20
+ }
21
+ ]
22
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "builders": [{
3
+ "type": "googlecompute",
4
+ "account_file": "account.json",
5
+ "project_id": "my project",
6
+ "source_image": "windows-server-2016-dc-v20170227",
7
+ "disk_size": "50",
8
+ "machine_type": "n1-standard-1",
9
+ "communicator": "winrm",
10
+ "winrm_username": "packer_user",
11
+ "winrm_insecure": true,
12
+ "winrm_use_ssl": true,
13
+ "metadata": {
14
+ "windows-startup-script-cmd": "winrm quickconfig -quiet & net user /add packer_user & net localgroup administrators packer_user /add & winrm set winrm/config/service/auth @{Basic=\"true\"}"
15
+ },
16
+ "zone": "us-central1-a"
17
+ }]
18
+ }
@@ -10,22 +10,22 @@ chef exec rspec spec --col
10
10
  set +e
11
11
 
12
12
  <% if ENV['TEST_KITCHEN_ACTION'] == 'converge' %>
13
- chef exec kitchen converge -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
13
+ chef exec kitchen converge <%= ENV['TEST_KITCHEN_PLATFORM'] || '' %> -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
14
14
  <% elsif ENV['TEST_KITCHEN_ACTION'] == 'create' %>
15
- chef exec kitchen create -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
15
+ chef exec kitchen create <%= ENV['TEST_KITCHEN_PLATFORM'] || '' %> -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
16
16
  <% elsif ENV['TEST_KITCHEN_ACTION'] == 'multi-step-test' %>
17
- chef exec kitchen converge -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
18
- chef exec kitchen verify -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
19
- chef exec kitchen destroy -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
17
+ chef exec kitchen converge <%= ENV['TEST_KITCHEN_PLATFORM'] || '' %> -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
18
+ chef exec kitchen verify <%= ENV['TEST_KITCHEN_PLATFORM'] || '' %> -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
19
+ chef exec kitchen destroy <%= ENV['TEST_KITCHEN_PLATFORM'] || '' %> -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
20
20
  <% else %>
21
- chef exec kitchen test -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
21
+ chef exec kitchen test <%= ENV['TEST_KITCHEN_PLATFORM'] || '' %> -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
22
22
  RETVAL=$?
23
23
  if [ $RETVAL -eq 0 ] ; then
24
24
  echo "Test Kitchen converged and all tests passed - Ready to upload to server"
25
25
  exit $RETVAL
26
26
  elif [ $RETVAL -ne 0 ] ; then
27
27
  echo "Test Kitchen failed - cleaning up"
28
- kitchen destroy
28
+ kitchen destroy <%= ENV['TEST_KITCHEN_PLATFORM'] || '' %> -l <%= ENV['TEST_KITCHEN_LOG_LEVEL'] || 'info' %>
29
29
  exit $RETVAL
30
30
  fi
31
31
  <% end %>
@@ -1,3 +1,3 @@
1
1
  module Sambot
2
- VERSION = '0.1.69'.freeze
2
+ VERSION = '0.1.83'.freeze
3
3
  end
data/sambot.gemspec CHANGED
@@ -20,14 +20,20 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_dependency 'git'
23
+ spec.add_dependency 'process_exists'
24
+ spec.add_dependency 'climate_control'
25
+ spec.add_dependency 'vault'
26
+ spec.add_dependency 'hosts'
23
27
  spec.add_dependency 'chef', '~> 12.18'
24
28
  spec.add_dependency 'thor', '~> 0.19'
25
29
  spec.add_dependency 'erubis', '~> 2.7', '>= 2.7.0'
26
30
  spec.add_dependency 'gems', '~> 1.0', '>= 1.0.0'
31
+ spec.add_development_dependency 'aruba'
32
+ spec.add_dependency 'awesome_print'
33
+ spec.add_development_dependency 'fuubar'
27
34
  spec.add_development_dependency 'rubocop', '~> 0.49'
28
35
  spec.add_development_dependency 'gem-release', '~> 1.0'
29
36
  spec.add_development_dependency 'bundler', '~> 1.14'
30
- spec.add_development_dependency 'climate_control'
31
37
  spec.add_development_dependency 'rake', '~> 10.0'
32
38
  spec.add_development_dependency 'rspec', '~> 3.0'
33
39
  end
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.69
4
+ version: 0.1.83
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-06-01 00:00:00.000000000 Z
11
+ date: 2017-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git
@@ -24,6 +24,62 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: process_exists
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: climate_control
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: vault
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: hosts
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
27
83
  - !ruby/object:Gem::Dependency
28
84
  name: chef
29
85
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +148,48 @@ dependencies:
92
148
  - - ">="
93
149
  - !ruby/object:Gem::Version
94
150
  version: 1.0.0
151
+ - !ruby/object:Gem::Dependency
152
+ name: aruba
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: awesome_print
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :runtime
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: fuubar
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
95
193
  - !ruby/object:Gem::Dependency
96
194
  name: rubocop
97
195
  requirement: !ruby/object:Gem::Requirement
@@ -134,20 +232,6 @@ dependencies:
134
232
  - - "~>"
135
233
  - !ruby/object:Gem::Version
136
234
  version: '1.14'
137
- - !ruby/object:Gem::Dependency
138
- name: climate_control
139
- requirement: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: '0'
144
- type: :development
145
- prerelease: false
146
- version_requirements: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- version: '0'
151
235
  - !ruby/object:Gem::Dependency
152
236
  name: rake
153
237
  requirement: !ruby/object:Gem::Requirement
@@ -204,37 +288,37 @@ files:
204
288
  - lib/sambot.rb
205
289
  - lib/sambot/cli.rb
206
290
  - lib/sambot/commands/cookbook.rb
207
- - lib/sambot/commands/secret.rb
291
+ - lib/sambot/commands/packer.rb
208
292
  - lib/sambot/commands/session.rb
209
- - lib/sambot/commands/teamcity.rb
210
293
  - lib/sambot/commands/workstation.rb
211
- - lib/sambot/domain/common/application_exception.rb
294
+ - lib/sambot/domain/bastion_host.rb
295
+ - lib/sambot/domain/chef/kitchen.rb
296
+ - lib/sambot/domain/chef/metadata.rb
297
+ - lib/sambot/domain/common/application_error.rb
212
298
  - lib/sambot/domain/common/config.rb
213
299
  - lib/sambot/domain/common/file_checker.rb
214
300
  - lib/sambot/domain/common/runtime.rb
215
301
  - lib/sambot/domain/common/template_provider.rb
216
- - lib/sambot/domain/common/ui.rb
217
- - lib/sambot/domain/cookbooks/assistant_chef.rb
218
- - lib/sambot/domain/cookbooks/kitchen.rb
219
- - lib/sambot/domain/cookbooks/metadata.rb
220
- - lib/sambot/domain/secrets/vault.rb
221
- - lib/sambot/domain/workstations/env.rb
222
- - lib/sambot/domain/workstations/hosts.rb
223
- - lib/sambot/domain/workstations/install.sh
224
- - lib/sambot/domain/workstations/ssh_config_file.rb
225
- - lib/sambot/domain/workstations/ssh_config_section.rb
226
- - lib/sambot/domain/workstations/ssh_parser.rb
302
+ - lib/sambot/domain/cookbook.rb
303
+ - lib/sambot/domain/dns.rb
304
+ - lib/sambot/domain/packer.rb
305
+ - lib/sambot/domain/session.rb
306
+ - lib/sambot/domain/ssh/config_file.rb
307
+ - lib/sambot/domain/ssh/config_section.rb
308
+ - lib/sambot/domain/ssh/parser.rb
309
+ - lib/sambot/domain/ui.rb
310
+ - lib/sambot/domain/vault.rb
311
+ - lib/sambot/domain/workstation.rb
227
312
  - lib/sambot/templates/.gitignore
228
- - lib/sambot/templates/.kitchen.centos.yml
229
- - lib/sambot/templates/.kitchen.gcp.centos.yml
230
- - lib/sambot/templates/.kitchen.gcp.windows.yml
231
- - lib/sambot/templates/.kitchen.rackspace.centos.yml
232
- - lib/sambot/templates/.kitchen.rackspace.windows.yml
233
- - lib/sambot/templates/.kitchen.windows.yml
313
+ - lib/sambot/templates/.kitchen.gcp.yml.erb
314
+ - lib/sambot/templates/.kitchen.rackspace.yml.erb
315
+ - lib/sambot/templates/.kitchen.yml.erb
234
316
  - lib/sambot/templates/.rubocop.yml
235
317
  - lib/sambot/templates/Berksfile
236
318
  - lib/sambot/templates/chefignore
237
319
  - lib/sambot/templates/metadata.rb.erb
320
+ - lib/sambot/templates/packer.linux.json
321
+ - lib/sambot/templates/packer.windows.json.erb
238
322
  - lib/sambot/templates/pre-push
239
323
  - lib/sambot/templates/startup-script.ps1
240
324
  - lib/sambot/templates/teamcity.sh.erb
@@ -1,32 +0,0 @@
1
-
2
- module Sambot
3
- module Commands
4
-
5
- class Secret < Thor
6
-
7
- namespace 'secret'
8
-
9
- desc 'read PATH', 'Reads a secret from the vault'
10
- long_desc <<-LONGDESC
11
- `sambot secret read /path/to/my/secret` will read the secret located in the
12
- path provided out of Hashicorp Vault. It relies on a proprietary tool written
13
- by the Advertising Studio Platform Engineering team called as-vault. Make sure
14
- you have this tool installed before using this command.
15
- LONGDESC
16
- def read(path)
17
- Sambot::Vault.new.read(path)
18
- end
19
-
20
- desc 'write', 'Write a secret to the vault'
21
- def write
22
- Sambot::Vault.new.write(path)
23
- end
24
-
25
- desc 'list', 'List all secrets at a given path'
26
- def list
27
- Sambot::Vault.new.list(path)
28
- end
29
-
30
- end
31
- end
32
- end
@@ -1,15 +0,0 @@
1
- module Sambot
2
- module Commands
3
-
4
- class TeamCity < Thor
5
-
6
- namespace 'teamcity'
7
-
8
- desc "keys", "Gets the deploy keys for TeamCity"
9
- def keys
10
- puts "not implemented"
11
- end
12
-
13
- end
14
- end
15
- end