wombat-cli 0.2.0

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 (201) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/DESIGN.md +40 -0
  4. data/Gemfile +3 -0
  5. data/README.md +132 -0
  6. data/Rakefile +52 -0
  7. data/Vagrantfile +121 -0
  8. data/bin/wombat +24 -0
  9. data/cookbooks/automate/.gitignore +16 -0
  10. data/cookbooks/automate/.kitchen.ec2.yml +27 -0
  11. data/cookbooks/automate/.kitchen.yml +25 -0
  12. data/cookbooks/automate/Berksfile +6 -0
  13. data/cookbooks/automate/README.md +4 -0
  14. data/cookbooks/automate/chefignore +102 -0
  15. data/cookbooks/automate/libraries/_helper.rb +52 -0
  16. data/cookbooks/automate/libraries/delivery_api.rb +204 -0
  17. data/cookbooks/automate/libraries/delivery_project.rb +31 -0
  18. data/cookbooks/automate/libraries/dsl.rb +5 -0
  19. data/cookbooks/automate/metadata.rb +13 -0
  20. data/cookbooks/automate/recipes/default.rb +111 -0
  21. data/cookbooks/automate/recipes/update-users.rb +48 -0
  22. data/cookbooks/automate/templates/delivery.erb +5 -0
  23. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -0
  24. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/automate.key +27 -0
  25. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -0
  26. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/chef.key +27 -0
  27. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -0
  28. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -0
  29. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/private.pem +27 -0
  30. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/files/public.pub +1 -0
  31. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/metadata.rb +3 -0
  32. data/cookbooks/automate/test/fixtures/cookbooks/mock_data/recipes/default.rb +27 -0
  33. data/cookbooks/automate/test/integration/default/automate_spec.rb +55 -0
  34. data/cookbooks/build_node/.gitignore +16 -0
  35. data/cookbooks/build_node/.kitchen.ec2.yml +30 -0
  36. data/cookbooks/build_node/.kitchen.yml +23 -0
  37. data/cookbooks/build_node/Berksfile +8 -0
  38. data/cookbooks/build_node/README.md +4 -0
  39. data/cookbooks/build_node/chefignore +102 -0
  40. data/cookbooks/build_node/metadata.rb +15 -0
  41. data/cookbooks/build_node/recipes/default.rb +35 -0
  42. data/cookbooks/build_node/templates/client.erb +3 -0
  43. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -0
  44. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/automate.key +27 -0
  45. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -0
  46. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/chef.key +27 -0
  47. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -0
  48. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -0
  49. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/private.pem +27 -0
  50. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/files/public.pub +1 -0
  51. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/metadata.rb +2 -0
  52. data/cookbooks/build_node/test/fixtures/cookbooks/mock_data/recipes/default.rb +18 -0
  53. data/cookbooks/build_node/test/integration/default/build-node_spec.rb +39 -0
  54. data/cookbooks/chef_server/.gitignore +16 -0
  55. data/cookbooks/chef_server/.kitchen.ec2.yml +26 -0
  56. data/cookbooks/chef_server/.kitchen.yml +25 -0
  57. data/cookbooks/chef_server/Berksfile +6 -0
  58. data/cookbooks/chef_server/README.md +4 -0
  59. data/cookbooks/chef_server/chefignore +102 -0
  60. data/cookbooks/chef_server/metadata.rb +13 -0
  61. data/cookbooks/chef_server/recipes/cheffish.rb +91 -0
  62. data/cookbooks/chef_server/recipes/default.rb +79 -0
  63. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -0
  64. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/automate.key +27 -0
  65. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -0
  66. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/chef.key +27 -0
  67. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -0
  68. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -0
  69. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/private.pem +27 -0
  70. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/files/public.pub +1 -0
  71. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/metadata.rb +2 -0
  72. data/cookbooks/chef_server/test/fixtures/cookbooks/mock_data/recipes/default.rb +23 -0
  73. data/cookbooks/chef_server/test/integration/default/chef_server_spec.rb +47 -0
  74. data/cookbooks/compliance/.gitignore +16 -0
  75. data/cookbooks/compliance/.kitchen.ec2.yml +26 -0
  76. data/cookbooks/compliance/.kitchen.yml +24 -0
  77. data/cookbooks/compliance/Berksfile +7 -0
  78. data/cookbooks/compliance/README.md +4 -0
  79. data/cookbooks/compliance/chefignore +102 -0
  80. data/cookbooks/compliance/metadata.rb +12 -0
  81. data/cookbooks/compliance/recipes/default.rb +59 -0
  82. data/cookbooks/compliance/spec/spec_helper.rb +2 -0
  83. data/cookbooks/compliance/spec/unit/recipes/default_spec.rb +20 -0
  84. data/cookbooks/compliance/templates/default/chef-compliance.rb.erb +1 -0
  85. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -0
  86. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/automate.key +27 -0
  87. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -0
  88. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/chef.key +27 -0
  89. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -0
  90. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -0
  91. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/private.pem +27 -0
  92. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/files/public.pub +1 -0
  93. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/metadata.rb +4 -0
  94. data/cookbooks/compliance/test/fixtures/cookbooks/mock_data/recipes/default.rb +21 -0
  95. data/cookbooks/compliance/test/integration/default/compliance.rb +27 -0
  96. data/cookbooks/infranodes/.gitignore +16 -0
  97. data/cookbooks/infranodes/.kitchen.ec2.yml +27 -0
  98. data/cookbooks/infranodes/.kitchen.yml +21 -0
  99. data/cookbooks/infranodes/Berksfile +6 -0
  100. data/cookbooks/infranodes/README.md +4 -0
  101. data/cookbooks/infranodes/attributes/default.rb +3 -0
  102. data/cookbooks/infranodes/chefignore +102 -0
  103. data/cookbooks/infranodes/metadata.rb +13 -0
  104. data/cookbooks/infranodes/recipes/default.rb +41 -0
  105. data/cookbooks/infranodes/spec/spec_helper.rb +2 -0
  106. data/cookbooks/infranodes/spec/unit/recipes/default_spec.rb +20 -0
  107. data/cookbooks/infranodes/templates/default/client.rb.erb +5 -0
  108. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/automate.crt +26 -0
  109. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/automate.key +27 -0
  110. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/chef.crt +25 -0
  111. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/chef.key +27 -0
  112. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -0
  113. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -0
  114. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/private.pem +27 -0
  115. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/files/public.pub +1 -0
  116. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/metadata.rb +3 -0
  117. data/cookbooks/infranodes/test/fixtures/cookbooks/mock_data/recipes/default.rb +21 -0
  118. data/cookbooks/infranodes/test/integration/default/infranodes_spec.rb +20 -0
  119. data/cookbooks/infranodes/test/integration/helpers/serverspec/spec_helper.rb +8 -0
  120. data/cookbooks/wombat/.gitignore +16 -0
  121. data/cookbooks/wombat/.kitchen.yml +43 -0
  122. data/cookbooks/wombat/Berksfile +6 -0
  123. data/cookbooks/wombat/README.md +4 -0
  124. data/cookbooks/wombat/attributes/default.rb +71 -0
  125. data/cookbooks/wombat/attributes/packer.rb +18 -0
  126. data/cookbooks/wombat/chefignore +102 -0
  127. data/cookbooks/wombat/metadata.rb +11 -0
  128. data/cookbooks/wombat/recipes/authorized-keys.rb +10 -0
  129. data/cookbooks/wombat/recipes/default.rb +112 -0
  130. data/cookbooks/wombat/recipes/etc-hosts.rb +51 -0
  131. data/cookbooks/workstation/.gitignore +16 -0
  132. data/cookbooks/workstation/.kitchen.ec2.yml +29 -0
  133. data/cookbooks/workstation/.kitchen.yml +22 -0
  134. data/cookbooks/workstation/Berksfile +7 -0
  135. data/cookbooks/workstation/README.md +3 -0
  136. data/cookbooks/workstation/chefignore +102 -0
  137. data/cookbooks/workstation/files/atom.apm.list +7 -0
  138. data/cookbooks/workstation/files/atom.config.cson +3 -0
  139. data/cookbooks/workstation/files/cmder.xml +605 -0
  140. data/cookbooks/workstation/metadata.rb +14 -0
  141. data/cookbooks/workstation/recipes/browser.rb +45 -0
  142. data/cookbooks/workstation/recipes/certs-keys.rb +44 -0
  143. data/cookbooks/workstation/recipes/chef.rb +29 -0
  144. data/cookbooks/workstation/recipes/default.rb +16 -0
  145. data/cookbooks/workstation/recipes/dotnet.rb +17 -0
  146. data/cookbooks/workstation/recipes/editor.rb +19 -0
  147. data/cookbooks/workstation/recipes/profile.rb +42 -0
  148. data/cookbooks/workstation/recipes/terminal.rb +13 -0
  149. data/cookbooks/workstation/templates/default/bookmarks.html.erb +23 -0
  150. data/cookbooks/workstation/templates/default/data_collector.rb.erb +2 -0
  151. data/cookbooks/workstation/templates/default/ise_profile.ps1.erb +11 -0
  152. data/cookbooks/workstation/templates/default/knife.rb.erb +10 -0
  153. data/cookbooks/workstation/templates/default/master_preferences.json.erb +28 -0
  154. data/cookbooks/workstation/templates/default/ssh_config.erb +16 -0
  155. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/chef-server.crt +26 -0
  156. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/chef-server.key +27 -0
  157. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/compliance.crt +26 -0
  158. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/compliance.key +27 -0
  159. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/delivery.crt +26 -0
  160. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/delivery.key +27 -0
  161. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/private.pem +27 -0
  162. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/files/public.pub +1 -0
  163. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/metadata.rb +2 -0
  164. data/cookbooks/workstation/test/fixtures/cookbooks/mock_data/recipes/default.rb +21 -0
  165. data/cookbooks/workstation/test/integration/default/workstation_spec.rb +37 -0
  166. data/keys/.gitkeep +0 -0
  167. data/lib/wombat/build.rb +195 -0
  168. data/lib/wombat/cli.rb +169 -0
  169. data/lib/wombat/common.rb +163 -0
  170. data/lib/wombat/delete.rb +28 -0
  171. data/lib/wombat/deploy.rb +105 -0
  172. data/lib/wombat/output.rb +45 -0
  173. data/lib/wombat/version.rb +3 -0
  174. data/lib/wombat.rb +8 -0
  175. data/logs/.gitkeep +0 -0
  176. data/packer/automate.json +108 -0
  177. data/packer/build-node.json +114 -0
  178. data/packer/chef-server.json +106 -0
  179. data/packer/compliance.json +106 -0
  180. data/packer/files/.gitkeep +0 -0
  181. data/packer/infranodes.json +108 -0
  182. data/packer/mock-data/.gitignore +16 -0
  183. data/packer/mock-data/.kitchen.yml +21 -0
  184. data/packer/mock-data/Berksfile +3 -0
  185. data/packer/mock-data/README.md +4 -0
  186. data/packer/mock-data/chefignore +102 -0
  187. data/packer/mock-data/metadata.rb +7 -0
  188. data/packer/mock-data/recipes/default.rb +69 -0
  189. data/packer/mock-data/spec/spec_helper.rb +2 -0
  190. data/packer/mock-data/spec/unit/recipes/default_spec.rb +20 -0
  191. data/packer/mock-data/test/integration/default/serverspec/default_spec.rb +9 -0
  192. data/packer/mock-data/test/integration/helpers/serverspec/spec_helper.rb +8 -0
  193. data/packer/workstation.json +97 -0
  194. data/templates/bootstrap-aws.erb +36 -0
  195. data/templates/cfn.json.erb +661 -0
  196. data/terraform/README.md +13 -0
  197. data/terraform/templates/terraform.tfvars.erb +12 -0
  198. data/terraform/wombat.tf +328 -0
  199. data/wombat-cli.gemspec +32 -0
  200. data/wombat.example.yml +52 -0
  201. metadata +331 -0
@@ -0,0 +1,204 @@
1
+ #
2
+ # Cookbook Name:: automate
3
+ # Libraries:: delivery_api
4
+ #
5
+ # Author:: Salim Afiune (<afiune@chef.io>)
6
+ #
7
+ # Copyright 2015, Chef Software, Inc.
8
+ #
9
+ # All rights reserved - Do Not Redistribute
10
+ #
11
+ require 'net/http'
12
+ require 'json'
13
+ require 'logger'
14
+
15
+ module Delivery
16
+
17
+ # Delivery API
18
+ #
19
+ # @author Salim Afiune <afiune@chef.io>
20
+ #
21
+ class API
22
+
23
+ attr_accessor :logger
24
+ attr_accessor :hostname
25
+ attr_accessor :token
26
+ attr_accessor :username
27
+ attr_accessor :password
28
+ attr_accessor :enterprise
29
+ attr_accessor :organization
30
+
31
+ # @example Instance a Delivery API
32
+ # => Delivery::API.new('delivery-server', 'my_user', 'my_password', 'my_enterprise')
33
+ #
34
+ # @example [block usage for multiple requests] Create multiple projects
35
+ # => Delivery::API.new('delivery-server', 'my_user', 'my_password', 'marvel') do |api|
36
+ # %W{
37
+ # thor
38
+ # hulk
39
+ # ironman
40
+ # hawkeye
41
+ # BlackWidow
42
+ # CaptainAmerica
43
+ # }.each do |project|
44
+ # api.post('/e/marvel/orgs/avengers/projects',
45
+ # {
46
+ # "name": project
47
+ # }
48
+ # )
49
+ # end
50
+ # end
51
+ #
52
+ # @yield [self] if a block is given then the constructed object yields
53
+ def initialize (hostname, username, password, enterprise = nil, organization = nil)
54
+ @hostname = hostname
55
+ @username = username
56
+ @password = password
57
+ @enterprise = enterprise
58
+ @organization = organization
59
+ token
60
+ if block_given?
61
+ yield self
62
+ end
63
+ end
64
+
65
+ def delivery_url
66
+ "https://#{@hostname}/api/v0"
67
+ end
68
+
69
+ def headers
70
+ {
71
+ "chef-delivery-token" => token,
72
+ "chef-delivery-user" => @username
73
+ }
74
+ end
75
+
76
+ def logger
77
+ @logger ||= Logger.new(STDOUT)
78
+ end
79
+
80
+ def get_delivery_endpoint(endpoint)
81
+ if endpoint.start_with?('/e')
82
+ URI("#{delivery_url}#{endpoint}")
83
+ else
84
+ URI("#{delivery_url}/e/#{enterprise}#{endpoint}")
85
+ end
86
+ end
87
+
88
+ def enterprise=(enterprise)
89
+ @enterprise = enterprise
90
+ @token = nil
91
+ end
92
+
93
+ def http(uri)
94
+ http = Net::HTTP.new(uri.host, uri.port)
95
+ http.use_ssl = true
96
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
97
+ http
98
+ end
99
+
100
+ def token
101
+ @token ||= begin
102
+ resp = post("/e/#{@enterprise}/get-token", {'username'=> @username, 'password'=> @password})
103
+ resp['token']
104
+ end
105
+ end
106
+
107
+ # POST Method
108
+ # Perform a POST to a Delivery Endpoint
109
+ #
110
+ # @example Create an organization. [Using Data::String]
111
+ # => post(
112
+ # '/e/marvel/orgs',
113
+ # '{ "name": "Stark Industries" }'
114
+ # )
115
+ #
116
+ # @example Create a pipeline. [Using Data::Hash]
117
+ # => post(
118
+ # '/e/marvel/orgs/Stark Industries/projects/hulkbuster/pipelines',
119
+ # {
120
+ # "name" => "v2",
121
+ # "base" => "master"
122
+ # }
123
+ # )
124
+ #
125
+ # @param endpoint [String] The Delivery Endpoint
126
+ # @param data [String][Hash] The Body of the request
127
+ # @return [Hash]
128
+ def post(endpoint, data)
129
+ uri = get_delivery_endpoint(endpoint)
130
+ request = Net::HTTP::Post.new(uri.request_uri)
131
+ request.content_type = "application/json"
132
+ request.body = data.class.eql?(Hash) ? JSON.unparse(data) : data
133
+ headers.keys.each do |key|
134
+ request[key] = headers[key]
135
+ end unless endpoint =~ /get-token/
136
+ response = http(uri).request(request)
137
+ response_error(response)
138
+ JSON.parse(response.body) if response.body
139
+ end
140
+
141
+ # GET Method
142
+ # Perform a GET to a Delivery Endpoint
143
+ #
144
+ # @example List all users.
145
+ # => get('/e/marvel/users')
146
+ #
147
+ # @example List Organizations.
148
+ # => get('/e/marvel/orgs')
149
+ #
150
+ # @param endpoint [String] The Delivery Endpoint
151
+ # @return [Hash]
152
+ def get(endpoint)
153
+ uri = get_delivery_endpoint(endpoint)
154
+ response = http(uri).get(uri.path, headers)
155
+ response_error(response)
156
+ JSON.parse(response.body) if response.body
157
+ end
158
+
159
+ # PUT Method
160
+ # Perform a PUT to a Delivery Endpoint
161
+ #
162
+ # @param endpoint [String] The Delivery Endpoint
163
+ # @param data [String][Hash] The Body of the request
164
+ # @return [Hash]
165
+ def put(endpoint, data)
166
+ uri = get_delivery_endpoint(endpoint)
167
+ request = Net::HTTP::Put.new(uri.request_uri)
168
+ request.content_type = "application/json"
169
+ request.body = data.class.eql?(Hash) ? JSON.unparse(data) : data
170
+ headers.keys.each do |key|
171
+ request[key] = headers[key]
172
+ end
173
+ response = http(uri).request(request)
174
+ response_error(response)
175
+ JSON.parse(response.body) if response.body
176
+ end
177
+
178
+ # DELETE Method
179
+ # Perform a DELETE to a Delivery Endpoint
180
+ #
181
+ # @param endpoint [String] The Delivery Endpoint
182
+ # @return [Hash]
183
+ def delete(endpoint)
184
+ uri = get_delivery_endpoint(endpoint)
185
+ response = http(uri).delete(uri.path, headers)
186
+ response_error(response)
187
+ JSON.parse(response.body) if response.body
188
+ end
189
+
190
+ def response_error(response)
191
+ if '200' <= response.code && response.code <= '301'
192
+ logger.debug(response.body) if Chef::Log.level == :debug
193
+ else
194
+ case response.code
195
+ when '409', '404'
196
+ logger.debug(response.body) if Chef::Log.level == :debug
197
+ else
198
+ logger.error(response.body)
199
+ response.error!
200
+ end
201
+ end
202
+ end
203
+ end
204
+ end
@@ -0,0 +1,31 @@
1
+ #
2
+ # Cookbook Name:: automate
3
+ # Libraries:: delivery_project
4
+ #
5
+ # Author:: Salim Afiune (<afiune@chef.io>)
6
+ #
7
+ # Copyright 2015, Chef Software, Inc.
8
+ #
9
+ # All rights reserved - Do Not Redistribute
10
+ #
11
+
12
+ module Delivery
13
+
14
+ # Delivery Project
15
+ #
16
+ # @author Salim Afiune <afiune@chef.io>
17
+ #
18
+ class DeliveryProject
19
+
20
+ attr_accessor :project
21
+ attr_accessor :organization
22
+ attr_accessor :enterprise
23
+
24
+ def initialize (project, organization, enterprise)
25
+ @project = project
26
+ @organization = organization
27
+ @enterprise = enterprise
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+
2
+
3
+ # Mixin DeliveryDemo::Helper to Recipes & Resources
4
+ ::Chef::Recipe.send(:include, Delivery::Helper)
5
+ ::Chef::Resource.send(:include, Delivery::Helper)
@@ -0,0 +1,13 @@
1
+ name 'automate'
2
+ maintainer 'The Authors'
3
+ maintainer_email 'you@example.com'
4
+ license 'all_rights'
5
+ description 'Installs/Configures automate'
6
+ long_description 'Installs/Configures automate'
7
+ version '0.2.0'
8
+
9
+ depends 'apt'
10
+ depends 'chef-ingredient'
11
+ depends 'hostsfile'
12
+ depends 'line'
13
+ depends 'wombat'
@@ -0,0 +1,111 @@
1
+ #
2
+ # Cookbook Name:: automate
3
+ # Recipe:: default
4
+ #
5
+ # Copyright (c) 2016 The Authors, All Rights Reserved.
6
+
7
+ append_if_no_line "Add temporary hostsfile entry: #{node['ipaddress']}" do
8
+ path "/etc/hosts"
9
+ line "#{node['ipaddress']} #{node['demo']['automate_fqdn']} automate"
10
+ end
11
+
12
+ execute 'hostnamectl set-hostname automate'
13
+
14
+ remote_file '/usr/local/bin/jq' do
15
+ source 'https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64'
16
+ owner 'root'
17
+ group 'root'
18
+ mode '0755'
19
+ action :create
20
+ notifies :run, 'execute[chmod]', :immediately
21
+ end
22
+
23
+ execute 'chmod' do
24
+ command 'chmod +x /usr/local/bin/jq'
25
+ action :nothing
26
+ end
27
+
28
+ chef_ingredient 'delivery' do
29
+ channel node['demo']['versions']['automate'].split('-')[0].to_sym
30
+ version node['demo']['versions']['automate'].split('-')[1]
31
+ action :install
32
+ end
33
+
34
+ directory '/var/opt/delivery'
35
+ directory '/var/opt/delivery/license'
36
+ directory '/var/opt/delivery/nginx'
37
+ directory '/var/opt/delivery/nginx/ca'
38
+ directory '/etc/delivery' do
39
+ mode '0644'
40
+ end
41
+
42
+ file '/etc/delivery/automate.pem' do
43
+ content lazy { IO.read('/tmp/private.pem') }
44
+ action :create
45
+ sensitive true
46
+ end
47
+
48
+ file '/var/opt/delivery/license/delivery.license' do
49
+ content lazy { IO.read('/tmp/delivery.license') }
50
+ action :create
51
+ sensitive true
52
+ end
53
+
54
+ file '/etc/delivery/builder_key.pub' do
55
+ content lazy { IO.read('/tmp/public.pub') }
56
+ action :create
57
+ sensitive true
58
+ end
59
+
60
+ %w(crt key).each do |ext|
61
+ file "/var/opt/delivery/nginx/ca/#{node['demo']['automate_fqdn']}.#{ext}" do
62
+ content lazy { IO.read("/tmp/automate.#{ext}") }
63
+ action :create
64
+ sensitive true
65
+ end
66
+ end
67
+
68
+ template '/etc/delivery/delivery.rb' do
69
+ source 'delivery.erb'
70
+ variables(
71
+ chef_server_url: node['demo']['chef_server_url'],
72
+ delivery_fqdn: node['demo']['automate_fqdn']
73
+ )
74
+ end
75
+
76
+ execute 'delivery-ctl reconfigure' do
77
+ command 'delivery-ctl reconfigure'
78
+ action :run
79
+ end
80
+
81
+ execute 'delivery-ctl create-enterprise' do
82
+ command "delivery-ctl create-enterprise #{node['demo']['enterprise']} --password #{node['demo']['users']['admin']['password']} --ssh-pub-key-file=/etc/delivery/builder_key.pub"
83
+ action :run
84
+ retries 5
85
+ retry_delay 2
86
+ not_if "delivery-ctl list-enterprises | grep #{node['demo']['enterprise']}"
87
+ end
88
+
89
+ node['demo']['users'].each do |user, info|
90
+ if user != 'admin'
91
+ execute "delivery-ctl create-user #{user}" do
92
+ command "delivery-ctl create-user #{node['demo']['enterprise']} #{user} --password #{info['password']}"
93
+ action :run
94
+ retries 5
95
+ retry_delay 2
96
+ #not_if "delivery-ctl list-users | grep #{node['demo']['enterprise']}"
97
+ end
98
+ else
99
+ Chef::Log.info('Admin user already created with create-enterprise')
100
+ end
101
+ end
102
+
103
+ include_recipe 'automate::update-users'
104
+
105
+ delete_lines "Remove temporary hostfile entry we added earlier" do
106
+ path "/etc/hosts"
107
+ pattern "^#{node['ipaddress']}.*#{node['demo']['automate_fqdn']}.*automate"
108
+ end
109
+
110
+ include_recipe 'wombat::authorized-keys'
111
+ include_recipe 'wombat::etc-hosts'
@@ -0,0 +1,48 @@
1
+ # Create Users through the API
2
+ ruby_block "Create Delivery Users" do
3
+ block do
4
+ # Per User
5
+ node['demo']['users'].each do |username, info|
6
+ # Get SSH-KEY wheter is the actual key or a path
7
+ ssh_pub_key = return_key(info['ssh_key'])
8
+
9
+ # Create User
10
+ if username == "admin"
11
+ delivery_api.put("/users/admin",
12
+ {
13
+ "name" => username,
14
+ "first" => info['first'],
15
+ "last" => info['last'],
16
+ "email" => info['email'],
17
+ "user_type" => "internal",
18
+ "ssh_pub_key" => ssh_pub_key
19
+ })
20
+ else
21
+ delivery_api.put("/users/#{username}",
22
+ {
23
+ "name" => username,
24
+ "first" => info['first'],
25
+ "last" => info['last'],
26
+ "email" => info['email'],
27
+ "user_type" => "internal",
28
+ "ssh_pub_key" => ssh_pub_key
29
+ })
30
+ end
31
+
32
+ # Grant Roles
33
+ delivery_api.post("/authz/users/#{username}", { "grant" => info['roles'] })
34
+
35
+ # Set Password
36
+ if info['password']
37
+ delivery_api.post("/internal-users/#{username}/reset-password", { "password" => info['password'] })
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ # Create Organization
44
+ ruby_block "Create #{node['demo']['org']} organization" do
45
+ block do
46
+ delivery_api.post("/e/#{node['demo']['enterprise']}/orgs", { "name" => node['demo']['org'] })
47
+ end
48
+ end
@@ -0,0 +1,5 @@
1
+ delivery_fqdn "<%= @delivery_fqdn %>"
2
+ delivery['chef_username'] = "automate"
3
+ delivery['chef_private_key'] = "/etc/delivery/automate.pem"
4
+ delivery['chef_server'] = "<%= @chef_server_url %>"
5
+ insights['enable'] = true
@@ -0,0 +1,26 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEWDCCA0CgAwIBAgIBADANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJBVTEY
3
+ MBYGA1UECAwPTmV3IFNvdXRoIFdhbGVzMQ8wDQYDVQQHDAZTeWRuZXkxEzARBgNV
4
+ BAoMCm1hcnN1cGlhbHMxEDAOBgNVBAsMB3dvbWJhdHMxHTAbBgNVBAMMFGF1dG9t
5
+ YXRlLmFuaW1hbHMuYml6MB4XDTE2MDgxNjE5MDUyMVoXDTE3MDgxNjE5MDUyMVow
6
+ fjELMAkGA1UEBhMCQVUxGDAWBgNVBAgMD05ldyBTb3V0aCBXYWxlczEPMA0GA1UE
7
+ BwwGU3lkbmV5MRMwEQYDVQQKDAptYXJzdXBpYWxzMRAwDgYDVQQLDAd3b21iYXRz
8
+ MR0wGwYDVQQDDBRhdXRvbWF0ZS5hbmltYWxzLmJpejCCASIwDQYJKoZIhvcNAQEB
9
+ BQADggEPADCCAQoCggEBAJHtYR1sIQM1GffD74taoU/anIJY7P95g+42YioTf3fK
10
+ 4KHtihMacxOBuMhh2yPPh4ZY5OVE9ST3zBmNu3hQlnfgr4JXwRrmPnk9PztYbbqT
11
+ pxJmvfK/t2Wesj2dxR1/hNMrWfwQlrv1ikv6EJN4Od3DpE1q+rnNM8qB/Xh34uu1
12
+ UfgriRGSXhpARl88WjzXcoNotdTYSn+js73xuq8w8cQ1Ngmq2Hjar/W36svaoJI4
13
+ 0vfSUMa8327vn/XmFtWHRCLL89gFYM0D9NgnCZT9yLT4bzO7BHVpmIEYzx3Dd6qf
14
+ q16es3YrRjFYoShyIwU7ubRn1bUBWRYAT+xoByVJqmUCAwEAAaOB4DCB3TAPBgNV
15
+ HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQ5ckBDssPcNcvJoINZL81bSCvypDCBqgYD
16
+ VR0jBIGiMIGfgBQ5ckBDssPcNcvJoINZL81bSCvypKGBg6SBgDB+MQswCQYDVQQG
17
+ EwJBVTEYMBYGA1UECAwPTmV3IFNvdXRoIFdhbGVzMQ8wDQYDVQQHDAZTeWRuZXkx
18
+ EzARBgNVBAoMCm1hcnN1cGlhbHMxEDAOBgNVBAsMB3dvbWJhdHMxHTAbBgNVBAMM
19
+ FGF1dG9tYXRlLmFuaW1hbHMuYml6ggEAMA0GCSqGSIb3DQEBCwUAA4IBAQA4TzbV
20
+ FLeJzJ/bsYb0DilbxNo4FKnfM166OwX6buYGUXk7DcSk0bsFpkKXa8X5xL5/7zUr
21
+ Eu2cUBkV/wgozmX/1ocXlc9fbZILtJiS/sz3oRcfqOZi7EhYV0ENrWRjk15y/x+P
22
+ Vq8cXmvaNxthhszbBTtpRu8UHJ+8AFm1Vapbig/FgAjDJq6gv+0KPLK1ZwyG6N8J
23
+ +JwWuoYftbGeQ7BLt2GYZ11bd5o/TTsem5R1CI5qzHzGoUxQ9c8EibwQ2PQLICaB
24
+ B/Zub4jeBQM7D5xKtgCaMdEjBeaFFO0mjQ1BWwuDVNARA1i8UF50vyKI/FlYGNv6
25
+ qqMZfF5fS0iJ3ZQ8
26
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAke1hHWwhAzUZ98Pvi1qhT9qcgljs/3mD7jZiKhN/d8rgoe2K
3
+ ExpzE4G4yGHbI8+Hhljk5UT1JPfMGY27eFCWd+CvglfBGuY+eT0/O1htupOnEma9
4
+ 8r+3ZZ6yPZ3FHX+E0ytZ/BCWu/WKS/oQk3g53cOkTWr6uc0zyoH9eHfi67VR+CuJ
5
+ EZJeGkBGXzxaPNdyg2i11NhKf6OzvfG6rzDxxDU2CarYeNqv9bfqy9qgkjjS99JQ
6
+ xrzfbu+f9eYW1YdEIsvz2AVgzQP02CcJlP3ItPhvM7sEdWmYgRjPHcN3qp+rXp6z
7
+ ditGMVihKHIjBTu5tGfVtQFZFgBP7GgHJUmqZQIDAQABAoIBAHnArP53cTPT4k6u
8
+ 0/ZZL64In/zBZTvijwj5pv2kNv4j7zgrkMBPmSP1X88Qll5SkKivEouX9VFazpej
9
+ gX7o/iIW/VirDxr6b7WIPHGvXh4Fg6f+wQ0AmGvY9K4kLIpoEtJ9oR6GWL2KKFEr
10
+ 2xivfthgm31cfMT5SPT1cB5LKLGv3KUcCrIY1eGdRyFE4aUnpPRaUsrnJzT2nO+w
11
+ 2GdKJhdLsc1hdSCafovLpEvR/Umw3NGulU0akrUAslTBvXVpCr+TV8TxwdlsCKhy
12
+ j8HCIjKPxtfGPYEQa7vH7y7BQoR3FaklgoYMlfPs5DSafwYmrcNSIN/qgYuVq20X
13
+ gPWPlCECgYEAwaKxim7x/moy+f9ToBDdsBTZN5LVRFiHvsaLa5yqOkCIgh3dfPJc
14
+ 5yKsKRWbabWRu9rbzCoJohPIwqHQQB1/WUj1C8a3axD2UTPIS5SPcnc/tn3lQ7a3
15
+ QJJqcDbfOKN23SD+TjFbQMn1xtJcG49nJThcksASCennK75zb67gi5cCgYEAwO0g
16
+ LiLQ4I5wz5VzLpuLvxRpVM8XzSDKJdoogkWQgTLqMpYhBMWHVtvpj3z8w+XDQ0wa
17
+ GrYrbmxT0BThgTb4crHY5QhO8HnhqH16O5DO801n2eWaU2G1F7dOeVA2AMCM8suG
18
+ pbYA6uvZPsgaW1rWLBcRWNIMjeExfcHZQle7qWMCgYBTOaIlZdoNB4gxe1RuD9G4
19
+ xL037ZxMa+CsVpnF/ugLcYE6q6tu8JyNm5Fzdx39KVUh8MdX0Rmi1+4J+ZKQfB0o
20
+ OvtXvGlJU1kLPb5w/cFJ6Ycw4JuRpw7MaiHlaTA4H8oO8QdchEo8ZpGEixWbot8q
21
+ WDcxu+wE5su9OXZUIk3QsQKBgQCh6F8RWPai/ed+zpWTj8Z/3cln+0SmSdZcXfGR
22
+ IoBbbTdOrN+Y+YzTQEuKuAIJBVIRsFRYBnn8ebz87Ak0P8XRu5+i1o4pEqBmnqdu
23
+ ReDoHxYAr8gMIfuwo42gEcjAaNfhCx09BLlQbg4ruhMkh98lsVZFjEIs78hxGbYT
24
+ Dz3WsQKBgQCQq07KnheugJPyQafu8gXmrcu3/zLWD6ODqDxo6vRVQlkzvaYJyI1n
25
+ 3uWcOSO0rCS2a8MVtchZ/oYaP6mSdK+UKB/ZKj9/ZnU0r/q92zrDtuRZmPxhf5Y2
26
+ l0oCU3KRVaN24va/FqFXT5iGeqMjhyX/tVXyHXWZXmoZTRr/CjZ0uQ==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,25 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIESjCCAzKgAwIBAgIBADANBgkqhkiG9w0BAQsFADB6MQswCQYDVQQGEwJBVTEY
3
+ MBYGA1UECAwPTmV3IFNvdXRoIFdhbGVzMQ8wDQYDVQQHDAZTeWRuZXkxEzARBgNV
4
+ BAoMCm1hcnN1cGlhbHMxEDAOBgNVBAsMB3dvbWJhdHMxGTAXBgNVBAMMEGNoZWYu
5
+ YW5pbWFscy5iaXowHhcNMTYwODE2MTkwNTIxWhcNMTcwODE2MTkwNTIxWjB6MQsw
6
+ CQYDVQQGEwJBVTEYMBYGA1UECAwPTmV3IFNvdXRoIFdhbGVzMQ8wDQYDVQQHDAZT
7
+ eWRuZXkxEzARBgNVBAoMCm1hcnN1cGlhbHMxEDAOBgNVBAsMB3dvbWJhdHMxGTAX
8
+ BgNVBAMMEGNoZWYuYW5pbWFscy5iaXowggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
9
+ ggEKAoIBAQDjjPREND2CqfwNsv2L1s9M4EXF39gMDWAVnodje8zNQz9PGFSpH6OX
10
+ uPL1nMgpExxbbFjolwAHW9QxgyNphGBt1pgXbTAyCFDQzZZDxiSGpY8kFyVmtkXj
11
+ qiLpRrwgj4dz2eaP0DO0fYcxqQnY/uYSNMfpgsRpN2Z1aWxpwIzNWZdDqlLZ55vH
12
+ hcXsoZQC9D3aSujmMZM64T/akhekOwThmrWMvqAZ2SuoGZWaaPWLR7JU/uV6yViR
13
+ s9ZoDRG1bzhj8iJT7yq0WuCQGbxVe+3B973YYKEOOG9llgydGScTonBm419tS6/7
14
+ LXxWcFyqfKsaXMfIZgjGPqQpXQrnCkO1AgMBAAGjgdowgdcwDwYDVR0TAQH/BAUw
15
+ AwEB/zAdBgNVHQ4EFgQUqq+Vuw/bv/cyJSAlJcBEcxcnqOUwgaQGA1UdIwSBnDCB
16
+ mYAUqq+Vuw/bv/cyJSAlJcBEcxcnqOWhfqR8MHoxCzAJBgNVBAYTAkFVMRgwFgYD
17
+ VQQIDA9OZXcgU291dGggV2FsZXMxDzANBgNVBAcMBlN5ZG5leTETMBEGA1UECgwK
18
+ bWFyc3VwaWFsczEQMA4GA1UECwwHd29tYmF0czEZMBcGA1UEAwwQY2hlZi5hbmlt
19
+ YWxzLmJpeoIBADANBgkqhkiG9w0BAQsFAAOCAQEAOyIdSQYPwTHchFqKPF2vJbdr
20
+ 8sTUaD/FV4HxUMXZ74CnFq0QJWF7aV25876Qv3Z1YnqvlWLhe7ulQtl5NXHZB6dQ
21
+ VizWwDwac8Rf8MkkFruBZHwnhIYZn7vRFSZjkJj2NYX3eVbxJ6iDLsjtpy+F8+rE
22
+ KIl7CjuuKVK952F+zZemKmB9axHZtgtRVZPPIgkpK0wQCYiTMrFC85GcOyhjOdj6
23
+ 47leIuKUtIO1bBfda2GNBmEqXWrywUtjts37SBcw928cYCT1BX1UzJSNN0MpKTP0
24
+ qSqY8OIoMp7+dZ7QJHOyqSLW/07wmC4eHrhnYfl4VsZTA8zhvFsG65+fEPMIbQ==
25
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpQIBAAKCAQEA44z0RDQ9gqn8DbL9i9bPTOBFxd/YDA1gFZ6HY3vMzUM/TxhU
3
+ qR+jl7jy9ZzIKRMcW2xY6JcAB1vUMYMjaYRgbdaYF20wMghQ0M2WQ8YkhqWPJBcl
4
+ ZrZF46oi6Ua8II+Hc9nmj9AztH2HMakJ2P7mEjTH6YLEaTdmdWlsacCMzVmXQ6pS
5
+ 2eebx4XF7KGUAvQ92kro5jGTOuE/2pIXpDsE4Zq1jL6gGdkrqBmVmmj1i0eyVP7l
6
+ eslYkbPWaA0RtW84Y/IiU+8qtFrgkBm8VXvtwfe92GChDjhvZZYMnRknE6JwZuNf
7
+ bUuv+y18VnBcqnyrGlzHyGYIxj6kKV0K5wpDtQIDAQABAoIBAFMoGcQrCyeLE0+2
8
+ T64g7FT9yMHNUdjlsm10J6oVffytTJ+NFrNPmqtBrZhQmV1ZXI2UhNFLDXmi92K4
9
+ t+JBvDOnrqExB+Hg5BfKadWOvZ5vNmZMByEID3ZpoKR7cxi7GxcdVILN5XdaQGPH
10
+ kI+6Zz3UCBKv9TM2Sb0yr6nd8hbArFAOyqaB91oSppbTftOhntd8SgSPZ5mLBSne
11
+ DxluTriTgpyKh6ebbLBob/q3QI//xzfVC6+H1b5p64r2vMNkZUjfVUz1atSF66Bg
12
+ R/i+51mMxZd7avdoU89kg9+QDlL8Sw/mc/VJL2uIqtc5aoXpMsjpcWZsBpVjUPAr
13
+ E10DMYECgYEA/FX9dr/zcZFzSxDWGVbd4tckuYG7Iz9aFgxqfUdbOSGV6w9b42Mh
14
+ 7Fqf3dAqAPCYkCmXH34o9QAHf31Ob5x0BNe6MBqoj1N8jpd5MQ4bCOkC3jtNScUt
15
+ yzpb53bMjBBJw2WpngxhKt6RBwer6OixV7Wx90uxF6te8LPPjE8oSqUCgYEA5trU
16
+ W8cLNjQrZkGChS2W9bDVD7kErx9kt0vCDDoOVXpuaAXUFJ46AzYTdqOqxZS3TuVu
17
+ ylz12BNl0HvE5lsRufVOOFcMKX/F10fKVYYc+bUaw6YLIIcb7EeHJ/MDtUv13eTX
18
+ SllxaCMWdS46PzenRnVcZaRY9qXqpJtpq5JGl9ECgYEAyf1XmPBMwpNI9ET07XHA
19
+ ym2oAysbDzsONOoZcFFnb5M3++LejmXzaMyefiO9C+WMapIwW9BUntI4LlCzMdrO
20
+ cHXzn8AnQBv3b/lG1QLSl05WsmhMFQpW/wCnQuCxGkmLknNV1KNaQMPK2hLFBPsH
21
+ wws5+5hGmYjfxdRaBpnyydUCgYEAve/z4uMcfWdlAcgKfEqrNtBcLIh8qx04P3ss
22
+ V+T4YCnQZvPMr34TmwrF7snwOooGW/p3MjZT64jiLyt2MFVje02yIra0AfznqR2f
23
+ AsjKVEVGlQyrgQLI3ZloQV03gtXRn9Slsb1vik+8LYNwVw0SKu1qrRIQRDb0nKRl
24
+ x80dGdECgYEA3zAihDetpNsnIZhY8D6jA0331TQiLGDwz/IFoeUm685I+R8NoViX
25
+ nuxjnNRrHbOKNs0spHe+VpYLMaSBmSz/fqJnAuNKFuIZvQtHOtTtfMDuH1+5dRzS
26
+ cWAmqPZfm1qfNy1zX8SQDeHcsexFZq9tQ2dj8Sezrt7HYwLMgoLtijA=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,26 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEYTCCA0mgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgDELMAkGA1UEBhMCQVUx
3
+ GDAWBgNVBAgMD05ldyBTb3V0aCBXYWxlczEPMA0GA1UEBwwGU3lkbmV5MRMwEQYD
4
+ VQQKDAptYXJzdXBpYWxzMRAwDgYDVQQLDAd3b21iYXRzMR8wHQYDVQQDDBZjb21w
5
+ bGlhbmNlLmFuaW1hbHMuYml6MB4XDTE2MDgxNjE5MDUyMVoXDTE3MDgxNjE5MDUy
6
+ MVowgYAxCzAJBgNVBAYTAkFVMRgwFgYDVQQIDA9OZXcgU291dGggV2FsZXMxDzAN
7
+ BgNVBAcMBlN5ZG5leTETMBEGA1UECgwKbWFyc3VwaWFsczEQMA4GA1UECwwHd29t
8
+ YmF0czEfMB0GA1UEAwwWY29tcGxpYW5jZS5hbmltYWxzLmJpejCCASIwDQYJKoZI
9
+ hvcNAQEBBQADggEPADCCAQoCggEBAMdE1m4ETjyi5sbjQX28ICx11VGghz9f1vkB
10
+ uWukAt1CB6yUnXiwblGyJUKuaAk5GVdDCoGsKqpPgdAaPuTfB50kWEoxY5qBQ+i9
11
+ Pnau9VCXowNE00DsDhZRyuLj7Mf+NUfkWJ7EXG7wb8qPZpmZBwRNYavJFSrMtHt5
12
+ QFE4IsTQ/UXJyZqa6PIq7t4mDVEH0kg6/qsP5lpXPIMlq+t9BtUxm91b4EeqfUJY
13
+ DUp0I9gTSRCyt8UHjhfm2T0kE09jCEJNut/SuZUhW/F1/Fja3GDYlmqJGePl+3mZ
14
+ 39TyVJab9V/xxOxSkCYOXvoN3l2SCJh6ufRfd3dHSTR+aiZgltsCAwEAAaOB4zCB
15
+ 4DAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRQ2/l7IAoxWdKfGtGTyUG1HoDc
16
+ 7zCBrQYDVR0jBIGlMIGigBRQ2/l7IAoxWdKfGtGTyUG1HoDc76GBhqSBgzCBgDEL
17
+ MAkGA1UEBhMCQVUxGDAWBgNVBAgMD05ldyBTb3V0aCBXYWxlczEPMA0GA1UEBwwG
18
+ U3lkbmV5MRMwEQYDVQQKDAptYXJzdXBpYWxzMRAwDgYDVQQLDAd3b21iYXRzMR8w
19
+ HQYDVQQDDBZjb21wbGlhbmNlLmFuaW1hbHMuYml6ggEAMA0GCSqGSIb3DQEBCwUA
20
+ A4IBAQCEMqbYpgcYpKyrPXnjFBPcL7w86wOwc3SjjbdIKPiZx2bLoL+Bt0a2YEam
21
+ HsqXpl7YoRaCwj3SimPUledvjPD1Kta3bfkRItqXKSI7Fj+3/Dn5y43iIC1yZVa8
22
+ s7fxh2elGUMjrwzzW/47M5ILZVkPK7a3BszErXnQkUkkZXGELf2uzNvvB+leCPxD
23
+ jmA+M+AEJcvhjM1R2dVlIF1LcFbS1nKUCLr51EvskgVWkpcLSGb443zT3OggQrdq
24
+ /CF4E0KlLSW4ZM605Zkd19QvvlXToy4BBb3gXKHPb8Av+DtKBQOb4e2sO/CoD8Sx
25
+ dIEfFGQ1ouwf2vQ/UOLWXKMfi6PJ
26
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAx0TWbgROPKLmxuNBfbwgLHXVUaCHP1/W+QG5a6QC3UIHrJSd
3
+ eLBuUbIlQq5oCTkZV0MKgawqqk+B0Bo+5N8HnSRYSjFjmoFD6L0+dq71UJejA0TT
4
+ QOwOFlHK4uPsx/41R+RYnsRcbvBvyo9mmZkHBE1hq8kVKsy0e3lAUTgixND9RcnJ
5
+ mpro8iru3iYNUQfSSDr+qw/mWlc8gyWr630G1TGb3VvgR6p9QlgNSnQj2BNJELK3
6
+ xQeOF+bZPSQTT2MIQk2639K5lSFb8XX8WNrcYNiWaokZ4+X7eZnf1PJUlpv1X/HE
7
+ 7FKQJg5e+g3eXZIImHq59F93d0dJNH5qJmCW2wIDAQABAoIBAGmTxFTH/TfNS56G
8
+ 27Uljppf2CUGe4INYlXOHxKz9DyMdoputzwxplGspGc/BqoUUaPVRmTL9lMECxBa
9
+ R4Z10I/mqMyufEppQLS4R7cUHa+Ul+7scU1NhG046tjp0BNqUYqEppuACEVTKLfW
10
+ 4JJy7K/P2/brdEaX7OwaowQlTO6fqDzQyPA9/0RJXGWHFGVpg+RI1EbLwz60mbmv
11
+ Dkuibz3xh7K8egoweI8+2XJ0cih3QKA6EIF0+A+tS9/776vYrpQE1CR8ToIveQ3D
12
+ zg6n/qx07BK1f3r8wRoT7mdUkK5McJNHCI6oc3yhXFgV4T2DL4tCCKQrc0Aozo+Q
13
+ Gi619MkCgYEA79o7/F9U3cJ4yzCiuiqYSP17LBcFZ2UctSL2eC703VmlQCWOpTyo
14
+ Ek6Vy4QCcZCFGhLdjhP0gd9ITTqSFrQM2acu1zLQ/me2/jRnxpLwXGwW0sK1+RKZ
15
+ dyTzOgeLzyXE3uu87ri5CEuV52VpMghhpSYqQB5Ny8Z0Jsc67Z8JI68CgYEA1K8p
16
+ KsK1mkeZxm/YQhQwZvWH9Lso7+7HWa92xLbXmmRIK+HiJgEECMP5R/sOWHtBtOAD
17
+ PIZiIzYvCCBT3hIopySyymSJrr5W6lcbldevBbjKdcf4+lf1VbjcDS3z5hjW60go
18
+ ZJduuV4O+OaWpAGUh9HhrkLyilFTms3xhtgozpUCgYEAsX8r0xjtYerPn3aPhfuN
19
+ lL5ZD4i9zAVMmFOWV9xQAxqbKvxgMrHPozSar/AyKr6LcX8yjDkCQbXt+JD2mWyG
20
+ 8e9Bv6lwdkRkbHx1q8MDszGeNjw3lGoKPdyPTotVEGff6CRGPddfvt7IwWQP1CHV
21
+ uPSkYazLX5iuTiAz4LNHfSsCgYAjeHsTKJoE+wAIekrE6n0QDs733+b57QbOTFcw
22
+ g5X9p8/pkaiX0f+MPrLqcFJ6K0RQGDQx+e+QE89QOaQDG2AwUAyJeK8Ft7TjLFfr
23
+ a6dC+wi5D/rUNasy+ruobwuISog9gTFLZX4P6EHy/PIOtDzDUhujZoLw0pNw8/ve
24
+ E1rq6QKBgQCVf8zGyBV5jFgjoYupftdFR0LtwN6QkoUpLRXJUpumZ8DB19GmuC6a
25
+ pFZWmb0skbhGJEDRJIGm1/iI0JW1f2lMUXRf/vg7MnUituPH1wU6gbCBMvZyHfYO
26
+ tMnv/Cy0gc21YfrCWFkCvWqZFyILWDnL0C6gi0kPkpR76H02qiKr7w==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAobOupXCnCk2Uo1B+Qp6irh6Kyf7J4ldrYukB5M2ygZMCHFzS
3
+ VRdevIA7fw9d64JD8PSy55aTAbDB7fHu6d9uKmVLFemFDpYc05cyRPuMaw9A0gZg
4
+ TcdcdQFKYmkc7Qfam/mVGuHIq7yXth/20m+LKQXbog88epdnTSEQI3YJG3a+ITxm
5
+ 0gHDAG8r9nYoc0DySA432Jrnr8GSHfmHU9lzTn2bPfr1DscSWrb1fDtSroaqnp4m
6
+ DmnQ3ZF/M4SWRHIysKDplF6rvN1hNNRtHngw0tdcpgqEPWbC4Q9Kv1o1c/Jh1d5d
7
+ gqzMqfY1goKx1WfBLA9Nl2D31tcyNzS/Ck58hQIDAQABAoIBABzQ53umEq58WtOr
8
+ wYRfvr/mw3bxx8plJ8btnR/IJFqA9yxUwkrVqlVPSMsA0wzoHvFuuf8ZT0NK25Rq
9
+ u9fDsF8vw+y4u7R4vdRbKmMurLxbcIK9DiZuM6TKQRY+gyAeeS+4j4DF4bvxFNwo
10
+ 4BRqOlNqLtS3gGCcYJVXIggfvcm92+gLGpuZdXGidMm9mbXCNnHxM181vqH44APl
11
+ M+eOjC3TleM7JbyUBCidczkyesknenVmml8h0ljdL8nnH1aya+lDgOQQeRPLu7oy
12
+ X+zTsqFNs4POIKNNsgeYr9A7bO7VTS1/q+Jp9qxmHtaU9RX9yM7qAKhsGX02Y3uv
13
+ W4ETJdUCgYEAzm+HVz3q4HdKydrVDH5CCoz+hR5VkLY4DyEE/TUlvCenkO1wC6oW
14
+ abAC1lkxg8I0r9P6hByzbGPkoM1F/34VDj2dWMyYbLYpvLm4SwO4zlN2VectB94r
15
+ ejXlF+LJuZY7BWosEjAmHzNwsWoCtBwSOoGuvq+Vtvrqh3Z2MDXkjwMCgYEAyIac
16
+ 6brMUC0JrQDQI5PC/oYW1ktVMO2q36towxgulMBjfolsZnN9xGGhx0TB3kZh5t6E
17
+ 3MKwxUHxmDXp3TTuloxSc3u0gpOmQpEz5DiF1eeZj6qvW2rR3WMkmaUO+o5iPyPv
18
+ Sc7bnUzbU4zVC/kOtTrEK7AJHNaUKXgP625Ry9cCgYBHcj4rKZjS2zadKgm2azQ8
19
+ JpQoSlle3lIEmm75m51Vw3uxIxw2TUW4ilxRB0mlyl8lw33en3hRuTj1llX1mRN8
20
+ fEKq6xSN+3XyhWyNOdqKPkSkcoAZSwFNKL4DSFB81MvUkexy1ws6nTkRjhklcNm2
21
+ Og/amzZ7v9fPzmYVRXG3NQKBgBEkAJGyF/jagLM7GI+R998N0zHqKpQOHMcVvdS/
22
+ YmvwrhCI6q0vPhblSZDg/blkRsYXS0AbnESgSGh8Y0s3VRWlVP7uGhX3TQTvqIHf
23
+ mwEX1PaE3oxv6xSDfwNrKoacWSWQisnCVt9xTGYt6aAmX+154n7hg0XlybBpxOKZ
24
+ AYDtAoGAK0f1NlxcgsPgrkbQS34mPCNIlpShPaT8daf04h5tCWjlMDF4s3Ap6DRs
25
+ iDmQ5d9oIWRH+9m3vNu+5gaW0bb63swpsHkHwA7oaoEqbpsSQccAtWHQ/zGbSFMl
26
+ mNMSSx2Mceeyveg45rokfQ2OCvvrv+XCdyH2AZJJ2vGvJudcxW0=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQChs66lcKcKTZSjUH5CnqKuHorJ/sniV2ti6QHkzbKBkwIcXNJVF168gDt/D13rgkPw9LLnlpMBsMHt8e7p324qZUsV6YUOlhzTlzJE+4xrD0DSBmBNx1x1AUpiaRztB9qb+ZUa4cirvJe2H/bSb4spBduiDzx6l2dNIRAjdgkbdr4hPGbSAcMAbyv2dihzQPJIDjfYmuevwZId+YdT2XNOfZs9+vUOxxJatvV8O1KuhqqeniYOadDdkX8zhJZEcjKwoOmUXqu83WE01G0eeDDS11ymCoQ9ZsLhD0q/WjVz8mHV3l2CrMyp9jWCgrHVZ8EsD02XYPfW1zI3NL8KTnyF
@@ -0,0 +1,3 @@
1
+ name 'mock_data'
2
+ version '0.0.1'
3
+
@@ -0,0 +1,27 @@
1
+ # copy files into tmp for cookbook
2
+
3
+ cookbook_file '/tmp/public.pub' do
4
+ content 'public.pub'
5
+ action :create
6
+ end
7
+
8
+ cookbook_file '/tmp/private.pem' do
9
+ content 'private.pem'
10
+ action :create
11
+ end
12
+
13
+ %w(chef automate compliance).each do |f|
14
+ %w(crt key).each do |ext|
15
+ cookbook_file "/tmp/#{f}.#{ext}" do
16
+ content "#{f}.#{ext}"
17
+ action :create
18
+ sensitive true
19
+ end
20
+ end
21
+ end
22
+
23
+ # you need to copy this in place
24
+ cookbook_file '/tmp/delivery.license' do
25
+ content 'delivery.license'
26
+ action :create
27
+ end