cloud-mu 3.1.2 → 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/Dockerfile +15 -3
- data/ansible/roles/mu-windows/README.md +33 -0
- data/ansible/roles/mu-windows/defaults/main.yml +2 -0
- data/ansible/roles/mu-windows/files/LaunchConfig.json +9 -0
- data/ansible/roles/mu-windows/files/config.xml +76 -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 +36 -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/bin/mu-adopt +10 -13
- data/bin/mu-azure-tests +57 -0
- data/bin/mu-cleanup +2 -4
- data/bin/mu-configure +52 -0
- data/bin/mu-deploy +3 -3
- data/bin/mu-findstray-tests +25 -0
- data/bin/mu-gen-docs +2 -4
- data/bin/mu-load-config.rb +2 -3
- data/bin/mu-node-manage +15 -16
- data/bin/mu-run-tests +135 -37
- data/cloud-mu.gemspec +22 -20
- data/cookbooks/mu-activedirectory/resources/domain.rb +4 -4
- data/cookbooks/mu-activedirectory/resources/domain_controller.rb +4 -4
- data/cookbooks/mu-tools/libraries/helper.rb +3 -2
- data/cookbooks/mu-tools/libraries/monkey.rb +35 -0
- data/cookbooks/mu-tools/recipes/apply_security.rb +14 -14
- data/cookbooks/mu-tools/recipes/aws_api.rb +9 -0
- data/cookbooks/mu-tools/recipes/eks.rb +2 -2
- data/cookbooks/mu-tools/recipes/google_api.rb +2 -2
- data/cookbooks/mu-tools/recipes/selinux.rb +2 -1
- data/cookbooks/mu-tools/recipes/windows-client.rb +163 -164
- data/cookbooks/mu-tools/resources/disk.rb +1 -1
- data/cookbooks/mu-tools/resources/windows_users.rb +44 -43
- data/extras/clean-stock-amis +25 -19
- data/extras/generate-stock-images +1 -0
- data/extras/image-generators/AWS/win2k12.yaml +18 -13
- data/extras/image-generators/AWS/win2k16.yaml +18 -13
- data/extras/image-generators/AWS/win2k19.yaml +21 -0
- data/extras/image-generators/Google/centos6.yaml +1 -0
- data/extras/image-generators/Google/centos7.yaml +1 -1
- data/modules/mommacat.ru +6 -16
- data/modules/mu.rb +165 -111
- data/modules/mu/adoption.rb +401 -68
- data/modules/mu/cleanup.rb +199 -306
- data/modules/mu/cloud.rb +100 -1632
- 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 +171 -1767
- data/modules/mu/config/alarm.rb +2 -6
- data/modules/mu/config/bucket.rb +4 -4
- data/modules/mu/config/cache_cluster.rb +1 -1
- data/modules/mu/config/collection.rb +4 -4
- data/modules/mu/config/container_cluster.rb +9 -4
- data/modules/mu/config/database.rb +83 -104
- data/modules/mu/config/database.yml +1 -2
- data/modules/mu/config/dnszone.rb +6 -6
- data/modules/mu/config/doc_helpers.rb +516 -0
- data/modules/mu/config/endpoint.rb +4 -4
- data/modules/mu/config/firewall_rule.rb +103 -4
- data/modules/mu/config/folder.rb +4 -4
- data/modules/mu/config/function.rb +3 -3
- data/modules/mu/config/group.rb +4 -4
- data/modules/mu/config/habitat.rb +4 -4
- data/modules/mu/config/loadbalancer.rb +60 -14
- data/modules/mu/config/log.rb +4 -4
- data/modules/mu/config/msg_queue.rb +4 -4
- data/modules/mu/config/nosqldb.rb +4 -4
- data/modules/mu/config/notifier.rb +3 -3
- data/modules/mu/config/ref.rb +365 -0
- data/modules/mu/config/role.rb +4 -4
- data/modules/mu/config/schema_helpers.rb +509 -0
- data/modules/mu/config/search_domain.rb +4 -4
- data/modules/mu/config/server.rb +97 -70
- data/modules/mu/config/server.yml +1 -0
- data/modules/mu/config/server_pool.rb +5 -9
- data/modules/mu/config/storage_pool.rb +1 -1
- data/modules/mu/config/tail.rb +200 -0
- data/modules/mu/config/user.rb +4 -4
- data/modules/mu/config/vpc.rb +70 -27
- data/modules/mu/config/vpc.yml +0 -1
- data/modules/mu/defaults/AWS.yaml +83 -60
- data/modules/mu/defaults/Azure.yaml +1 -0
- data/modules/mu/defaults/Google.yaml +3 -2
- data/modules/mu/deploy.rb +30 -26
- data/modules/mu/groomer.rb +17 -2
- data/modules/mu/groomers/ansible.rb +188 -41
- data/modules/mu/groomers/chef.rb +116 -55
- data/modules/mu/logger.rb +127 -148
- data/modules/mu/master.rb +389 -2
- data/modules/mu/master/chef.rb +3 -4
- data/modules/mu/master/ldap.rb +3 -3
- data/modules/mu/master/ssl.rb +12 -3
- data/modules/mu/mommacat.rb +217 -2612
- data/modules/mu/mommacat/daemon.rb +397 -0
- data/modules/mu/mommacat/naming.rb +473 -0
- data/modules/mu/mommacat/search.rb +495 -0
- data/modules/mu/mommacat/storage.rb +722 -0
- data/modules/mu/{clouds → providers}/README.md +1 -1
- data/modules/mu/{clouds → providers}/aws.rb +271 -112
- data/modules/mu/{clouds → providers}/aws/alarm.rb +5 -3
- data/modules/mu/{clouds → providers}/aws/bucket.rb +26 -22
- data/modules/mu/{clouds → providers}/aws/cache_cluster.rb +33 -67
- data/modules/mu/{clouds → providers}/aws/collection.rb +24 -23
- data/modules/mu/{clouds → providers}/aws/container_cluster.rb +681 -721
- data/modules/mu/providers/aws/database.rb +1744 -0
- data/modules/mu/{clouds → providers}/aws/dnszone.rb +64 -63
- data/modules/mu/{clouds → providers}/aws/endpoint.rb +22 -27
- data/modules/mu/{clouds → providers}/aws/firewall_rule.rb +214 -244
- data/modules/mu/{clouds → providers}/aws/folder.rb +7 -7
- data/modules/mu/{clouds → providers}/aws/function.rb +17 -22
- data/modules/mu/{clouds → providers}/aws/group.rb +23 -23
- data/modules/mu/{clouds → providers}/aws/habitat.rb +17 -14
- data/modules/mu/{clouds → providers}/aws/loadbalancer.rb +57 -48
- data/modules/mu/{clouds → providers}/aws/log.rb +15 -12
- data/modules/mu/{clouds → providers}/aws/msg_queue.rb +17 -16
- data/modules/mu/{clouds → providers}/aws/nosqldb.rb +18 -11
- data/modules/mu/{clouds → providers}/aws/notifier.rb +11 -6
- data/modules/mu/{clouds → providers}/aws/role.rb +112 -86
- data/modules/mu/{clouds → providers}/aws/search_domain.rb +39 -33
- data/modules/mu/{clouds → providers}/aws/server.rb +835 -1133
- data/modules/mu/{clouds → providers}/aws/server_pool.rb +56 -60
- data/modules/mu/{clouds → providers}/aws/storage_pool.rb +24 -42
- data/modules/mu/{clouds → providers}/aws/user.rb +21 -22
- 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 +2 -1
- data/modules/mu/{clouds → providers}/aws/vpc.rb +523 -929
- data/modules/mu/providers/aws/vpc_subnet.rb +286 -0
- data/modules/mu/{clouds → providers}/azure.rb +29 -9
- data/modules/mu/{clouds → providers}/azure/container_cluster.rb +3 -8
- data/modules/mu/{clouds → providers}/azure/firewall_rule.rb +18 -11
- data/modules/mu/{clouds → providers}/azure/habitat.rb +8 -6
- data/modules/mu/{clouds → providers}/azure/loadbalancer.rb +5 -5
- data/modules/mu/{clouds → providers}/azure/role.rb +8 -10
- data/modules/mu/{clouds → providers}/azure/server.rb +95 -48
- data/modules/mu/{clouds → providers}/azure/user.rb +6 -8
- 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 +16 -21
- data/modules/mu/{clouds → providers}/cloudformation.rb +18 -7
- 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 +5 -7
- data/modules/mu/{clouds → providers}/docker.rb +0 -0
- data/modules/mu/{clouds → providers}/google.rb +67 -30
- data/modules/mu/{clouds → providers}/google/bucket.rb +13 -15
- data/modules/mu/{clouds → providers}/google/container_cluster.rb +84 -77
- data/modules/mu/{clouds → providers}/google/database.rb +10 -20
- data/modules/mu/{clouds → providers}/google/firewall_rule.rb +15 -14
- data/modules/mu/{clouds → providers}/google/folder.rb +20 -17
- data/modules/mu/{clouds → providers}/google/function.rb +139 -167
- data/modules/mu/{clouds → providers}/google/group.rb +29 -34
- data/modules/mu/{clouds → providers}/google/habitat.rb +21 -22
- data/modules/mu/{clouds → providers}/google/loadbalancer.rb +18 -20
- data/modules/mu/{clouds → providers}/google/role.rb +92 -58
- data/modules/mu/{clouds → providers}/google/server.rb +242 -155
- data/modules/mu/{clouds → providers}/google/server_pool.rb +25 -44
- data/modules/mu/{clouds → providers}/google/user.rb +95 -31
- 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 +103 -79
- data/modules/tests/bucket.yml +4 -0
- data/modules/tests/centos6.yaml +11 -0
- data/modules/tests/centos7.yaml +11 -0
- data/modules/tests/centos8.yaml +12 -0
- data/modules/tests/ecs.yaml +23 -0
- data/modules/tests/includes-and-params.yaml +2 -1
- data/modules/tests/rds.yaml +108 -0
- data/modules/tests/regrooms/aws-iam.yaml +201 -0
- data/modules/tests/regrooms/bucket.yml +19 -0
- data/modules/tests/regrooms/rds.yaml +123 -0
- data/modules/tests/server-with-scrub-muisms.yaml +1 -0
- data/modules/tests/super_simple_bok.yml +1 -3
- data/modules/tests/win2k12.yaml +17 -5
- data/modules/tests/win2k16.yaml +25 -0
- data/modules/tests/win2k19.yaml +25 -0
- data/requirements.txt +1 -0
- data/spec/mu/clouds/azure_spec.rb +2 -2
- metadata +232 -154
- data/extras/image-generators/AWS/windows.yaml +0 -18
- data/modules/mu/clouds/aws/database.rb +0 -1985
data/modules/mu/config/user.rb
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
module MU
|
|
16
16
|
class Config
|
|
17
|
-
# Basket of Kittens config schema and parser logic. See modules/mu/
|
|
17
|
+
# Basket of Kittens config schema and parser logic. See modules/mu/providers/*/user.rb
|
|
18
18
|
class User
|
|
19
19
|
|
|
20
20
|
# Base configuration schema for a User
|
|
@@ -68,10 +68,10 @@ module MU
|
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
# Generic pre-processing of {MU::Config::BasketofKittens::user}, bare and unvalidated.
|
|
71
|
-
# @param
|
|
72
|
-
# @param
|
|
71
|
+
# @param _user [Hash]: The resource to process and validate
|
|
72
|
+
# @param _configurator [MU::Config]: The overall deployment configurator of which this resource is a member
|
|
73
73
|
# @return [Boolean]: True if validation succeeded, False otherwise
|
|
74
|
-
def self.validate(
|
|
74
|
+
def self.validate(_user, _configurator)
|
|
75
75
|
ok = true
|
|
76
76
|
|
|
77
77
|
ok
|
data/modules/mu/config/vpc.rb
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
module MU
|
|
16
16
|
class Config
|
|
17
|
-
# Basket of Kittens config schema and parser logic. See modules/mu/
|
|
17
|
+
# Basket of Kittens config schema and parser logic. See modules/mu/providers/*/vpc.rb
|
|
18
18
|
class VPC
|
|
19
19
|
|
|
20
20
|
# Base configuration schema for a VPC
|
|
@@ -418,9 +418,8 @@ module MU
|
|
|
418
418
|
if !vpc['ip_block']
|
|
419
419
|
if configurator.updating and configurator.existing_deploy and
|
|
420
420
|
configurator.existing_deploy.original_config['vpcs']
|
|
421
|
-
pieces = []
|
|
422
421
|
configurator.existing_deploy.original_config['vpcs'].each { |v|
|
|
423
|
-
if v['name'] == vpc['name']
|
|
422
|
+
if v['name'].to_s == vpc['name'].to_s
|
|
424
423
|
vpc['ip_block'] = v['ip_block']
|
|
425
424
|
vpc['peers'] ||= []
|
|
426
425
|
vpc['peers'].concat(v['peers'])
|
|
@@ -432,6 +431,10 @@ module MU
|
|
|
432
431
|
break
|
|
433
432
|
end
|
|
434
433
|
}
|
|
434
|
+
if !vpc['ip_block']
|
|
435
|
+
MU.log "Loading existing deploy but can't find IP block of VPC #{vpc['name']}", MU::ERR
|
|
436
|
+
ok = false
|
|
437
|
+
end
|
|
435
438
|
else
|
|
436
439
|
using_default_cidr = true
|
|
437
440
|
vpc['ip_block'] = "10.0.0.0/16"
|
|
@@ -494,6 +497,7 @@ module MU
|
|
|
494
497
|
# See if we'll be able to create peering connections
|
|
495
498
|
can_peer = false
|
|
496
499
|
already_peered = false
|
|
500
|
+
|
|
497
501
|
if MU.myCloud == vpc["cloud"] and MU.myVPCObj
|
|
498
502
|
if vpc['peers']
|
|
499
503
|
vpc['peers'].each { |peer|
|
|
@@ -539,7 +543,7 @@ module MU
|
|
|
539
543
|
# Clouds that don't have some kind of native NAT gateway can also
|
|
540
544
|
# leverage this host to honor "gateway" => "#NAT" situations.
|
|
541
545
|
if !can_peer and !already_peered and have_public and vpc["create_bastion"]
|
|
542
|
-
serverclass =
|
|
546
|
+
serverclass = MU::Cloud.resourceClass(vpc["cloud"], "Server")
|
|
543
547
|
bastion = serverclass.genericNAT.dup
|
|
544
548
|
bastion["groomer_variables"] = {
|
|
545
549
|
"nat_ip_block" => vpc["ip_block"].to_s
|
|
@@ -558,10 +562,7 @@ module MU
|
|
|
558
562
|
"name" => vpc["name"],
|
|
559
563
|
"subnet_pref" => "public"
|
|
560
564
|
}
|
|
561
|
-
vpc["
|
|
562
|
-
"type" => "server",
|
|
563
|
-
"name" => bastion['name'],
|
|
564
|
-
}
|
|
565
|
+
MU::Config.addDependency(vpc, bastion['name'], "server", no_create_wait: true)
|
|
565
566
|
vpc["bastion"] = MU::Config::Ref.get(
|
|
566
567
|
name: bastion['name'],
|
|
567
568
|
cloud: vpc['cloud'],
|
|
@@ -596,7 +597,7 @@ module MU
|
|
|
596
597
|
MU.log "Skipping malformed VPC peer in #{vpc['name']}", MU::ERR, details: peer
|
|
597
598
|
next
|
|
598
599
|
end
|
|
599
|
-
peer["#MU_CLOUDCLASS"] =
|
|
600
|
+
peer["#MU_CLOUDCLASS"] = MU::Cloud.loadBaseType("VPC")
|
|
600
601
|
# We check for multiple siblings because some implementations
|
|
601
602
|
# (Google) can split declared VPCs into parts to get the mimic the
|
|
602
603
|
# routing behaviors we expect.
|
|
@@ -613,17 +614,11 @@ module MU
|
|
|
613
614
|
append_me = { "vpc" => peer["vpc"].dup }
|
|
614
615
|
append_me['vpc']['name'] = sib['name']
|
|
615
616
|
append << append_me
|
|
616
|
-
vpc["
|
|
617
|
-
"type" => "vpc",
|
|
618
|
-
"name" => sib['name']
|
|
619
|
-
}
|
|
617
|
+
MU::Config.addDependency(vpc, sib['name'], "vpc", phase: "groom", no_create_wait: true)
|
|
620
618
|
end
|
|
621
619
|
delete << peer
|
|
622
620
|
else
|
|
623
|
-
vpc["
|
|
624
|
-
"type" => "vpc",
|
|
625
|
-
"name" => peer['vpc']["name"]
|
|
626
|
-
}
|
|
621
|
+
MU::Config.addDependency(vpc, peer['vpc']['name'], "vpc", phase: "groom", no_create_wait: true)
|
|
627
622
|
end
|
|
628
623
|
delete << peer if sib['name'] == vpc['name']
|
|
629
624
|
}
|
|
@@ -637,7 +632,7 @@ module MU
|
|
|
637
632
|
MU.log "VPC peering connections to non-local accounts must specify the vpc_id of the peer.", MU::ERR
|
|
638
633
|
ok = false
|
|
639
634
|
end
|
|
640
|
-
elsif !processReference(peer['vpc'], "vpcs",
|
|
635
|
+
elsif !processReference(peer['vpc'], "vpcs", vpc, configurator, dflt_region: peer["vpc"]['region'])
|
|
641
636
|
ok = false
|
|
642
637
|
end
|
|
643
638
|
end
|
|
@@ -736,8 +731,8 @@ module MU
|
|
|
736
731
|
vpc_block["subnet_pref"] = "all_private" if vpc_block["subnet_pref"] == "private"
|
|
737
732
|
end
|
|
738
733
|
|
|
739
|
-
flags = {}
|
|
740
|
-
flags["subnet_pref"] = vpc_block["subnet_pref"] if !vpc_block["subnet_pref"].nil?
|
|
734
|
+
# flags = {}
|
|
735
|
+
# flags["subnet_pref"] = vpc_block["subnet_pref"] if !vpc_block["subnet_pref"].nil?
|
|
741
736
|
hab_arg = if vpc_block['habitat']
|
|
742
737
|
if vpc_block['habitat'].is_a?(MU::Config::Ref)
|
|
743
738
|
[vpc_block['habitat'].id] # XXX actually, findStray it
|
|
@@ -771,9 +766,9 @@ MU.log "VPC lookup cache hit", MU::WARN, details: vpc_block
|
|
|
771
766
|
tag_key: tag_key,
|
|
772
767
|
tag_value: tag_value,
|
|
773
768
|
region: vpc_block["region"],
|
|
774
|
-
flags: flags,
|
|
775
769
|
habitats: hab_arg,
|
|
776
|
-
dummy_ok: true
|
|
770
|
+
dummy_ok: true,
|
|
771
|
+
subnet_pref: vpc_block["subnet_pref"]
|
|
777
772
|
)
|
|
778
773
|
|
|
779
774
|
found.first if found and found.size == 1
|
|
@@ -799,8 +794,8 @@ MU.log "VPC lookup cache hit", MU::WARN, details: vpc_block
|
|
|
799
794
|
end
|
|
800
795
|
@@reference_cache[vpc_block] ||= ext_vpc if ok
|
|
801
796
|
end
|
|
802
|
-
rescue
|
|
803
|
-
raise MuError
|
|
797
|
+
rescue StandardError => e
|
|
798
|
+
raise MuError.new e.inspect, details: { "my call stack" => caller, "exception call stack" => e.backtrace }
|
|
804
799
|
ensure
|
|
805
800
|
if !ext_vpc and vpc_block['cloud'] != "CloudFormation"
|
|
806
801
|
MU.log "Couldn't resolve VPC reference to a unique live VPC in #{parent_type} #{parent['name']} (called by #{caller[0]})", MU::ERR, details: vpc_block
|
|
@@ -877,7 +872,7 @@ MU.log "VPC lookup cache hit", MU::WARN, details: vpc_block
|
|
|
877
872
|
tag_key, tag_value = vpc_block['tag'].split(/=/, 2) if !vpc_block['tag'].nil?
|
|
878
873
|
begin
|
|
879
874
|
ext_subnet = ext_vpc.getSubnet(cloud_id: vpc_block['subnet_id'], name: vpc_block['subnet_name'], tag_key: tag_key, tag_value: tag_value)
|
|
880
|
-
rescue MuError
|
|
875
|
+
rescue MuError
|
|
881
876
|
end
|
|
882
877
|
|
|
883
878
|
if ext_subnet.nil?
|
|
@@ -918,14 +913,20 @@ MU.log "VPC lookup cache hit", MU::WARN, details: vpc_block
|
|
|
918
913
|
public_subnets = []
|
|
919
914
|
public_subnets_map = {}
|
|
920
915
|
subnet_ptr = "subnet_id"
|
|
921
|
-
all_subnets = []
|
|
922
916
|
if !is_sibling
|
|
923
917
|
pub = priv = 0
|
|
924
918
|
raise MuError, "No subnets found in #{ext_vpc}" if ext_vpc.subnets.nil?
|
|
925
919
|
ext_vpc.subnets.each { |subnet|
|
|
926
920
|
next if dflt_region and vpc_block["cloud"] == "Google" and subnet.az != dflt_region
|
|
927
921
|
if subnet.private? and (vpc_block['subnet_pref'] != "all_public" and vpc_block['subnet_pref'] != "public")
|
|
928
|
-
private_subnets << {
|
|
922
|
+
private_subnets << {
|
|
923
|
+
"subnet_id" => configurator.getTail(
|
|
924
|
+
"#{parent['name']} Private Subnet #{priv}",
|
|
925
|
+
value: subnet.cloud_id,
|
|
926
|
+
prettyname: "#{parent['name']} Private Subnet #{priv}",
|
|
927
|
+
cloudtype: "AWS::EC2::Subnet::Id"),
|
|
928
|
+
"az" => subnet.az
|
|
929
|
+
}
|
|
929
930
|
private_subnets_map[subnet.cloud_id] = subnet
|
|
930
931
|
priv = priv + 1
|
|
931
932
|
elsif !subnet.private? and vpc_block['subnet_pref'] != "all_private" and vpc_block['subnet_pref'] != "private"
|
|
@@ -1068,5 +1069,47 @@ MU.log "VPC lookup cache hit", MU::WARN, details: vpc_block
|
|
|
1068
1069
|
end
|
|
1069
1070
|
|
|
1070
1071
|
end
|
|
1072
|
+
|
|
1073
|
+
# Take an IP block and split it into a more-or-less arbitrary number of
|
|
1074
|
+
# subnets.
|
|
1075
|
+
# @param ip_block [String]: CIDR of the network to subdivide
|
|
1076
|
+
# @param subnets_desired [Integer]: Number of subnets we want back
|
|
1077
|
+
# @param max_mask [Integer]: The highest netmask we're allowed to use for a subnet (various by cloud provider)
|
|
1078
|
+
# @return [MU::Config::Tail]: Resulting subnet tails, or nil if an error occurred.
|
|
1079
|
+
def divideNetwork(ip_block, subnets_desired, max_mask = 28)
|
|
1080
|
+
cidr = NetAddr::IPv4Net.parse(ip_block.to_s)
|
|
1081
|
+
|
|
1082
|
+
# Ugly but reliable method of landing on the right subnet size
|
|
1083
|
+
subnet_bits = cidr.netmask.prefix_len
|
|
1084
|
+
begin
|
|
1085
|
+
subnet_bits += 1
|
|
1086
|
+
if subnet_bits > max_mask
|
|
1087
|
+
MU.log "Can't subdivide #{cidr.to_s} into #{subnets_desired.to_s}", MU::ERR
|
|
1088
|
+
raise MuError, "Subnets smaller than /#{max_mask} not permitted"
|
|
1089
|
+
end
|
|
1090
|
+
end while cidr.subnet_count(subnet_bits) < subnets_desired
|
|
1091
|
+
|
|
1092
|
+
if cidr.subnet_count(subnet_bits) > subnets_desired
|
|
1093
|
+
MU.log "Requested #{subnets_desired.to_s} subnets from #{cidr.to_s}, leaving #{(cidr.subnet_count(subnet_bits)-subnets_desired).to_s} unused /#{subnet_bits.to_s}s available", MU::NOTICE
|
|
1094
|
+
end
|
|
1095
|
+
|
|
1096
|
+
begin
|
|
1097
|
+
subnets = []
|
|
1098
|
+
(0..subnets_desired).each { |x|
|
|
1099
|
+
subnets << cidr.nth_subnet(subnet_bits, x).to_s
|
|
1100
|
+
}
|
|
1101
|
+
rescue RuntimeError => e
|
|
1102
|
+
if e.message.match(/exceeds subnets available for allocation/)
|
|
1103
|
+
MU.log e.message, MU::ERR
|
|
1104
|
+
MU.log "I'm attempting to create #{subnets_desired} subnets (one public and one private for each Availability Zone), of #{subnet_size} addresses each, but that's too many for a /#{cidr.netmask.prefix_len} network. Either declare a larger network, or explicitly declare a list of subnets with few enough entries to fit.", MU::ERR
|
|
1105
|
+
return nil
|
|
1106
|
+
else
|
|
1107
|
+
raise e
|
|
1108
|
+
end
|
|
1109
|
+
end
|
|
1110
|
+
|
|
1111
|
+
subnets = getTail("subnetblocks", value: subnets.join(","), cloudtype: "CommaDelimitedList", description: "IP Address ranges to be used for VPC subnets", prettyname: "SubnetIpBlocks", list_of: "ip_block").map { |tail| tail["ip_block"] }
|
|
1112
|
+
subnets
|
|
1113
|
+
end
|
|
1071
1114
|
end
|
|
1072
1115
|
end
|
data/modules/mu/config/vpc.yml
CHANGED
|
@@ -17,39 +17,39 @@ rhel71: &4
|
|
|
17
17
|
us-west-1: ami-04898e596c06e802b
|
|
18
18
|
us-west-2: ami-02db5457189a8a8c2
|
|
19
19
|
centos6: &3
|
|
20
|
-
us-east-1: ami-
|
|
21
|
-
|
|
22
|
-
ap-northeast-
|
|
23
|
-
ap-
|
|
24
|
-
ap-
|
|
25
|
-
ap-southeast-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
eu-
|
|
29
|
-
eu-
|
|
30
|
-
eu-west-
|
|
31
|
-
eu-west-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
us-west-1: ami-
|
|
35
|
-
us-west-2: ami-
|
|
20
|
+
us-east-1: ami-0ccdc671f12147a1d
|
|
21
|
+
us-east-2: ami-00d0e8bc2f05ab949
|
|
22
|
+
ap-northeast-1: ami-0726801ceef87f5f8
|
|
23
|
+
ap-northeast-2: ami-05fa4afc4a0493b0a
|
|
24
|
+
ap-south-1: ami-0d6e4f3b6592b3139
|
|
25
|
+
ap-southeast-1: ami-0c988e3dc80b14653
|
|
26
|
+
ap-southeast-2: ami-02ac856fd094675ef
|
|
27
|
+
ca-central-1: ami-0ce7e343953af2292
|
|
28
|
+
eu-central-1: ami-0ce8317423cea27b8
|
|
29
|
+
eu-north-1: ami-0a923b493d5fc9743
|
|
30
|
+
eu-west-1: ami-06e0f02328921c865
|
|
31
|
+
eu-west-2: ami-07ae118c8814df140
|
|
32
|
+
eu-west-3: ami-03c1017cd1ccc6e9d
|
|
33
|
+
sa-east-1: ami-05212ae133b9c3ba1
|
|
34
|
+
us-west-1: ami-0b05ec54412b9f8b0
|
|
35
|
+
us-west-2: ami-0447e036b102b2ca0
|
|
36
36
|
centos7:
|
|
37
|
-
us-east-1: ami-
|
|
38
|
-
ap-northeast-1: ami-
|
|
39
|
-
ap-northeast-2: ami-
|
|
40
|
-
ap-south-1: ami-
|
|
41
|
-
ap-southeast-1: ami-
|
|
42
|
-
ap-southeast-2: ami-
|
|
43
|
-
ca-central-1: ami-
|
|
44
|
-
eu-central-1: ami-
|
|
45
|
-
eu-north-1: ami-
|
|
46
|
-
eu-west-1: ami-
|
|
47
|
-
eu-west-2: ami-
|
|
48
|
-
eu-west-3: ami-
|
|
49
|
-
sa-east-1: ami-
|
|
50
|
-
us-east-2: ami-
|
|
51
|
-
us-west-1: ami-
|
|
52
|
-
us-west-2: ami-
|
|
37
|
+
us-east-1: ami-067256ca1497c924d
|
|
38
|
+
ap-northeast-1: ami-07c1e51354fdfd362
|
|
39
|
+
ap-northeast-2: ami-042b761c93d6df2f1
|
|
40
|
+
ap-south-1: ami-02e879f52322e7c98
|
|
41
|
+
ap-southeast-1: ami-0487e9f84d0ffde89
|
|
42
|
+
ap-southeast-2: ami-0e854dab39fd6a427
|
|
43
|
+
ca-central-1: ami-05a27d311b585a70b
|
|
44
|
+
eu-central-1: ami-0e396d00c787b4f47
|
|
45
|
+
eu-north-1: ami-087763a2ba60b2bfe
|
|
46
|
+
eu-west-1: ami-04e3bd9335a14e635
|
|
47
|
+
eu-west-2: ami-0efd34a8d1fc2b104
|
|
48
|
+
eu-west-3: ami-08d0bcbc780448cf8
|
|
49
|
+
sa-east-1: ami-0284f4a0968263cf0
|
|
50
|
+
us-east-2: ami-0292786917d1e3015
|
|
51
|
+
us-west-1: ami-0ba622529dcdff2bb
|
|
52
|
+
us-west-2: ami-079a309ca6261d7f6
|
|
53
53
|
ubuntu16: &2
|
|
54
54
|
us-east-1: ami-bcdc16c6
|
|
55
55
|
us-west-1: ami-1b17257b
|
|
@@ -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-003aea65bc2e7136a
|
|
77
|
+
us-east-2: ami-0163293e39ba504c2
|
|
78
|
+
ca-central-1: ami-055689dd92f29d2aa
|
|
79
|
+
us-west-2: ami-0ce87dda2c9244e57
|
|
80
|
+
us-west-1: ami-00d9cf64bd2fafa44
|
|
81
|
+
eu-west-1: ami-026d7427b9fadad40
|
|
82
|
+
eu-west-2: ami-036a22c0780551794
|
|
83
|
+
eu-west-3: ami-05e3d9b79bdc10861
|
|
84
|
+
eu-north-1: ami-063eb48504c7d73f1
|
|
85
|
+
sa-east-1: ami-0a8c1829a5e650bc5
|
|
86
|
+
eu-central-1: ami-0ea20cef52335b008
|
|
87
|
+
ap-northeast-1: ami-08db2dc67228dbb90
|
|
88
|
+
ap-south-1: ami-012241411db3f09c3
|
|
89
|
+
ap-northeast-2: ami-0368c224de1d20502
|
|
90
|
+
ap-southeast-1: ami-028ef74e1edc3943a
|
|
91
|
+
ap-southeast-2: ami-09e03eab1b1bc151b
|
|
92
|
+
win2k16: &5
|
|
93
|
+
us-east-1: ami-02801a2c8dcbfb883
|
|
94
|
+
us-east-2: ami-0ca4f779a2a58a7ea
|
|
95
|
+
ca-central-1: ami-05d3854d9d6e9bcc5
|
|
96
|
+
us-west-2: ami-091f4a88ce32d28b6
|
|
97
|
+
eu-west-1: ami-0b938c9b23ed7d18c
|
|
98
|
+
us-west-1: ami-0fd744c3fbe8260f2
|
|
99
|
+
eu-west-2: ami-071a89b959c5eda27
|
|
100
|
+
eu-west-3: ami-0b206e3dbda9ff9eb
|
|
101
|
+
eu-central-1: ami-0dd9bdad31dd0d3ce
|
|
102
|
+
sa-east-1: ami-0d69b8d6c0f9a7bae
|
|
103
|
+
ap-northeast-1: ami-02eb4a6f519bc3190
|
|
104
|
+
ap-south-1: ami-0666fd543ac8b5501
|
|
105
|
+
ap-northeast-2: ami-01277c81f9b91cf77
|
|
106
|
+
ap-southeast-2: ami-0426a246f9b0ccadd
|
|
107
|
+
ap-southeast-1: ami-07ecb0d55c2eb7247
|
|
108
|
+
eu-north-1: ami-047811530583b6d08
|
|
109
|
+
win2k19:
|
|
110
|
+
us-east-1: ami-00820419bf212df7e
|
|
111
|
+
us-east-2: ami-0a7916b90aa4629d5
|
|
112
|
+
ca-central-1: ami-0d704529661e19185
|
|
113
|
+
us-west-2: ami-0ee6a198d7ac35eb1
|
|
114
|
+
eu-west-2: ami-0f6ac1634bd7add92
|
|
115
|
+
us-west-1: ami-039e3816b4cac1e27
|
|
116
|
+
eu-west-1: ami-03a771d99091199b7
|
|
117
|
+
eu-central-1: ami-03b648d5b45f51a4f
|
|
118
|
+
eu-west-3: ami-068839907c18c3a6e
|
|
119
|
+
eu-north-1: ami-0db851ee76f7deefb
|
|
120
|
+
sa-east-1: ami-0c2cc60c62159f87c
|
|
121
|
+
ap-northeast-2: ami-06bdf8ae9ae9add92
|
|
122
|
+
ap-northeast-1: ami-02306d959c7f175b9
|
|
123
|
+
ap-southeast-1: ami-0d5b4a3d73e0f471f
|
|
124
|
+
ap-southeast-2: ami-00fa88caff4f64937
|
|
125
|
+
ap-south-1: ami-0b44feae4bb9f497a
|
|
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
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
centos6: ¢os6 OpenLogic/CentOS/6
|
|
3
3
|
#centos7: ¢os7 westernoceansoftwaresprivatelimited/centos-7-6/centos-7-6-server
|
|
4
4
|
centos7: ¢os7 OpenLogic/CentOS/7
|
|
5
|
+
centos8: ¢os7 OpenLogic/CentOS/8
|
|
5
6
|
rhel8: &rhel8 RedHat/RHEL/8
|
|
6
7
|
rhel7: &rhel7 RedHat/RHEL/7
|
|
7
8
|
rhel6: &rhel6 RedHat/RHEL/6
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
centos6: ¢os6
|
|
3
|
-
centos7: ¢os7
|
|
2
|
+
centos6: ¢os6 egt-labs-admin/mu-centos-6
|
|
3
|
+
centos7: ¢os7 egt-labs-admin/mu-centos-7
|
|
4
|
+
centos8: ¢os8 centos-cloud/centos-8
|
|
4
5
|
rhel71: &rhel71 rhel-cloud/rhel-7
|
|
5
6
|
rhel6: &rhel6 rhel-cloud/rhel-6
|
|
6
7
|
debian10: &debian10 debian-cloud/debian-10
|
data/modules/mu/deploy.rb
CHANGED
|
@@ -126,7 +126,7 @@ module MU
|
|
|
126
126
|
seedsize = 1 + (retries/10).abs
|
|
127
127
|
seed = (0...seedsize+1).map { ('a'..'z').to_a[rand(26)] }.join
|
|
128
128
|
deploy_id = @appname.upcase + "-" + @environment.upcase + "-" + @timestamp + "-" + seed.upcase
|
|
129
|
-
end while MU::MommaCat.deploy_exists?(deploy_id) or seed == "mu"
|
|
129
|
+
end while MU::MommaCat.deploy_exists?(deploy_id) or seed == "mu"
|
|
130
130
|
MU.setVar("deploy_id", deploy_id)
|
|
131
131
|
MU.setVar("appname", @appname.upcase)
|
|
132
132
|
MU.setVar("environment", @environment.upcase)
|
|
@@ -140,7 +140,7 @@ module MU
|
|
|
140
140
|
|
|
141
141
|
@fromName = MU.muCfg['mu_admin_email']
|
|
142
142
|
|
|
143
|
-
MU::Cloud.resource_types.each { |
|
|
143
|
+
MU::Cloud.resource_types.values.each { |data|
|
|
144
144
|
if !@main_config[data[:cfg_plural]].nil? and @main_config[data[:cfg_plural]].size > 0
|
|
145
145
|
@main_config[data[:cfg_plural]].each { |resource|
|
|
146
146
|
if force_cloudformation
|
|
@@ -154,9 +154,10 @@ module MU
|
|
|
154
154
|
end
|
|
155
155
|
end
|
|
156
156
|
}
|
|
157
|
-
|
|
157
|
+
_shortclass, _cfg_name, _cfg_plural, classname = MU::Cloud.getResourceNames(data[:cfg_plural])
|
|
158
158
|
@main_config[data[:cfg_plural]].each { |resource|
|
|
159
159
|
resource["#MU_CLOUDCLASS"] = classname
|
|
160
|
+
# resource["#MU_CLOUDCLASS"] = MU::Cloud.resourceClass(resource['cloud'], data[:cfg_plural])
|
|
160
161
|
}
|
|
161
162
|
setThreadDependencies(@main_config[data[:cfg_plural]])
|
|
162
163
|
end
|
|
@@ -265,7 +266,7 @@ module MU
|
|
|
265
266
|
# Run cloud provider-specific deploy meta-artifact creation (ssh keys,
|
|
266
267
|
# resource groups, etc)
|
|
267
268
|
@mommacat.cloudsUsed.each { |cloud|
|
|
268
|
-
cloudclass =
|
|
269
|
+
cloudclass = MU::Cloud.cloudClass(cloud)
|
|
269
270
|
cloudclass.initDeploy(@mommacat)
|
|
270
271
|
}
|
|
271
272
|
|
|
@@ -274,7 +275,7 @@ module MU
|
|
|
274
275
|
MU.dupGlobals(parent_thread_id)
|
|
275
276
|
Thread.current.thread_variable_set("name", "mu_create_container")
|
|
276
277
|
# Thread.abort_on_exception = false
|
|
277
|
-
MU::Cloud.resource_types.each { |
|
|
278
|
+
MU::Cloud.resource_types.values.each { |data|
|
|
278
279
|
if !@main_config[data[:cfg_plural]].nil? and
|
|
279
280
|
@main_config[data[:cfg_plural]].size > 0 and
|
|
280
281
|
data[:instance].include?(:create)
|
|
@@ -288,7 +289,7 @@ module MU
|
|
|
288
289
|
MU.dupGlobals(parent_thread_id)
|
|
289
290
|
Thread.current.thread_variable_set("name", "mu_groom_container")
|
|
290
291
|
# Thread.abort_on_exception = false
|
|
291
|
-
MU::Cloud.resource_types.each { |
|
|
292
|
+
MU::Cloud.resource_types.values.each { |data|
|
|
292
293
|
if !@main_config[data[:cfg_plural]].nil? and
|
|
293
294
|
@main_config[data[:cfg_plural]].size > 0 and
|
|
294
295
|
data[:instance].include?(:groom)
|
|
@@ -311,7 +312,9 @@ module MU
|
|
|
311
312
|
|
|
312
313
|
@mommacat.save!
|
|
313
314
|
|
|
314
|
-
rescue
|
|
315
|
+
rescue StandardError => e
|
|
316
|
+
MU.log e.class.name, MU::ERR, details: caller
|
|
317
|
+
|
|
315
318
|
@my_threads.each do |t|
|
|
316
319
|
if t.object_id != Thread.current.object_id and
|
|
317
320
|
t.thread_variable_get("name") != "main_thread" and
|
|
@@ -338,6 +341,8 @@ module MU
|
|
|
338
341
|
@nocleanup = true # so we don't run this again later
|
|
339
342
|
end
|
|
340
343
|
end
|
|
344
|
+
|
|
345
|
+
|
|
341
346
|
@reraise_thread.raise MuError, e.inspect, e.backtrace if @reraise_thread
|
|
342
347
|
Thread.current.exit
|
|
343
348
|
ensure
|
|
@@ -390,7 +395,7 @@ module MU
|
|
|
390
395
|
Thread.handle_interrupt(MU::Cloud::MuCloudResourceNotImplemented => :never) {
|
|
391
396
|
begin
|
|
392
397
|
Thread.handle_interrupt(MU::Cloud::MuCloudResourceNotImplemented => :immediate) {
|
|
393
|
-
MU.log "Cost calculator not available for this stack, as it uses a resource not implemented in Mu's CloudFormation layer.", MU::
|
|
398
|
+
MU.log "Cost calculator not available for this stack, as it uses a resource not implemented in Mu's CloudFormation layer.", MU::DEBUG, verbosity: MU::Logger::NORMAL
|
|
394
399
|
Thread.current.exit
|
|
395
400
|
}
|
|
396
401
|
ensure
|
|
@@ -550,16 +555,9 @@ MESSAGE_END
|
|
|
550
555
|
@dependency_threads["#{name}_groom"]=["#{name}_create", "mu_groom_container"]
|
|
551
556
|
|
|
552
557
|
MU.log "Setting dependencies for #{name}", MU::DEBUG, details: resource["dependencies"]
|
|
553
|
-
if resource["dependencies"]
|
|
558
|
+
if !resource["dependencies"].nil? then
|
|
554
559
|
resource["dependencies"].each { |dependency|
|
|
555
|
-
parent_class =
|
|
556
|
-
MU::Cloud.resource_types.each_pair { |res_class, attrs|
|
|
557
|
-
if attrs[:cfg_name] == dependency['type'] or
|
|
558
|
-
attrs[:cfg_plural] == dependency['type']
|
|
559
|
-
parent_class = Object.const_get("MU").const_get("Cloud").const_get(res_class)
|
|
560
|
-
break
|
|
561
|
-
end
|
|
562
|
-
}
|
|
560
|
+
parent_class = MU::Cloud.loadBaseType(dependency['type'])
|
|
563
561
|
|
|
564
562
|
parent_type = parent_class.cfg_name
|
|
565
563
|
|
|
@@ -568,10 +566,10 @@ MESSAGE_END
|
|
|
568
566
|
addDependentThread(parent, "#{name}_groom")
|
|
569
567
|
|
|
570
568
|
# should our creation thread also wait on our parent's create?
|
|
571
|
-
if !
|
|
569
|
+
if !dependency["no_create_wait"] and
|
|
572
570
|
(resource["#MU_CLOUDCLASS"].waits_on_parent_completion or
|
|
573
571
|
dependency['phase'] == "create" or
|
|
574
|
-
|
|
572
|
+
parent_class.deps_wait_on_my_creation)
|
|
575
573
|
addDependentThread(parent, "#{name}_create")
|
|
576
574
|
end
|
|
577
575
|
|
|
@@ -580,12 +578,18 @@ MESSAGE_END
|
|
|
580
578
|
if (dependency['phase'] == "groom" or resource["#MU_CLOUDCLASS"].waits_on_parent_completion) and parent_class.instance_methods(false).include?(:groom)
|
|
581
579
|
parent = parent_type+"_"+dependency["name"]+"_groom"
|
|
582
580
|
addDependentThread(parent, "#{name}_groom")
|
|
583
|
-
if
|
|
581
|
+
if !dependency["no_create_wait"] and (
|
|
582
|
+
parent_class.deps_wait_on_my_creation or
|
|
583
|
+
resource["#MU_CLOUDCLASS"].waits_on_parent_completion or
|
|
584
|
+
dependency['phase'] == "groom"
|
|
585
|
+
)
|
|
584
586
|
addDependentThread(parent, "#{name}_create")
|
|
585
587
|
end
|
|
586
588
|
end
|
|
587
589
|
}
|
|
588
590
|
end
|
|
591
|
+
MU.log "Thread dependencies #{res_type}[#{name}]", MU::DEBUG, details: { "create" => @dependency_threads["#{name}_create"], "groom" => @dependency_threads["#{name}_groom"] }
|
|
592
|
+
@dependency_threads["#{name}_groom"]=["#{name}_create", "mu_groom_container"]
|
|
589
593
|
}
|
|
590
594
|
end
|
|
591
595
|
|
|
@@ -596,7 +600,6 @@ MESSAGE_END
|
|
|
596
600
|
return if services.nil?
|
|
597
601
|
|
|
598
602
|
parent_thread_id = Thread.current.object_id
|
|
599
|
-
parent_thread = Thread.current
|
|
600
603
|
services.uniq!
|
|
601
604
|
services.each do |service|
|
|
602
605
|
begin
|
|
@@ -639,17 +642,18 @@ MESSAGE_END
|
|
|
639
642
|
else
|
|
640
643
|
raise e
|
|
641
644
|
end
|
|
642
|
-
rescue
|
|
645
|
+
rescue StandardError => e
|
|
643
646
|
MU::MommaCat.unlockAll
|
|
644
647
|
@main_thread.raise MuError, "Error instantiating object from #{myservice["#MU_CLOUDCLASS"]} (#{e.inspect})", e.backtrace
|
|
645
648
|
raise e
|
|
646
649
|
end
|
|
647
650
|
begin
|
|
648
651
|
run_this_method = myservice['#MUOBJECT'].method(mode)
|
|
649
|
-
rescue
|
|
652
|
+
rescue StandardError => e
|
|
650
653
|
MU::MommaCat.unlockAll
|
|
651
|
-
@main_thread.raise MuError, "Error invoking #{myservice["#
|
|
652
|
-
|
|
654
|
+
@main_thread.raise MuError, "Error invoking #{myservice["#MUOBJECT"].class.name}.#{mode} for #{myservice['name']} (#{e.inspect})", e.backtrace
|
|
655
|
+
return
|
|
656
|
+
# raise e
|
|
653
657
|
end
|
|
654
658
|
begin
|
|
655
659
|
MU.log "Checking whether to run #{myservice['#MUOBJECT']}.#{mode} (updating: #{@updating})", MU::DEBUG
|
|
@@ -703,7 +707,7 @@ MESSAGE_END
|
|
|
703
707
|
@my_threads.reject! { |thr| !thr.alive? }
|
|
704
708
|
sleep 10+Random.rand(20)
|
|
705
709
|
retry
|
|
706
|
-
rescue
|
|
710
|
+
rescue StandardError => e
|
|
707
711
|
MU.log e.inspect, MU::ERR, details: e.backtrace if @verbosity != MU::Logger::SILENT
|
|
708
712
|
MU::MommaCat.unlockAll
|
|
709
713
|
Thread.list.each do |t|
|