cloud-mu 3.1.6 → 3.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.
- checksums.yaml +4 -4
- data/bin/mu-adopt +4 -12
- data/bin/mu-azure-tests +57 -0
- data/bin/mu-cleanup +2 -4
- data/bin/mu-configure +37 -1
- data/bin/mu-deploy +3 -3
- data/bin/mu-findstray-tests +25 -0
- data/bin/mu-gen-docs +2 -4
- data/bin/mu-run-tests +23 -10
- data/cloud-mu.gemspec +2 -2
- data/cookbooks/mu-tools/libraries/helper.rb +1 -1
- data/cookbooks/mu-tools/recipes/apply_security.rb +14 -14
- data/cookbooks/mu-tools/recipes/aws_api.rb +9 -0
- data/extras/generate-stock-images +1 -0
- data/modules/mu.rb +82 -95
- data/modules/mu/adoption.rb +356 -56
- data/modules/mu/cleanup.rb +21 -20
- data/modules/mu/cloud.rb +79 -1753
- data/modules/mu/cloud/database.rb +49 -0
- data/modules/mu/cloud/dnszone.rb +46 -0
- data/modules/mu/cloud/machine_images.rb +212 -0
- data/modules/mu/cloud/providers.rb +81 -0
- data/modules/mu/cloud/resource_base.rb +920 -0
- data/modules/mu/cloud/server.rb +40 -0
- data/modules/mu/cloud/server_pool.rb +1 -0
- data/modules/mu/cloud/ssh_sessions.rb +228 -0
- data/modules/mu/cloud/winrm_sessions.rb +237 -0
- data/modules/mu/cloud/wrappers.rb +165 -0
- data/modules/mu/config.rb +122 -80
- data/modules/mu/config/alarm.rb +2 -6
- data/modules/mu/config/bucket.rb +1 -1
- data/modules/mu/config/cache_cluster.rb +1 -1
- data/modules/mu/config/collection.rb +1 -1
- data/modules/mu/config/container_cluster.rb +2 -2
- data/modules/mu/config/database.rb +83 -104
- data/modules/mu/config/database.yml +1 -2
- data/modules/mu/config/dnszone.rb +1 -1
- data/modules/mu/config/doc_helpers.rb +4 -5
- data/modules/mu/config/endpoint.rb +1 -1
- data/modules/mu/config/firewall_rule.rb +3 -19
- data/modules/mu/config/folder.rb +1 -1
- data/modules/mu/config/function.rb +1 -1
- data/modules/mu/config/group.rb +1 -1
- data/modules/mu/config/habitat.rb +1 -1
- data/modules/mu/config/loadbalancer.rb +57 -11
- data/modules/mu/config/log.rb +1 -1
- data/modules/mu/config/msg_queue.rb +1 -1
- data/modules/mu/config/nosqldb.rb +1 -1
- data/modules/mu/config/notifier.rb +1 -1
- data/modules/mu/config/ref.rb +30 -4
- data/modules/mu/config/role.rb +1 -1
- data/modules/mu/config/schema_helpers.rb +30 -34
- data/modules/mu/config/search_domain.rb +1 -1
- data/modules/mu/config/server.rb +4 -12
- data/modules/mu/config/server_pool.rb +3 -7
- data/modules/mu/config/storage_pool.rb +1 -1
- data/modules/mu/config/tail.rb +10 -0
- data/modules/mu/config/user.rb +1 -1
- data/modules/mu/config/vpc.rb +12 -17
- data/modules/mu/defaults/AWS.yaml +32 -32
- data/modules/mu/defaults/Azure.yaml +1 -0
- data/modules/mu/defaults/Google.yaml +1 -0
- data/modules/mu/deploy.rb +16 -15
- data/modules/mu/groomer.rb +15 -0
- data/modules/mu/groomers/chef.rb +3 -0
- data/modules/mu/logger.rb +120 -144
- data/modules/mu/master.rb +1 -1
- data/modules/mu/mommacat.rb +54 -25
- data/modules/mu/mommacat/daemon.rb +10 -7
- data/modules/mu/mommacat/naming.rb +82 -3
- data/modules/mu/mommacat/search.rb +47 -15
- data/modules/mu/mommacat/storage.rb +72 -41
- data/modules/mu/{clouds → providers}/README.md +1 -1
- data/modules/mu/{clouds → providers}/aws.rb +114 -47
- data/modules/mu/{clouds → providers}/aws/alarm.rb +1 -1
- data/modules/mu/{clouds → providers}/aws/bucket.rb +2 -2
- data/modules/mu/{clouds → providers}/aws/cache_cluster.rb +10 -46
- data/modules/mu/{clouds → providers}/aws/collection.rb +3 -3
- data/modules/mu/{clouds → providers}/aws/container_cluster.rb +15 -33
- data/modules/mu/providers/aws/database.rb +1744 -0
- data/modules/mu/{clouds → providers}/aws/dnszone.rb +2 -5
- data/modules/mu/{clouds → providers}/aws/endpoint.rb +2 -11
- data/modules/mu/{clouds → providers}/aws/firewall_rule.rb +33 -29
- data/modules/mu/{clouds → providers}/aws/folder.rb +0 -0
- data/modules/mu/{clouds → providers}/aws/function.rb +2 -10
- data/modules/mu/{clouds → providers}/aws/group.rb +9 -13
- data/modules/mu/{clouds → providers}/aws/habitat.rb +1 -1
- data/modules/mu/{clouds → providers}/aws/loadbalancer.rb +41 -33
- data/modules/mu/{clouds → providers}/aws/log.rb +2 -2
- data/modules/mu/{clouds → providers}/aws/msg_queue.rb +2 -8
- data/modules/mu/{clouds → providers}/aws/nosqldb.rb +0 -0
- data/modules/mu/{clouds → providers}/aws/notifier.rb +0 -0
- data/modules/mu/{clouds → providers}/aws/role.rb +7 -7
- data/modules/mu/{clouds → providers}/aws/search_domain.rb +8 -13
- data/modules/mu/{clouds → providers}/aws/server.rb +55 -90
- data/modules/mu/{clouds → providers}/aws/server_pool.rb +10 -33
- data/modules/mu/{clouds → providers}/aws/storage_pool.rb +19 -36
- data/modules/mu/{clouds → providers}/aws/user.rb +8 -12
- data/modules/mu/{clouds → providers}/aws/userdata/README.md +0 -0
- data/modules/mu/{clouds → providers}/aws/userdata/linux.erb +0 -0
- data/modules/mu/{clouds → providers}/aws/userdata/windows.erb +0 -0
- data/modules/mu/{clouds → providers}/aws/vpc.rb +135 -70
- data/modules/mu/{clouds → providers}/aws/vpc_subnet.rb +0 -0
- data/modules/mu/{clouds → providers}/azure.rb +4 -1
- data/modules/mu/{clouds → providers}/azure/container_cluster.rb +1 -5
- data/modules/mu/{clouds → providers}/azure/firewall_rule.rb +8 -1
- data/modules/mu/{clouds → providers}/azure/habitat.rb +0 -0
- data/modules/mu/{clouds → providers}/azure/loadbalancer.rb +0 -0
- data/modules/mu/{clouds → providers}/azure/role.rb +0 -0
- data/modules/mu/{clouds → providers}/azure/server.rb +30 -23
- data/modules/mu/{clouds → providers}/azure/user.rb +1 -1
- data/modules/mu/{clouds → providers}/azure/userdata/README.md +0 -0
- data/modules/mu/{clouds → providers}/azure/userdata/linux.erb +0 -0
- data/modules/mu/{clouds → providers}/azure/userdata/windows.erb +0 -0
- data/modules/mu/{clouds → providers}/azure/vpc.rb +4 -6
- data/modules/mu/{clouds → providers}/cloudformation.rb +1 -1
- data/modules/mu/{clouds → providers}/cloudformation/alarm.rb +3 -3
- data/modules/mu/{clouds → providers}/cloudformation/cache_cluster.rb +3 -3
- data/modules/mu/{clouds → providers}/cloudformation/collection.rb +3 -3
- data/modules/mu/{clouds → providers}/cloudformation/database.rb +6 -17
- data/modules/mu/{clouds → providers}/cloudformation/dnszone.rb +3 -3
- data/modules/mu/{clouds → providers}/cloudformation/firewall_rule.rb +3 -3
- data/modules/mu/{clouds → providers}/cloudformation/loadbalancer.rb +3 -3
- data/modules/mu/{clouds → providers}/cloudformation/log.rb +3 -3
- data/modules/mu/{clouds → providers}/cloudformation/server.rb +7 -7
- data/modules/mu/{clouds → providers}/cloudformation/server_pool.rb +5 -5
- data/modules/mu/{clouds → providers}/cloudformation/vpc.rb +3 -3
- data/modules/mu/{clouds → providers}/docker.rb +0 -0
- data/modules/mu/{clouds → providers}/google.rb +14 -6
- data/modules/mu/{clouds → providers}/google/bucket.rb +1 -1
- data/modules/mu/{clouds → providers}/google/container_cluster.rb +28 -13
- data/modules/mu/{clouds → providers}/google/database.rb +1 -8
- data/modules/mu/{clouds → providers}/google/firewall_rule.rb +2 -2
- data/modules/mu/{clouds → providers}/google/folder.rb +4 -8
- data/modules/mu/{clouds → providers}/google/function.rb +3 -3
- data/modules/mu/{clouds → providers}/google/group.rb +8 -16
- data/modules/mu/{clouds → providers}/google/habitat.rb +3 -7
- data/modules/mu/{clouds → providers}/google/loadbalancer.rb +1 -1
- data/modules/mu/{clouds → providers}/google/role.rb +42 -34
- data/modules/mu/{clouds → providers}/google/server.rb +25 -10
- data/modules/mu/{clouds → providers}/google/server_pool.rb +10 -10
- data/modules/mu/{clouds → providers}/google/user.rb +31 -21
- data/modules/mu/{clouds → providers}/google/userdata/README.md +0 -0
- data/modules/mu/{clouds → providers}/google/userdata/linux.erb +0 -0
- data/modules/mu/{clouds → providers}/google/userdata/windows.erb +0 -0
- data/modules/mu/{clouds → providers}/google/vpc.rb +37 -2
- data/modules/tests/centos6.yaml +11 -0
- data/modules/tests/centos7.yaml +11 -0
- data/modules/tests/centos8.yaml +12 -0
- data/modules/tests/rds.yaml +108 -0
- data/modules/tests/regrooms/rds.yaml +123 -0
- data/spec/mu/clouds/azure_spec.rb +2 -2
- metadata +108 -89
- data/modules/mu/clouds/aws/database.rb +0 -1974
|
@@ -218,11 +218,7 @@ module MU
|
|
|
218
218
|
"Azure Kubernetes Service Cluster Admin Role"
|
|
219
219
|
]
|
|
220
220
|
}
|
|
221
|
-
cluster['
|
|
222
|
-
cluster['dependencies'] << {
|
|
223
|
-
"type" => "user",
|
|
224
|
-
"name" => cluster["name"]+"user"
|
|
225
|
-
}
|
|
221
|
+
MU::Config.addDependency(cluster, cluster['name']+"user", "user")
|
|
226
222
|
|
|
227
223
|
ok = false if !configurator.insertKitten(svcacct_desc, "users")
|
|
228
224
|
|
|
@@ -337,7 +337,14 @@ module MU
|
|
|
337
337
|
# We assume that any values we have in +@config+ are placeholders, and
|
|
338
338
|
# calculate our own accordingly based on what's live in the cloud.
|
|
339
339
|
def toKitten(**args)
|
|
340
|
-
|
|
340
|
+
|
|
341
|
+
bok = {
|
|
342
|
+
"cloud" => "Azure",
|
|
343
|
+
"name" => cloud_desc.name,
|
|
344
|
+
"project" => @config['project'],
|
|
345
|
+
"credentials" => @config['credentials'],
|
|
346
|
+
"cloud_id" => @cloud_id.to_s
|
|
347
|
+
}
|
|
341
348
|
|
|
342
349
|
bok
|
|
343
350
|
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -146,7 +146,7 @@ module MU
|
|
|
146
146
|
return nil if @config.nil? or @deploy.nil?
|
|
147
147
|
|
|
148
148
|
nat_ssh_key = nat_ssh_user = nat_ssh_host = nil
|
|
149
|
-
if !@config["vpc"].nil? and !MU::Cloud
|
|
149
|
+
if !@config["vpc"].nil? and !MU::Cloud.resourceClass("Azure", "VPC").haveRouteToInstance?(cloud_desc, region: @config['region'], credentials: @config['credentials'])
|
|
150
150
|
|
|
151
151
|
if !@nat.nil? and @nat.mu_name != @mu_name
|
|
152
152
|
if @nat.cloud_desc.nil?
|
|
@@ -189,7 +189,7 @@ module MU
|
|
|
189
189
|
end
|
|
190
190
|
|
|
191
191
|
_nat_ssh_key, _nat_ssh_user, nat_ssh_host, _canonical_ip, _ssh_user, _ssh_key_name = getSSHConfig
|
|
192
|
-
if !nat_ssh_host and !MU::Cloud
|
|
192
|
+
if !nat_ssh_host and !MU::Cloud.resourceClass("Azure", "VPC").haveRouteToInstance?(cloud_desc, region: @config['region'], credentials: @config['credentials'])
|
|
193
193
|
# XXX check if canonical_ip is in the private ranges
|
|
194
194
|
# raise MuError, "#{node} has no NAT host configured, and I have no other route to it"
|
|
195
195
|
end
|
|
@@ -384,7 +384,7 @@ module MU
|
|
|
384
384
|
# Our deploydata gets corrupted often with server pools, this will cause us to use the wrong IP to identify a node
|
|
385
385
|
# which will cause us to create certificates, DNS records and other artifacts with incorrect information which will cause our deploy to fail.
|
|
386
386
|
# The cloud_id is always correct so lets use 'cloud_desc' to get the correct IPs
|
|
387
|
-
if MU::Cloud
|
|
387
|
+
if MU::Cloud.resourceClass("Azure", "VPC").haveRouteToInstance?(cloud_desc, credentials: @config['credentials']) or public_ips.size == 0
|
|
388
388
|
@config['canonical_ip'] = private_ips.first
|
|
389
389
|
return private_ips.first
|
|
390
390
|
else
|
|
@@ -393,6 +393,28 @@ module MU
|
|
|
393
393
|
end
|
|
394
394
|
end
|
|
395
395
|
|
|
396
|
+
# Return all of the IP addresses, public and private, from all of our
|
|
397
|
+
# network interfaces.
|
|
398
|
+
# @return [Array<String>]
|
|
399
|
+
def listIPs
|
|
400
|
+
ips = []
|
|
401
|
+
cloud_desc.network_profile.network_interfaces.each { |iface|
|
|
402
|
+
iface_id = Id.new(iface.is_a?(Hash) ? iface['id'] : iface.id)
|
|
403
|
+
iface_desc = MU::Cloud::Azure.network(credentials: @credentials).network_interfaces.get(@resource_group, iface_id.to_s)
|
|
404
|
+
iface_desc.ip_configurations.each { |ipcfg|
|
|
405
|
+
ips << ipcfg.private_ipaddress
|
|
406
|
+
if ipcfg.respond_to?(:public_ipaddress) and ipcfg.public_ipaddress
|
|
407
|
+
ip_id = Id.new(ipcfg.public_ipaddress.id)
|
|
408
|
+
ip_desc = MU::Cloud::Azure.network(credentials: @credentials).public_ipaddresses.get(@resource_group, ip_id.to_s)
|
|
409
|
+
if ip_desc
|
|
410
|
+
ips << ip_desc.ip_address
|
|
411
|
+
end
|
|
412
|
+
end
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
ips
|
|
416
|
+
end
|
|
417
|
+
|
|
396
418
|
# return [String]: A password string.
|
|
397
419
|
def getWindowsAdminPassword
|
|
398
420
|
end
|
|
@@ -441,7 +463,7 @@ module MU
|
|
|
441
463
|
hosts_schema = MU::Config::CIDR_PRIMITIVE
|
|
442
464
|
hosts_schema["pattern"] = "^(\\d+\\.\\d+\\.\\d+\\.\\d+\/[0-9]{1,2}|\\*)$"
|
|
443
465
|
schema = {
|
|
444
|
-
"roles" => MU::Cloud
|
|
466
|
+
"roles" => MU::Cloud.resourceClass("Azure", "User").schema(config)[1]["roles"],
|
|
445
467
|
"ingress_rules" => {
|
|
446
468
|
"items" => {
|
|
447
469
|
"properties" => {
|
|
@@ -497,8 +519,7 @@ module MU
|
|
|
497
519
|
foundmatch = false
|
|
498
520
|
MU::Cloud.availableClouds.each { |cloud|
|
|
499
521
|
next if cloud == "Azure"
|
|
500
|
-
|
|
501
|
-
foreign_types = (cloudbase.listInstanceTypes).values.first
|
|
522
|
+
foreign_types = (MU::Cloud.cloudClass(cloud).listInstanceTypes).values.first
|
|
502
523
|
if foreign_types.size == 1
|
|
503
524
|
foreign_types = foreign_types.values.first
|
|
504
525
|
end
|
|
@@ -590,18 +611,8 @@ module MU
|
|
|
590
611
|
if !configurator.insertKitten(vpc, "vpcs", true)
|
|
591
612
|
ok = false
|
|
592
613
|
end
|
|
593
|
-
server['
|
|
594
|
-
|
|
595
|
-
server['dependencies'] << {
|
|
596
|
-
"type" => "vpc",
|
|
597
|
-
"name" => server['name']+"vpc"
|
|
598
|
-
}
|
|
599
|
-
# XXX what happens if there's no natstion here?
|
|
600
|
-
server['dependencies'] << {
|
|
601
|
-
"type" => "server",
|
|
602
|
-
"name" => server['name']+"vpc-natstion",
|
|
603
|
-
"phase" => "groom"
|
|
604
|
-
}
|
|
614
|
+
MU::Config.addDependency(server, server['name']+"vpc", "vpc")
|
|
615
|
+
MU::Config.addDependency(server, server['name']+"vpc-natstion", "server", phase: "groom")
|
|
605
616
|
server['vpc'] = {
|
|
606
617
|
"name" => server['name']+"vpc",
|
|
607
618
|
"subnet_pref" => "private"
|
|
@@ -618,11 +629,7 @@ module MU
|
|
|
618
629
|
"credentials" => server["credentials"],
|
|
619
630
|
"roles" => server["roles"]
|
|
620
631
|
}
|
|
621
|
-
server['
|
|
622
|
-
server['dependencies'] << {
|
|
623
|
-
"type" => "user",
|
|
624
|
-
"name" => server["name"]+"user"
|
|
625
|
-
}
|
|
632
|
+
MU::Config.addDependency(server, server['name']+"user", "user")
|
|
626
633
|
|
|
627
634
|
ok = false if !configurator.insertKitten(svcacct_desc, "users")
|
|
628
635
|
|
|
@@ -107,7 +107,7 @@ module MU
|
|
|
107
107
|
def groom
|
|
108
108
|
if @config['roles']
|
|
109
109
|
@config['roles'].each { |role|
|
|
110
|
-
MU::Cloud
|
|
110
|
+
MU::Cloud.resourceClass("Azure", "Role").assignTo(cloud_desc.principal_id, role_name: role, credentials: @config['credentials'])
|
|
111
111
|
}
|
|
112
112
|
end
|
|
113
113
|
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -335,8 +335,10 @@ module MU
|
|
|
335
335
|
return nil if cloud_desc.name == "default" # parent project builds these
|
|
336
336
|
bok = {
|
|
337
337
|
"cloud" => "Azure",
|
|
338
|
+
"name" => cloud_desc.name,
|
|
338
339
|
"project" => @config['project'],
|
|
339
|
-
"credentials" => @config['credentials']
|
|
340
|
+
"credentials" => @config['credentials'],
|
|
341
|
+
"cloud_id" => @cloud_id.to_s
|
|
340
342
|
}
|
|
341
343
|
|
|
342
344
|
bok
|
|
@@ -424,11 +426,7 @@ module MU
|
|
|
424
426
|
}
|
|
425
427
|
]
|
|
426
428
|
}
|
|
427
|
-
vpc["
|
|
428
|
-
vpc["dependencies"] << {
|
|
429
|
-
"type" => "firewall_rule",
|
|
430
|
-
"name" => vpc['name']+"-defaultfw"
|
|
431
|
-
}
|
|
429
|
+
MU::Config.addDependency(vpc, vpc['name']+"-defaultfw", "firewall_rule")
|
|
432
430
|
|
|
433
431
|
if !configurator.insertKitten(default_acl, "firewall_rules", true)
|
|
434
432
|
ok = false
|
|
@@ -129,7 +129,7 @@ module MU
|
|
|
129
129
|
# @param config [MU::Config]: The calling MU::Config object
|
|
130
130
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
131
131
|
def self.schema(config)
|
|
132
|
-
MU::Cloud
|
|
132
|
+
MU::Cloud.resourceClass("AWS", "Alarm").schema(config)
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::servers}, bare and unvalidated.
|
|
@@ -137,14 +137,14 @@ module MU
|
|
|
137
137
|
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
138
138
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
139
139
|
def self.validateConfig(server, configurator)
|
|
140
|
-
MU::Cloud
|
|
140
|
+
MU::Cloud.resourceClass("AWS", "Alarm").validateConfig(server, configurator)
|
|
141
141
|
end
|
|
142
142
|
|
|
143
143
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
144
144
|
# is it localized to a region/zone?
|
|
145
145
|
# @return [Boolean]
|
|
146
146
|
def self.isGlobal?
|
|
147
|
-
MU::Cloud
|
|
147
|
+
MU::Cloud.resourceClass("AWS", "Alarm").isGlobal?
|
|
148
148
|
end
|
|
149
149
|
|
|
150
150
|
|
|
@@ -150,7 +150,7 @@ module MU
|
|
|
150
150
|
# @param config [MU::Config]: The calling MU::Config object
|
|
151
151
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
152
152
|
def self.schema(config)
|
|
153
|
-
MU::Cloud
|
|
153
|
+
MU::Cloud.resourceClass("AWS", "CacheCluster").schema(config)
|
|
154
154
|
end
|
|
155
155
|
|
|
156
156
|
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::servers}, bare and unvalidated.
|
|
@@ -158,14 +158,14 @@ module MU
|
|
|
158
158
|
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
159
159
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
160
160
|
def self.validateConfig(server, configurator)
|
|
161
|
-
MU::Cloud
|
|
161
|
+
MU::Cloud.resourceClass("AWS", "CacheCluster").validateConfig(server, configurator)
|
|
162
162
|
end
|
|
163
163
|
|
|
164
164
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
165
165
|
# is it localized to a region/zone?
|
|
166
166
|
# @return [Boolean]
|
|
167
167
|
def self.isGlobal?
|
|
168
|
-
MU::Cloud
|
|
168
|
+
MU::Cloud.resourceClass("AWS", "CacheCluster").isGlobal?
|
|
169
169
|
end
|
|
170
170
|
|
|
171
171
|
end
|
|
@@ -100,7 +100,7 @@ module MU
|
|
|
100
100
|
# @param config [MU::Config]: The calling MU::Config object
|
|
101
101
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
102
102
|
def self.schema(config)
|
|
103
|
-
MU::Cloud
|
|
103
|
+
MU::Cloud.resourceClass("AWS", "Collection").schema(config)
|
|
104
104
|
end
|
|
105
105
|
|
|
106
106
|
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::servers}, bare and unvalidated.
|
|
@@ -108,14 +108,14 @@ module MU
|
|
|
108
108
|
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
109
109
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
110
110
|
def self.validateConfig(server, configurator)
|
|
111
|
-
MU::Cloud
|
|
111
|
+
MU::Cloud.resourceClass("AWS", "Collection").validateConfig(server, configurator)
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
115
115
|
# is it localized to a region/zone?
|
|
116
116
|
# @return [Boolean]
|
|
117
117
|
def self.isGlobal?
|
|
118
|
-
MU::Cloud
|
|
118
|
+
MU::Cloud.resourceClass("AWS", "Collection").isGlobal?
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
end
|
|
@@ -64,8 +64,8 @@ module MU
|
|
|
64
64
|
basename = @config["name"].to_s
|
|
65
65
|
basename = basename+@deploy.timestamp+MU.seed.downcase if !@config['scrub_mu_isms']
|
|
66
66
|
basename.gsub!(/[^a-z0-9]/i, "")
|
|
67
|
-
@config["db_name"] = MU::Cloud
|
|
68
|
-
@config['master_user'] = MU::Cloud
|
|
67
|
+
@config["db_name"] = MU::Cloud.resourceClass("AWS", "Database").getName(basename, type: "dbname", config: @config)
|
|
68
|
+
@config['master_user'] = MU::Cloud.resourceClass("AWS", "Database").getName(basename, type: "dbuser", config: @config)
|
|
69
69
|
|
|
70
70
|
if @config["create_cluster"]
|
|
71
71
|
@cfm_name, @cfm_template = MU::Cloud::CloudFormation.cloudFormationBase("dbcluster", self, tags: @config['tags'], scrub_mu_isms: @config['scrub_mu_isms']) if @cfm_template.nil?
|
|
@@ -214,18 +214,7 @@ module MU
|
|
|
214
214
|
elsif @config['db_name']
|
|
215
215
|
MU::Cloud::CloudFormation.setCloudFormationProp(@cfm_template[@cfm_name], "DBName", @config['db_name'])
|
|
216
216
|
end
|
|
217
|
-
|
|
218
|
-
if @config['auth_vault'] && !@config['auth_vault'].empty?
|
|
219
|
-
@config['password'] = @groomclass.getSecret(
|
|
220
|
-
vault: @config['auth_vault']['vault'],
|
|
221
|
-
item: @config['auth_vault']['item'],
|
|
222
|
-
field: @config['auth_vault']['password_field']
|
|
223
|
-
)
|
|
224
|
-
else
|
|
225
|
-
# Should we use random instead?
|
|
226
|
-
@config['password'] = Password.pronounceable(10..12)
|
|
227
|
-
end
|
|
228
|
-
end
|
|
217
|
+
getPassword
|
|
229
218
|
MU::Cloud::CloudFormation.setCloudFormationProp(@cfm_template[@cfm_name], "MasterUserPassword", @config['password'])
|
|
230
219
|
end
|
|
231
220
|
end
|
|
@@ -260,7 +249,7 @@ module MU
|
|
|
260
249
|
# @param config [MU::Config]: The calling MU::Config object
|
|
261
250
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
262
251
|
def self.schema(config)
|
|
263
|
-
MU::Cloud
|
|
252
|
+
MU::Cloud.resourceClass("AWS", "Database").schema(config)
|
|
264
253
|
end
|
|
265
254
|
|
|
266
255
|
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::servers}, bare and unvalidated.
|
|
@@ -268,14 +257,14 @@ module MU
|
|
|
268
257
|
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
269
258
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
270
259
|
def self.validateConfig(server, configurator)
|
|
271
|
-
MU::Cloud
|
|
260
|
+
MU::Cloud.resourceClass("AWS", "Database").validateConfig(server, configurator)
|
|
272
261
|
end
|
|
273
262
|
|
|
274
263
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
275
264
|
# is it localized to a region/zone?
|
|
276
265
|
# @return [Boolean]
|
|
277
266
|
def self.isGlobal?
|
|
278
|
-
MU::Cloud
|
|
267
|
+
MU::Cloud.resourceClass("AWS", "Database").isGlobal?
|
|
279
268
|
end
|
|
280
269
|
|
|
281
270
|
|
|
@@ -257,7 +257,7 @@ module MU
|
|
|
257
257
|
# @param config [MU::Config]: The calling MU::Config object
|
|
258
258
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
259
259
|
def self.schema(config)
|
|
260
|
-
MU::Cloud
|
|
260
|
+
MU::Cloud.resourceClass("AWS", "DNSZone").schema(config)
|
|
261
261
|
end
|
|
262
262
|
|
|
263
263
|
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::servers}, bare and unvalidated.
|
|
@@ -265,14 +265,14 @@ module MU
|
|
|
265
265
|
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
266
266
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
267
267
|
def self.validateConfig(server, configurator)
|
|
268
|
-
MU::Cloud
|
|
268
|
+
MU::Cloud.resourceClass("AWS", "DNSZone").validateConfig(server, configurator)
|
|
269
269
|
end
|
|
270
270
|
|
|
271
271
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
272
272
|
# is it localized to a region/zone?
|
|
273
273
|
# @return [Boolean]
|
|
274
274
|
def self.isGlobal?
|
|
275
|
-
MU::Cloud
|
|
275
|
+
MU::Cloud.resourceClass("AWS", "DNSZone").isGlobal?
|
|
276
276
|
end
|
|
277
277
|
|
|
278
278
|
end
|
|
@@ -137,7 +137,7 @@ module MU
|
|
|
137
137
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
138
138
|
def self.validateConfig(acl, config)
|
|
139
139
|
# Just use the AWS implemention
|
|
140
|
-
MU::Cloud
|
|
140
|
+
MU::Cloud.resourceClass("AWS", "FirewallRule").validateConfig(acl, config)
|
|
141
141
|
end
|
|
142
142
|
|
|
143
143
|
private
|
|
@@ -291,14 +291,14 @@ module MU
|
|
|
291
291
|
# @param config [MU::Config]: The calling MU::Config object
|
|
292
292
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
293
293
|
def self.schema(config)
|
|
294
|
-
MU::Cloud
|
|
294
|
+
MU::Cloud.resourceClass("AWS", "FirewallRule").schema(config)
|
|
295
295
|
end
|
|
296
296
|
|
|
297
297
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
298
298
|
# is it localized to a region/zone?
|
|
299
299
|
# @return [Boolean]
|
|
300
300
|
def self.isGlobal?
|
|
301
|
-
MU::Cloud
|
|
301
|
+
MU::Cloud.resourceClass("AWS", "FirewallRule").isGlobal?
|
|
302
302
|
end
|
|
303
303
|
|
|
304
304
|
end #class
|
|
@@ -176,7 +176,7 @@ module MU
|
|
|
176
176
|
# @param config [MU::Config]: The calling MU::Config object
|
|
177
177
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
178
178
|
def self.schema(config)
|
|
179
|
-
MU::Cloud
|
|
179
|
+
MU::Cloud.resourceClass("AWS", "LoadBalancer").schema(config)
|
|
180
180
|
end
|
|
181
181
|
|
|
182
182
|
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::servers}, bare and unvalidated.
|
|
@@ -184,14 +184,14 @@ module MU
|
|
|
184
184
|
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
185
185
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
186
186
|
def self.validateConfig(server, configurator)
|
|
187
|
-
MU::Cloud
|
|
187
|
+
MU::Cloud.resourceClass("AWS", "LoadBalancer").validateConfig(server, configurator)
|
|
188
188
|
end
|
|
189
189
|
|
|
190
190
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
191
191
|
# is it localized to a region/zone?
|
|
192
192
|
# @return [Boolean]
|
|
193
193
|
def self.isGlobal?
|
|
194
|
-
MU::Cloud
|
|
194
|
+
MU::Cloud.resourceClass("AWS", "LoadBalancer").isGlobal?
|
|
195
195
|
end
|
|
196
196
|
|
|
197
197
|
end
|
|
@@ -153,7 +153,7 @@ module MU
|
|
|
153
153
|
# @param config [MU::Config]: The calling MU::Config object
|
|
154
154
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
155
155
|
def self.schema(config)
|
|
156
|
-
MU::Cloud
|
|
156
|
+
MU::Cloud.resourceClass("AWS", "Log").schema(config)
|
|
157
157
|
end
|
|
158
158
|
|
|
159
159
|
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::servers}, bare and unvalidated.
|
|
@@ -161,14 +161,14 @@ module MU
|
|
|
161
161
|
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
162
162
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
163
163
|
def self.validateConfig(server, configurator)
|
|
164
|
-
MU::Cloud
|
|
164
|
+
MU::Cloud.resourceClass("AWS", "Log").validateConfig(server, configurator)
|
|
165
165
|
end
|
|
166
166
|
|
|
167
167
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
168
168
|
# is it localized to a region/zone?
|
|
169
169
|
# @return [Boolean]
|
|
170
170
|
def self.isGlobal?
|
|
171
|
-
MU::Cloud
|
|
171
|
+
MU::Cloud.resourceClass("AWS", "Log").isGlobal?
|
|
172
172
|
end
|
|
173
173
|
|
|
174
174
|
end
|
|
@@ -55,8 +55,8 @@ module MU
|
|
|
55
55
|
scrub_mu_isms: @config['scrub_mu_isms']
|
|
56
56
|
)
|
|
57
57
|
|
|
58
|
-
@disk_devices = MU::Cloud
|
|
59
|
-
@ephemeral_mappings = MU::Cloud
|
|
58
|
+
@disk_devices = MU::Cloud.resourceClass("AWS", "Server").disk_devices
|
|
59
|
+
@ephemeral_mappings = MU::Cloud.resourceClass("AWS", "Server").ephemeral_mappings
|
|
60
60
|
|
|
61
61
|
if !mu_name.nil?
|
|
62
62
|
@mu_name = mu_name
|
|
@@ -190,7 +190,7 @@ module MU
|
|
|
190
190
|
cfm_volume_map = {}
|
|
191
191
|
if @config["storage"]
|
|
192
192
|
@config["storage"].each { |vol|
|
|
193
|
-
mapping, cfm_mapping = MU::Cloud
|
|
193
|
+
mapping, cfm_mapping = MU::Cloud.resourceClass("AWS", "Server").convertBlockDeviceMapping(vol)
|
|
194
194
|
configured_storage << mapping
|
|
195
195
|
# vol_name, vol_template = MU::Cloud::CloudFormation.cloudFormationBase("volume", name: "volume"+@cfm_name+mapping[:device_name])
|
|
196
196
|
# MU::Cloud::CloudFormation.setCloudFormationProp(vol_template[vol_name], "Size", mapping[:ebs][:volume_size].to_s)
|
|
@@ -353,7 +353,7 @@ module MU
|
|
|
353
353
|
# @param config [MU::Config]: The calling MU::Config object
|
|
354
354
|
# @return [Array<Array,Hash>]: List of required fields, and json-schema Hash of cloud-specific configuration parameters for this resource
|
|
355
355
|
def self.schema(config)
|
|
356
|
-
MU::Cloud
|
|
356
|
+
MU::Cloud.resourceClass("AWS", "Server").schema(config)
|
|
357
357
|
end
|
|
358
358
|
|
|
359
359
|
# Confirm that the given instance size is valid for the given region.
|
|
@@ -362,7 +362,7 @@ module MU
|
|
|
362
362
|
# @param region [String]: Region to check against
|
|
363
363
|
# @return [String,nil]
|
|
364
364
|
def self.validateInstanceType(size, region)
|
|
365
|
-
MU::Cloud
|
|
365
|
+
MU::Cloud.resourceClass("AWS", "Server").validateInstanceType(size, region)
|
|
366
366
|
end
|
|
367
367
|
|
|
368
368
|
# Cloud-specific pre-processing of {MU::Config::BasketofKittens::servers}, bare and unvalidated.
|
|
@@ -370,14 +370,14 @@ module MU
|
|
|
370
370
|
# @param configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
371
371
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
372
372
|
def self.validateConfig(server, configurator)
|
|
373
|
-
MU::Cloud
|
|
373
|
+
MU::Cloud.resourceClass("AWS", "Server").validateConfig(server, configurator)
|
|
374
374
|
end
|
|
375
375
|
|
|
376
376
|
# Does this resource type exist as a global (cloud-wide) artifact, or
|
|
377
377
|
# is it localized to a region/zone?
|
|
378
378
|
# @return [Boolean]
|
|
379
379
|
def self.isGlobal?
|
|
380
|
-
MU::Cloud
|
|
380
|
+
MU::Cloud.resourceClass("AWS", "Server").isGlobal?
|
|
381
381
|
end
|
|
382
382
|
|
|
383
383
|
end #class
|