cloud-mu 3.1.4 → 3.1.5
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/ansible/roles/mu-windows/README.md +33 -0
- data/ansible/roles/mu-windows/defaults/main.yml +2 -0
- data/ansible/roles/mu-windows/handlers/main.yml +2 -0
- data/ansible/roles/mu-windows/meta/main.yml +53 -0
- data/ansible/roles/mu-windows/tasks/main.yml +20 -0
- data/ansible/roles/mu-windows/tests/inventory +2 -0
- data/ansible/roles/mu-windows/tests/test.yml +5 -0
- data/ansible/roles/mu-windows/vars/main.yml +2 -0
- data/cloud-mu.gemspec +4 -2
- data/cookbooks/mu-tools/recipes/selinux.rb +2 -1
- data/cookbooks/mu-tools/recipes/windows-client.rb +140 -144
- data/cookbooks/mu-tools/resources/windows_users.rb +44 -43
- data/extras/image-generators/AWS/win2k12.yaml +16 -13
- data/extras/image-generators/AWS/win2k16.yaml +16 -13
- data/extras/image-generators/AWS/win2k19.yaml +19 -0
- data/modules/mu.rb +72 -9
- data/modules/mu/adoption.rb +14 -2
- data/modules/mu/cloud.rb +111 -10
- data/modules/mu/clouds/aws.rb +23 -7
- data/modules/mu/clouds/aws/container_cluster.rb +640 -692
- data/modules/mu/clouds/aws/dnszone.rb +49 -45
- data/modules/mu/clouds/aws/firewall_rule.rb +177 -214
- data/modules/mu/clouds/aws/role.rb +17 -8
- data/modules/mu/clouds/aws/search_domain.rb +1 -1
- data/modules/mu/clouds/aws/server.rb +734 -1027
- data/modules/mu/clouds/aws/userdata/windows.erb +2 -1
- data/modules/mu/clouds/aws/vpc.rb +297 -786
- data/modules/mu/clouds/aws/vpc_subnet.rb +286 -0
- data/modules/mu/clouds/google/bucket.rb +1 -1
- data/modules/mu/clouds/google/container_cluster.rb +21 -17
- data/modules/mu/clouds/google/function.rb +8 -2
- data/modules/mu/clouds/google/server.rb +102 -32
- data/modules/mu/clouds/google/vpc.rb +1 -1
- data/modules/mu/config.rb +12 -1
- data/modules/mu/config/server.yml +1 -0
- data/modules/mu/defaults/AWS.yaml +51 -28
- data/modules/mu/groomers/ansible.rb +54 -17
- data/modules/mu/groomers/chef.rb +13 -7
- data/modules/mu/master/ssl.rb +0 -1
- data/modules/mu/mommacat.rb +8 -0
- data/modules/tests/ecs.yaml +23 -0
- data/modules/tests/includes-and-params.yaml +2 -1
- data/modules/tests/server-with-scrub-muisms.yaml +1 -0
- data/modules/tests/win2k12.yaml +25 -0
- data/modules/tests/win2k16.yaml +25 -0
- data/modules/tests/win2k19.yaml +25 -0
- data/requirements.txt +1 -0
- metadata +50 -4
- data/extras/image-generators/AWS/windows.yaml +0 -18
- data/modules/tests/needwork/win2k12.yaml +0 -13
@@ -513,7 +513,7 @@ MU.log "ROUTES TO #{target_instance.name}", MU::WARN, details: resp
|
|
513
513
|
# @param target_subnets_key [String]: The subnet/subnets on the other side of the peered VPC.
|
514
514
|
# @param instance_id [String]: The instance ID in the target subnet/subnets.
|
515
515
|
# @return [Boolean]
|
516
|
-
def self.
|
516
|
+
def self.can_route_to_master_peer?(source_subnets_key, target_subnets_key, instance_id)
|
517
517
|
end
|
518
518
|
|
519
519
|
# Retrieves the route tables of used by subnets
|
data/modules/mu/config.rb
CHANGED
@@ -180,8 +180,19 @@ module MU
|
|
180
180
|
$file_format = MU::Config.guessFormat(path)
|
181
181
|
$yaml_refs = {}
|
182
182
|
erb = ERB.new(File.read(path), nil, "<>")
|
183
|
+
erb.filename = path
|
183
184
|
|
184
|
-
|
185
|
+
begin
|
186
|
+
raw_text = erb.result(erb_binding)
|
187
|
+
rescue NameError => e
|
188
|
+
loc = e.backtrace[0].sub(/:(\d+):.*/, ':\1')
|
189
|
+
msg = if e.message.match(/wrong constant name Config.getTail PLACEHOLDER ([^\s]+) REDLOHECALP/)
|
190
|
+
"Variable '#{Regexp.last_match[1]}' referenced in config, but not defined. Missing required parameter?"
|
191
|
+
else
|
192
|
+
e.message
|
193
|
+
end
|
194
|
+
raise ValidationError, msg+" at "+loc
|
195
|
+
end
|
185
196
|
raw_json = nil
|
186
197
|
|
187
198
|
# If we're working in YAML, do some magic to make includes work better.
|
@@ -73,33 +73,56 @@ ubuntu14:
|
|
73
73
|
ap-southeast-1: ami-2855964b
|
74
74
|
ap-southeast-2: ami-d19fc4b2
|
75
75
|
win2k12r2: &1
|
76
|
-
us-east-1: ami-
|
77
|
-
us-east-2: ami-
|
78
|
-
|
79
|
-
us-west-2: ami-
|
80
|
-
|
81
|
-
eu-west-1: ami-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
ap-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
us-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
76
|
+
us-east-1: ami-00f7cf8d57d29a8a7
|
77
|
+
us-east-2: ami-0c14a2a9b1d88428d
|
78
|
+
ca-central-1: ami-0210e4efc4186f89d
|
79
|
+
us-west-2: ami-036681205605cba8c
|
80
|
+
us-west-1: ami-072d0f2b03f351e5c
|
81
|
+
eu-west-1: ami-061524b3efcc026da
|
82
|
+
eu-west-2: ami-0a7aeb2dae7c7154b
|
83
|
+
eu-west-3: ami-0b16adff6701f08bb
|
84
|
+
eu-north-1: ami-09bd34c6465aa914b
|
85
|
+
sa-east-1: ami-078221cae70b179c4
|
86
|
+
eu-central-1: ami-047d37ec58a8469fb
|
87
|
+
ap-northeast-1: ami-0ce23ffef990003d2
|
88
|
+
ap-south-1: ami-0106284f16a19651a
|
89
|
+
ap-northeast-2: ami-0518e43d0367f1a6d
|
90
|
+
ap-southeast-1: ami-0858019a829a5169d
|
91
|
+
ap-southeast-2: ami-0e0d7d3acb6427f53
|
92
|
+
win2k16: &5
|
93
|
+
us-east-1: ami-090dd1749dc0be91d
|
94
|
+
us-east-2: ami-09c9eeb95291e63d7
|
95
|
+
ca-central-1: ami-0c63a53a15fca4238
|
96
|
+
us-west-2: ami-0b8540e9a207143eb
|
97
|
+
eu-west-1: ami-067b5d8d85d3c8cf8
|
98
|
+
us-west-1: ami-0a2dc7e2cf21ab3e9
|
99
|
+
eu-west-2: ami-0cece465ae4b18027
|
100
|
+
eu-west-3: ami-0cc5f29ed6e0e8a67
|
101
|
+
eu-central-1: ami-02d4da18299373531
|
102
|
+
sa-east-1: ami-021d5c906c1898430
|
103
|
+
ap-northeast-1: ami-01129c98f812a3be7
|
104
|
+
ap-south-1: ami-005c7910458e9541d
|
105
|
+
ap-northeast-2: ami-024840a881c449d78
|
106
|
+
ap-southeast-2: ami-070af17644a596301
|
107
|
+
ap-southeast-1: ami-0bc2e098a07140bc4
|
108
|
+
eu-north-1: ami-03dcc78d77d2ee027
|
109
|
+
win2k19:
|
110
|
+
us-east-1: ami-09946f18cbcdce65c
|
111
|
+
us-east-2: ami-02ab72768678bb7d0
|
112
|
+
ca-central-1: ami-0fcf1b24169d88d7f
|
113
|
+
us-west-2: ami-025ca67c85e4e147d
|
114
|
+
eu-west-2: ami-08a0e09c469e6a557
|
115
|
+
us-west-1: ami-05960eb854f91cbb8
|
116
|
+
eu-west-1: ami-0f91d02c05561cf5b
|
117
|
+
eu-central-1: ami-0faafc220143c941c
|
118
|
+
eu-west-3: ami-0d2a0b6f21c7ce4a2
|
119
|
+
eu-north-1: ami-0fecae116e9e331bf
|
120
|
+
sa-east-1: ami-050693ece618acaa5
|
121
|
+
ap-northeast-2: ami-0e0ebd96765911d72
|
122
|
+
ap-northeast-1: ami-0729606d0a4051499
|
123
|
+
ap-southeast-1: ami-06ba249ee50ee9669
|
124
|
+
ap-southeast-2: ami-03a051a6d0f2b79d5
|
125
|
+
ap-south-1: ami-02c287a24c5e872f6
|
103
126
|
amazon:
|
104
127
|
us-east-1: ami-b73b63a0
|
105
128
|
us-east-2: ami-58277d3d
|
@@ -114,7 +137,7 @@ amazon:
|
|
114
137
|
ap-southeast-1: ami-b953f2da
|
115
138
|
ap-southeast-2: ami-db704cb8
|
116
139
|
win2k12: *1
|
117
|
-
windows: *
|
140
|
+
windows: *5
|
118
141
|
ubuntu: *2
|
119
142
|
centos: *3
|
120
143
|
rhel7: *4
|
@@ -66,6 +66,7 @@ module MU
|
|
66
66
|
# @param permissions [Boolean]: If true, save the secret under the current active deploy (if any), rather than in the global location for this user
|
67
67
|
# @param deploy_dir [String]: If permissions is +true+, save the secret here
|
68
68
|
def self.saveSecret(vault: nil, item: nil, data: nil, permissions: false, deploy_dir: nil)
|
69
|
+
|
69
70
|
if vault.nil? or vault.empty? or item.nil? or item.empty?
|
70
71
|
raise MuError, "Must call saveSecret with vault and item names"
|
71
72
|
end
|
@@ -73,7 +74,6 @@ module MU
|
|
73
74
|
raise MuError, "Ansible vault/item names cannot include forward slashes"
|
74
75
|
end
|
75
76
|
pwfile = vaultPasswordFile
|
76
|
-
|
77
77
|
|
78
78
|
dir = if permissions
|
79
79
|
if deploy_dir
|
@@ -95,8 +95,9 @@ module MU
|
|
95
95
|
if File.exist?(path)
|
96
96
|
MU.log "Overwriting existing vault #{vault} item #{item}"
|
97
97
|
end
|
98
|
+
|
98
99
|
File.open(path, File::CREAT|File::RDWR|File::TRUNC, 0600) { |f|
|
99
|
-
f.write data
|
100
|
+
f.write data.to_yaml
|
100
101
|
}
|
101
102
|
|
102
103
|
cmd = %Q{#{ansibleExecDir}/ansible-vault encrypt #{path} --vault-password-file #{pwfile}}
|
@@ -115,14 +116,23 @@ module MU
|
|
115
116
|
# @param item [String]: The item within the repository to retrieve
|
116
117
|
# @param field [String]: OPTIONAL - A specific field within the item to return.
|
117
118
|
# @return [Hash]
|
118
|
-
def self.getSecret(vault: nil, item: nil, field: nil)
|
119
|
+
def self.getSecret(vault: nil, item: nil, field: nil, deploy_dir: nil)
|
119
120
|
if vault.nil? or vault.empty?
|
120
121
|
raise MuError, "Must call getSecret with at least a vault name"
|
121
122
|
end
|
122
|
-
|
123
123
|
pwfile = vaultPasswordFile
|
124
|
-
|
125
|
-
|
124
|
+
|
125
|
+
dir = nil
|
126
|
+
try = [secret_dir+"/"+vault]
|
127
|
+
try << deploy_dir+"/ansible/vaults/"+vault if deploy_dir
|
128
|
+
try << MU.mommacat.deploy_dir+"/ansible/vaults/"+vault if MU.mommacat.deploy_dir
|
129
|
+
try.each { |maybe_dir|
|
130
|
+
if Dir.exist?(maybe_dir) and (item.nil? or File.exist?(maybe_dir+"/"+item))
|
131
|
+
dir = maybe_dir
|
132
|
+
break
|
133
|
+
end
|
134
|
+
}
|
135
|
+
if dir.nil?
|
126
136
|
raise MuNoSuchSecret, "No such vault #{vault}"
|
127
137
|
end
|
128
138
|
|
@@ -135,17 +145,23 @@ module MU
|
|
135
145
|
cmd = %Q{#{ansibleExecDir}/ansible-vault view #{itempath} --vault-password-file #{pwfile}}
|
136
146
|
MU.log cmd
|
137
147
|
a = `#{cmd}`
|
138
|
-
# If we happen to have stored recognizeable JSON, return it
|
139
|
-
# which is a behavior we're used to from Chef vault.
|
140
|
-
# a String.
|
148
|
+
# If we happen to have stored recognizeable JSON or YAML, return it
|
149
|
+
# as parsed, which is a behavior we're used to from Chef vault.
|
150
|
+
# Otherwise, return a String.
|
141
151
|
begin
|
142
152
|
data = JSON.parse(a)
|
143
|
-
if field and data[field]
|
144
|
-
data = data[field]
|
145
|
-
end
|
146
153
|
rescue JSON::ParserError
|
147
|
-
|
154
|
+
begin
|
155
|
+
data = YAML.load(a)
|
156
|
+
rescue Psych::SyntaxError => e
|
157
|
+
data = a
|
158
|
+
end
|
148
159
|
end
|
160
|
+
[vault, item, field].each { |tier|
|
161
|
+
if data and data.is_a?(Hash) and tier and data[tier]
|
162
|
+
data = data[tier]
|
163
|
+
end
|
164
|
+
}
|
149
165
|
else
|
150
166
|
data = []
|
151
167
|
Dir.foreach(dir) { |entry|
|
@@ -160,7 +176,7 @@ module MU
|
|
160
176
|
|
161
177
|
# see {MU::Groomer::Ansible.getSecret}
|
162
178
|
def getSecret(vault: nil, item: nil, field: nil)
|
163
|
-
self.class.getSecret(vault: vault, item: item, field: field)
|
179
|
+
self.class.getSecret(vault: vault, item: item, field: field, deploy_dir: @server.deploy.deploy_dir)
|
164
180
|
end
|
165
181
|
|
166
182
|
# Delete a Ansible data bag / Vault
|
@@ -215,7 +231,9 @@ module MU
|
|
215
231
|
play = {
|
216
232
|
"hosts" => @server.config['name']
|
217
233
|
}
|
218
|
-
|
234
|
+
if !@server.windows? and @server.config['ssh_user'] != "root"
|
235
|
+
play["become"] = "yes"
|
236
|
+
end
|
219
237
|
play["roles"] = override_runlist if @server.config['run_list'] and !@server.config['run_list'].empty?
|
220
238
|
play["vars"] = @server.config['ansible_vars'] if @server.config['ansible_vars']
|
221
239
|
|
@@ -252,6 +270,7 @@ module MU
|
|
252
270
|
sleep 30
|
253
271
|
retries += 1
|
254
272
|
MU.log "Failed Ansible run, will retry (#{retries.to_s}/#{max_retries.to_s})", MU::NOTICE, details: cmd
|
273
|
+
|
255
274
|
retry
|
256
275
|
else
|
257
276
|
tmpfile.unlink if tmpfile
|
@@ -280,7 +299,7 @@ module MU
|
|
280
299
|
"hosts" => @server.config['name']
|
281
300
|
}
|
282
301
|
|
283
|
-
if @server.config['ssh_user'] != "root"
|
302
|
+
if !@server.windows? and @server.config['ssh_user'] != "root"
|
284
303
|
play["become"] = "yes"
|
285
304
|
end
|
286
305
|
|
@@ -292,9 +311,26 @@ module MU
|
|
292
311
|
play["vars"] = @server.config['ansible_vars']
|
293
312
|
end
|
294
313
|
|
314
|
+
if @server.windows?
|
315
|
+
play["vars"] ||= {}
|
316
|
+
play["vars"]["ansible_connection"] = "winrm"
|
317
|
+
play["vars"]["ansible_winrm_scheme"] = "https"
|
318
|
+
play["vars"]["ansible_winrm_transport"] = "ntlm"
|
319
|
+
play["vars"]["ansible_winrm_server_cert_validation"] = "ignore" # XXX this sucks; use Mu_CA.pem if we can get it to work
|
320
|
+
# play["vars"]["ansible_winrm_ca_trust_path"] = "#{MU.mySSLDir}/Mu_CA.pem"
|
321
|
+
play["vars"]["ansible_user"] = @server.config['windows_admin_username']
|
322
|
+
win_pw = @server.getWindowsAdminPassword
|
323
|
+
|
324
|
+
pwfile = MU::Groomer::Ansible.vaultPasswordFile
|
325
|
+
cmd = %Q{#{MU::Groomer::Ansible.ansibleExecDir}/ansible-vault}
|
326
|
+
output = %x{#{cmd} encrypt_string '#{win_pw.gsub(/'/, "\\\\'")}' --vault-password-file #{pwfile}}
|
327
|
+
|
328
|
+
play["vars"]["ansible_password"] = output
|
329
|
+
end
|
330
|
+
|
295
331
|
File.open(@ansible_path+"/"+@server.config['name']+".yml", File::CREAT|File::RDWR|File::TRUNC, 0600) { |f|
|
296
332
|
f.flock(File::LOCK_EX)
|
297
|
-
f.puts [play].to_yaml
|
333
|
+
f.puts [play].to_yaml.sub(/ansible_password: \|-?[\n\s]+/, 'ansible_password: ') # Ansible doesn't like this (legal) YAML
|
298
334
|
f.flock(File::LOCK_UN)
|
299
335
|
}
|
300
336
|
end
|
@@ -388,6 +424,7 @@ module MU
|
|
388
424
|
if !system(cmd, "encrypt_string", string, "--name", name, "--vault-password-file", pwfile)
|
389
425
|
raise MuError, "Failed Ansible command: #{cmd} encrypt_string <redacted> --name #{name} --vault-password-file"
|
390
426
|
end
|
427
|
+
output
|
391
428
|
end
|
392
429
|
|
393
430
|
# Hunt down and return a path for Ansible executables
|
data/modules/mu/groomers/chef.rb
CHANGED
@@ -329,7 +329,7 @@ module MU
|
|
329
329
|
}
|
330
330
|
else
|
331
331
|
MU.log "Invoking Chef over WinRM on #{@server.mu_name}: #{purpose}"
|
332
|
-
winrm = @server.getWinRMSession(haveBootstrapped? ?
|
332
|
+
winrm = @server.getWinRMSession(haveBootstrapped? ? 2 : max_retries)
|
333
333
|
if @server.windows? and @server.windowsRebootPending?(winrm)
|
334
334
|
# Windows frequently gets stuck here
|
335
335
|
if retries > 5
|
@@ -415,9 +415,9 @@ module MU
|
|
415
415
|
if retries < max_retries
|
416
416
|
retries += 1
|
417
417
|
MU.log "#{@server.mu_name}: Chef run '#{purpose}' failed after #{Time.new - runstart} seconds, retrying (#{retries}/#{max_retries})", MU::WARN, details: e.message.dup
|
418
|
-
if purpose != "Base Windows configuration"
|
419
|
-
windows_try_ssh = !windows_try_ssh
|
420
|
-
end
|
418
|
+
# if purpose != "Base Windows configuration"
|
419
|
+
# windows_try_ssh = !windows_try_ssh
|
420
|
+
# end
|
421
421
|
if e.is_a?(WinRM::WinRMError)
|
422
422
|
if @server.windows? and retries >= 3 and retries % 3 == 0
|
423
423
|
# Mix in a hard reboot if WinRM isn't answering
|
@@ -623,9 +623,15 @@ module MU
|
|
623
623
|
kb.config[:winrm_port] = 5986
|
624
624
|
kb.config[:session_timeout] = timeout
|
625
625
|
kb.config[:operation_timeout] = timeout
|
626
|
-
|
627
|
-
|
628
|
-
|
626
|
+
if retries % 2 == 0
|
627
|
+
kb.config[:winrm_authentication_protocol] = :basic
|
628
|
+
kb.config[:winrm_user] = @server.config['windows_admin_username']
|
629
|
+
kb.config[:winrm_password] = @server.getWindowsAdminPassword
|
630
|
+
else
|
631
|
+
kb.config[:winrm_authentication_protocol] = :cert
|
632
|
+
kb.config[:winrm_client_cert] = "#{MU.mySSLDir}/#{@server.mu_name}-winrm.crt"
|
633
|
+
kb.config[:winrm_client_key] = "#{MU.mySSLDir}/#{@server.mu_name}-winrm.key"
|
634
|
+
end
|
629
635
|
# kb.config[:ca_trust_file] = "#{MU.mySSLDir}/Mu_CA.pem"
|
630
636
|
# XXX ca_trust_file doesn't work for some reason, so we have to set the below for now
|
631
637
|
kb.config[:winrm_ssl_verify_mode] = :verify_none
|
data/modules/mu/master/ssl.rb
CHANGED
data/modules/mu/mommacat.rb
CHANGED
@@ -976,8 +976,15 @@ module MU
|
|
976
976
|
nil
|
977
977
|
elsif !mu_name.nil?
|
978
978
|
mu_name
|
979
|
+
# AWS-style tags
|
980
|
+
elsif descriptor.respond_to?(:tags) and
|
981
|
+
descriptor.tags.is_a?(Array) and
|
982
|
+
descriptor.tags.first.respond_to?(:key) and
|
983
|
+
descriptor.tags.map { |t| t.key }.include?("Name")
|
984
|
+
descriptor.tags.select { |t| t.key == "Name" }.first.value
|
979
985
|
else
|
980
986
|
try = nil
|
987
|
+
# Various GCP fields
|
981
988
|
[:display_name, :name, (resourceclass.cfg_name+"_name").to_sym].each { |field|
|
982
989
|
if descriptor.respond_to?(field) and descriptor.send(field).is_a?(String)
|
983
990
|
try = descriptor.send(field)
|
@@ -1568,6 +1575,7 @@ MESSAGE_END
|
|
1568
1575
|
MU::Master::SSL.bootstrap
|
1569
1576
|
sans = []
|
1570
1577
|
sans << canonical_ip if canonical_ip
|
1578
|
+
sans << resource.mu_name.downcase if resource.mu_name and resource.mu_name != cert_cn
|
1571
1579
|
# XXX were there other names we wanted to include?
|
1572
1580
|
key = MU::Master::SSL.getKey(cert_cn, keysize: keysize)
|
1573
1581
|
cert, pfx_cert = MU::Master::SSL.getCert(cert_cn, "/CN=#{cert_cn}/O=Mu/C=US", sans: sans, pfx: is_windows)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Test ECS
|
2
|
+
# clouds: AWS
|
3
|
+
---
|
4
|
+
appname: smoketest
|
5
|
+
vpcs:
|
6
|
+
- name: ecs
|
7
|
+
container_clusters:
|
8
|
+
- name: ecsplain
|
9
|
+
flavor: ECS
|
10
|
+
instance_type: t2.medium
|
11
|
+
vpc:
|
12
|
+
name: ecs
|
13
|
+
containers:
|
14
|
+
- name: nginx
|
15
|
+
image: "nginx:1.8"
|
16
|
+
- name: ecsfargate
|
17
|
+
flavor: Fargate
|
18
|
+
instance_type: t2.medium
|
19
|
+
vpc:
|
20
|
+
name: ecs
|
21
|
+
containers:
|
22
|
+
- name: nginx
|
23
|
+
image: "nginx:1.8"
|
@@ -7,7 +7,7 @@ appname: smoketest
|
|
7
7
|
parameters:
|
8
8
|
- name: instancesize
|
9
9
|
prettyname: "Instance Size"
|
10
|
-
default: <%= $environment == "prod" ? "
|
10
|
+
default: <%= $environment == "prod" ? "m4.large" : "t2.small" %>
|
11
11
|
<%= include("poolparams-include.inc") %>
|
12
12
|
vpcs:
|
13
13
|
- name: parsemess
|
@@ -18,6 +18,7 @@ server_pools:
|
|
18
18
|
- name: svr
|
19
19
|
cloud: AWS
|
20
20
|
ssh_user: ec2-user
|
21
|
+
platform: amazon
|
21
22
|
tags:
|
22
23
|
- key: Env
|
23
24
|
value: <%= env %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Windows Server tests
|
2
|
+
# clouds: AWS, Google
|
3
|
+
---
|
4
|
+
appname: smoketest
|
5
|
+
us_only: true
|
6
|
+
vpcs:
|
7
|
+
- name: windows
|
8
|
+
cloud: <%= cloud %>
|
9
|
+
servers:
|
10
|
+
- name: win2k12
|
11
|
+
platform: win2k12
|
12
|
+
cloud: <%= cloud %>
|
13
|
+
<% if cloud == "AWS" %>
|
14
|
+
size: m4.large
|
15
|
+
<% elsif cloud == "Azure" %>
|
16
|
+
size: Standard_DS1_v2
|
17
|
+
<% elsif cloud == "Google" %>
|
18
|
+
size: n1-standard-2
|
19
|
+
<% end %>
|
20
|
+
vpc:
|
21
|
+
name: windows
|
22
|
+
subnet_pref: public
|
23
|
+
associate_public_ip: true
|
24
|
+
static_ip:
|
25
|
+
assign_ip: true
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Windows Server tests
|
2
|
+
# clouds: AWS, Google
|
3
|
+
---
|
4
|
+
appname: smoketest
|
5
|
+
us_only: true
|
6
|
+
vpcs:
|
7
|
+
- name: windows
|
8
|
+
cloud: <%= cloud %>
|
9
|
+
servers:
|
10
|
+
- name: win2k16
|
11
|
+
platform: win2k16
|
12
|
+
cloud: <%= cloud %>
|
13
|
+
<% if cloud == "AWS" %>
|
14
|
+
size: m4.large
|
15
|
+
<% elsif cloud == "Azure" %>
|
16
|
+
size: Standard_DS1_v2
|
17
|
+
<% elsif cloud == "Google" %>
|
18
|
+
size: n1-standard-2
|
19
|
+
<% end %>
|
20
|
+
vpc:
|
21
|
+
name: windows
|
22
|
+
subnet_pref: public
|
23
|
+
associate_public_ip: true
|
24
|
+
static_ip:
|
25
|
+
assign_ip: true
|