cloud-mu 2.1.0beta → 3.0.0beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Berksfile +4 -5
- data/Berksfile.lock +179 -0
- data/README.md +1 -6
- data/ansible/roles/geerlingguy.firewall/templates/firewall.bash.j2 +0 -0
- data/ansible/roles/mu-installer/README.md +33 -0
- data/ansible/roles/mu-installer/defaults/main.yml +2 -0
- data/ansible/roles/mu-installer/handlers/main.yml +2 -0
- data/ansible/roles/mu-installer/meta/main.yml +60 -0
- data/ansible/roles/mu-installer/tasks/main.yml +13 -0
- data/ansible/roles/mu-installer/tests/inventory +2 -0
- data/ansible/roles/mu-installer/tests/test.yml +5 -0
- data/ansible/roles/mu-installer/vars/main.yml +2 -0
- data/bin/mu-adopt +125 -0
- data/bin/mu-aws-setup +4 -4
- data/bin/mu-azure-setup +265 -0
- data/bin/mu-azure-tests +43 -0
- data/bin/mu-cleanup +20 -8
- data/bin/mu-configure +224 -98
- data/bin/mu-deploy +8 -3
- data/bin/mu-gcp-setup +16 -8
- data/bin/mu-gen-docs +92 -8
- data/bin/mu-load-config.rb +52 -12
- data/bin/mu-momma-cat +36 -0
- data/bin/mu-node-manage +34 -27
- data/bin/mu-self-update +2 -2
- data/bin/mu-ssh +12 -8
- data/bin/mu-upload-chef-artifacts +11 -4
- data/bin/mu-user-manage +3 -0
- data/cloud-mu.gemspec +8 -11
- data/cookbooks/firewall/libraries/helpers_iptables.rb +2 -2
- data/cookbooks/firewall/metadata.json +1 -1
- data/cookbooks/firewall/recipes/default.rb +5 -9
- data/cookbooks/mu-firewall/attributes/default.rb +2 -0
- data/cookbooks/mu-firewall/metadata.rb +1 -1
- data/cookbooks/mu-glusterfs/templates/default/mu-gluster-client.erb +0 -0
- data/cookbooks/mu-master/Berksfile +2 -2
- data/cookbooks/mu-master/files/default/check_mem.pl +0 -0
- data/cookbooks/mu-master/files/default/cloudamatic.png +0 -0
- data/cookbooks/mu-master/metadata.rb +5 -4
- data/cookbooks/mu-master/recipes/389ds.rb +1 -1
- data/cookbooks/mu-master/recipes/basepackages.rb +30 -10
- data/cookbooks/mu-master/recipes/default.rb +59 -7
- data/cookbooks/mu-master/recipes/firewall-holes.rb +1 -1
- data/cookbooks/mu-master/recipes/init.rb +65 -47
- data/cookbooks/mu-master/recipes/{eks-kubectl.rb → kubectl.rb} +4 -10
- data/cookbooks/mu-master/recipes/sssd.rb +2 -1
- data/cookbooks/mu-master/recipes/update_nagios_only.rb +6 -6
- data/cookbooks/mu-master/templates/default/web_app.conf.erb +2 -2
- data/cookbooks/mu-master/templates/mods/ldap.conf.erb +4 -0
- data/cookbooks/mu-php54/Berksfile +1 -2
- data/cookbooks/mu-php54/metadata.rb +4 -5
- data/cookbooks/mu-php54/recipes/default.rb +1 -1
- data/cookbooks/mu-splunk/templates/default/splunk-init.erb +0 -0
- data/cookbooks/mu-tools/Berksfile +3 -2
- data/cookbooks/mu-tools/files/default/Mu_CA.pem +33 -0
- data/cookbooks/mu-tools/libraries/helper.rb +20 -8
- data/cookbooks/mu-tools/metadata.rb +5 -2
- data/cookbooks/mu-tools/recipes/apply_security.rb +2 -3
- data/cookbooks/mu-tools/recipes/eks.rb +1 -1
- data/cookbooks/mu-tools/recipes/gcloud.rb +5 -30
- data/cookbooks/mu-tools/recipes/nagios.rb +1 -1
- data/cookbooks/mu-tools/recipes/rsyslog.rb +1 -0
- data/cookbooks/mu-tools/recipes/selinux.rb +19 -0
- data/cookbooks/mu-tools/recipes/split_var_partitions.rb +0 -1
- data/cookbooks/mu-tools/recipes/windows-client.rb +256 -122
- data/cookbooks/mu-tools/resources/disk.rb +3 -1
- data/cookbooks/mu-tools/templates/amazon/sshd_config.erb +1 -1
- data/cookbooks/mu-tools/templates/default/etc_hosts.erb +1 -1
- data/cookbooks/mu-tools/templates/default/{kubeconfig.erb → kubeconfig-eks.erb} +0 -0
- data/cookbooks/mu-tools/templates/default/kubeconfig-gke.erb +27 -0
- data/cookbooks/mu-tools/templates/windows-10/sshd_config.erb +137 -0
- data/cookbooks/mu-utility/recipes/nat.rb +4 -0
- data/extras/alpha.png +0 -0
- data/extras/beta.png +0 -0
- data/extras/clean-stock-amis +2 -2
- data/extras/generate-stock-images +131 -0
- data/extras/git-fix-permissions-hook +0 -0
- data/extras/image-generators/AWS/centos6.yaml +17 -0
- data/extras/image-generators/{aws → AWS}/centos7-govcloud.yaml +0 -0
- data/extras/image-generators/{aws → AWS}/centos7.yaml +0 -0
- data/extras/image-generators/{aws → AWS}/rhel7.yaml +0 -0
- data/extras/image-generators/{aws → AWS}/win2k12.yaml +0 -0
- data/extras/image-generators/{aws → AWS}/win2k16.yaml +0 -0
- data/extras/image-generators/{aws → AWS}/windows.yaml +0 -0
- data/extras/image-generators/{gcp → Google}/centos6.yaml +1 -0
- data/extras/image-generators/Google/centos7.yaml +18 -0
- data/extras/python_rpm/build.sh +0 -0
- data/extras/release.png +0 -0
- data/extras/ruby_rpm/build.sh +0 -0
- data/extras/ruby_rpm/muby.spec +1 -1
- data/install/README.md +43 -5
- data/install/deprecated-bash-library.sh +0 -0
- data/install/installer +1 -1
- data/install/jenkinskeys.rb +0 -0
- data/install/mu-master.yaml +55 -0
- data/modules/mommacat.ru +41 -7
- data/modules/mu.rb +444 -149
- data/modules/mu/adoption.rb +500 -0
- data/modules/mu/cleanup.rb +235 -158
- data/modules/mu/cloud.rb +675 -138
- data/modules/mu/clouds/aws.rb +156 -24
- data/modules/mu/clouds/aws/alarm.rb +4 -14
- data/modules/mu/clouds/aws/bucket.rb +60 -18
- data/modules/mu/clouds/aws/cache_cluster.rb +8 -20
- data/modules/mu/clouds/aws/collection.rb +12 -22
- data/modules/mu/clouds/aws/container_cluster.rb +209 -118
- data/modules/mu/clouds/aws/database.rb +120 -45
- data/modules/mu/clouds/aws/dnszone.rb +7 -18
- data/modules/mu/clouds/aws/endpoint.rb +5 -15
- data/modules/mu/clouds/aws/firewall_rule.rb +144 -72
- data/modules/mu/clouds/aws/folder.rb +4 -11
- data/modules/mu/clouds/aws/function.rb +6 -16
- data/modules/mu/clouds/aws/group.rb +4 -12
- data/modules/mu/clouds/aws/habitat.rb +11 -13
- data/modules/mu/clouds/aws/loadbalancer.rb +40 -28
- data/modules/mu/clouds/aws/log.rb +5 -13
- data/modules/mu/clouds/aws/msg_queue.rb +9 -24
- data/modules/mu/clouds/aws/nosqldb.rb +4 -12
- data/modules/mu/clouds/aws/notifier.rb +6 -13
- data/modules/mu/clouds/aws/role.rb +69 -40
- data/modules/mu/clouds/aws/search_domain.rb +17 -20
- data/modules/mu/clouds/aws/server.rb +184 -94
- data/modules/mu/clouds/aws/server_pool.rb +33 -38
- data/modules/mu/clouds/aws/storage_pool.rb +5 -12
- data/modules/mu/clouds/aws/user.rb +59 -33
- data/modules/mu/clouds/aws/userdata/linux.erb +18 -30
- data/modules/mu/clouds/aws/userdata/windows.erb +9 -9
- data/modules/mu/clouds/aws/vpc.rb +214 -145
- data/modules/mu/clouds/azure.rb +978 -44
- data/modules/mu/clouds/azure/container_cluster.rb +413 -0
- data/modules/mu/clouds/azure/firewall_rule.rb +500 -0
- data/modules/mu/clouds/azure/habitat.rb +167 -0
- data/modules/mu/clouds/azure/loadbalancer.rb +205 -0
- data/modules/mu/clouds/azure/role.rb +211 -0
- data/modules/mu/clouds/azure/server.rb +810 -0
- data/modules/mu/clouds/azure/user.rb +257 -0
- data/modules/mu/clouds/azure/userdata/README.md +4 -0
- data/modules/mu/clouds/azure/userdata/linux.erb +137 -0
- data/modules/mu/clouds/azure/userdata/windows.erb +275 -0
- data/modules/mu/clouds/azure/vpc.rb +782 -0
- data/modules/mu/clouds/cloudformation.rb +12 -9
- data/modules/mu/clouds/cloudformation/firewall_rule.rb +5 -13
- data/modules/mu/clouds/cloudformation/server.rb +10 -1
- data/modules/mu/clouds/cloudformation/server_pool.rb +1 -0
- data/modules/mu/clouds/cloudformation/vpc.rb +0 -2
- data/modules/mu/clouds/google.rb +554 -117
- data/modules/mu/clouds/google/bucket.rb +173 -32
- data/modules/mu/clouds/google/container_cluster.rb +1112 -157
- data/modules/mu/clouds/google/database.rb +24 -47
- data/modules/mu/clouds/google/firewall_rule.rb +344 -89
- data/modules/mu/clouds/google/folder.rb +156 -79
- data/modules/mu/clouds/google/group.rb +272 -82
- data/modules/mu/clouds/google/habitat.rb +177 -52
- data/modules/mu/clouds/google/loadbalancer.rb +9 -34
- data/modules/mu/clouds/google/role.rb +1211 -0
- data/modules/mu/clouds/google/server.rb +491 -227
- data/modules/mu/clouds/google/server_pool.rb +233 -48
- data/modules/mu/clouds/google/user.rb +479 -125
- data/modules/mu/clouds/google/userdata/linux.erb +3 -3
- data/modules/mu/clouds/google/userdata/windows.erb +9 -9
- data/modules/mu/clouds/google/vpc.rb +381 -223
- data/modules/mu/config.rb +689 -214
- data/modules/mu/config/bucket.rb +1 -1
- data/modules/mu/config/cache_cluster.rb +1 -1
- data/modules/mu/config/cache_cluster.yml +0 -4
- data/modules/mu/config/container_cluster.rb +18 -9
- data/modules/mu/config/database.rb +6 -23
- data/modules/mu/config/firewall_rule.rb +9 -15
- data/modules/mu/config/folder.rb +22 -21
- data/modules/mu/config/habitat.rb +22 -21
- data/modules/mu/config/loadbalancer.rb +2 -2
- data/modules/mu/config/role.rb +9 -40
- data/modules/mu/config/server.rb +26 -5
- data/modules/mu/config/server_pool.rb +1 -1
- data/modules/mu/config/storage_pool.rb +2 -2
- data/modules/mu/config/user.rb +4 -0
- data/modules/mu/config/vpc.rb +350 -110
- data/modules/mu/defaults/{amazon_images.yaml → AWS.yaml} +37 -39
- data/modules/mu/defaults/Azure.yaml +17 -0
- data/modules/mu/defaults/Google.yaml +24 -0
- data/modules/mu/defaults/README.md +1 -1
- data/modules/mu/deploy.rb +168 -125
- data/modules/mu/groomer.rb +2 -1
- data/modules/mu/groomers/ansible.rb +104 -32
- data/modules/mu/groomers/chef.rb +96 -44
- data/modules/mu/kittens.rb +20602 -0
- data/modules/mu/logger.rb +38 -11
- data/modules/mu/master.rb +90 -8
- data/modules/mu/master/chef.rb +2 -3
- data/modules/mu/master/ldap.rb +0 -1
- data/modules/mu/master/ssl.rb +250 -0
- data/modules/mu/mommacat.rb +917 -513
- data/modules/scratchpad.erb +1 -1
- data/modules/tests/super_complex_bok.yml +0 -0
- data/modules/tests/super_simple_bok.yml +0 -0
- data/roles/mu-master.json +2 -1
- data/spec/azure_creds +5 -0
- data/spec/mu.yaml +56 -0
- data/spec/mu/clouds/azure_spec.rb +164 -27
- data/spec/spec_helper.rb +5 -0
- data/test/clean_up.py +0 -0
- data/test/exec_inspec.py +0 -0
- data/test/exec_mu_install.py +0 -0
- data/test/exec_retry.py +0 -0
- data/test/smoke_test.rb +0 -0
- metadata +90 -118
- data/cookbooks/mu-jenkins/Berksfile +0 -14
- data/cookbooks/mu-jenkins/CHANGELOG.md +0 -13
- data/cookbooks/mu-jenkins/LICENSE +0 -37
- data/cookbooks/mu-jenkins/README.md +0 -105
- data/cookbooks/mu-jenkins/attributes/default.rb +0 -42
- data/cookbooks/mu-jenkins/files/default/cleanup_deploy_config.xml +0 -73
- data/cookbooks/mu-jenkins/files/default/deploy_config.xml +0 -44
- data/cookbooks/mu-jenkins/metadata.rb +0 -21
- data/cookbooks/mu-jenkins/recipes/default.rb +0 -195
- data/cookbooks/mu-jenkins/recipes/node-ssh-config.rb +0 -54
- data/cookbooks/mu-jenkins/recipes/public_key.rb +0 -24
- data/cookbooks/mu-jenkins/templates/default/example_job.config.xml.erb +0 -24
- data/cookbooks/mu-jenkins/templates/default/org.jvnet.hudson.plugins.SSHBuildWrapper.xml.erb +0 -14
- data/cookbooks/mu-jenkins/templates/default/ssh_config.erb +0 -6
- data/cookbooks/nagios/Berksfile +0 -11
- data/cookbooks/nagios/CHANGELOG.md +0 -589
- data/cookbooks/nagios/CONTRIBUTING.md +0 -11
- data/cookbooks/nagios/LICENSE +0 -37
- data/cookbooks/nagios/README.md +0 -328
- data/cookbooks/nagios/TESTING.md +0 -2
- data/cookbooks/nagios/attributes/config.rb +0 -171
- data/cookbooks/nagios/attributes/default.rb +0 -228
- data/cookbooks/nagios/chefignore +0 -102
- data/cookbooks/nagios/definitions/command.rb +0 -33
- data/cookbooks/nagios/definitions/contact.rb +0 -33
- data/cookbooks/nagios/definitions/contactgroup.rb +0 -33
- data/cookbooks/nagios/definitions/host.rb +0 -33
- data/cookbooks/nagios/definitions/hostdependency.rb +0 -33
- data/cookbooks/nagios/definitions/hostescalation.rb +0 -34
- data/cookbooks/nagios/definitions/hostgroup.rb +0 -33
- data/cookbooks/nagios/definitions/nagios_conf.rb +0 -38
- data/cookbooks/nagios/definitions/resource.rb +0 -33
- data/cookbooks/nagios/definitions/service.rb +0 -33
- data/cookbooks/nagios/definitions/servicedependency.rb +0 -33
- data/cookbooks/nagios/definitions/serviceescalation.rb +0 -34
- data/cookbooks/nagios/definitions/servicegroup.rb +0 -33
- data/cookbooks/nagios/definitions/timeperiod.rb +0 -33
- data/cookbooks/nagios/libraries/base.rb +0 -314
- data/cookbooks/nagios/libraries/command.rb +0 -91
- data/cookbooks/nagios/libraries/contact.rb +0 -230
- data/cookbooks/nagios/libraries/contactgroup.rb +0 -112
- data/cookbooks/nagios/libraries/custom_option.rb +0 -36
- data/cookbooks/nagios/libraries/data_bag_helper.rb +0 -23
- data/cookbooks/nagios/libraries/default.rb +0 -90
- data/cookbooks/nagios/libraries/host.rb +0 -412
- data/cookbooks/nagios/libraries/hostdependency.rb +0 -181
- data/cookbooks/nagios/libraries/hostescalation.rb +0 -173
- data/cookbooks/nagios/libraries/hostgroup.rb +0 -119
- data/cookbooks/nagios/libraries/nagios.rb +0 -282
- data/cookbooks/nagios/libraries/resource.rb +0 -59
- data/cookbooks/nagios/libraries/service.rb +0 -455
- data/cookbooks/nagios/libraries/servicedependency.rb +0 -215
- data/cookbooks/nagios/libraries/serviceescalation.rb +0 -195
- data/cookbooks/nagios/libraries/servicegroup.rb +0 -144
- data/cookbooks/nagios/libraries/timeperiod.rb +0 -160
- data/cookbooks/nagios/libraries/users_helper.rb +0 -54
- data/cookbooks/nagios/metadata.rb +0 -25
- data/cookbooks/nagios/recipes/_load_databag_config.rb +0 -153
- data/cookbooks/nagios/recipes/_load_default_config.rb +0 -241
- data/cookbooks/nagios/recipes/apache.rb +0 -48
- data/cookbooks/nagios/recipes/default.rb +0 -204
- data/cookbooks/nagios/recipes/nginx.rb +0 -82
- data/cookbooks/nagios/recipes/pagerduty.rb +0 -143
- data/cookbooks/nagios/recipes/server_package.rb +0 -40
- data/cookbooks/nagios/recipes/server_source.rb +0 -164
- data/cookbooks/nagios/templates/default/apache2.conf.erb +0 -96
- data/cookbooks/nagios/templates/default/cgi.cfg.erb +0 -266
- data/cookbooks/nagios/templates/default/commands.cfg.erb +0 -13
- data/cookbooks/nagios/templates/default/contacts.cfg.erb +0 -37
- data/cookbooks/nagios/templates/default/hostgroups.cfg.erb +0 -25
- data/cookbooks/nagios/templates/default/hosts.cfg.erb +0 -15
- data/cookbooks/nagios/templates/default/htpasswd.users.erb +0 -6
- data/cookbooks/nagios/templates/default/nagios.cfg.erb +0 -22
- data/cookbooks/nagios/templates/default/nginx.conf.erb +0 -62
- data/cookbooks/nagios/templates/default/pagerduty.cgi.erb +0 -185
- data/cookbooks/nagios/templates/default/resource.cfg.erb +0 -27
- data/cookbooks/nagios/templates/default/servicedependencies.cfg.erb +0 -15
- data/cookbooks/nagios/templates/default/servicegroups.cfg.erb +0 -14
- data/cookbooks/nagios/templates/default/services.cfg.erb +0 -14
- data/cookbooks/nagios/templates/default/templates.cfg.erb +0 -31
- data/cookbooks/nagios/templates/default/timeperiods.cfg.erb +0 -13
- data/extras/image-generators/aws/centos6.yaml +0 -18
- data/modules/mu/defaults/google_images.yaml +0 -16
- data/roles/mu-master-jenkins.json +0 -24
@@ -1,5 +1,5 @@
|
|
1
1
|
---
|
2
|
-
rhel71: &
|
2
|
+
rhel71: &4
|
3
3
|
us-east-1: ami-001ac4e5f414fc5b7
|
4
4
|
ap-northeast-1: ami-0094aa64967e9267d
|
5
5
|
ap-northeast-2: ami-072783bf50ca01ef7
|
@@ -16,24 +16,24 @@ rhel71: &rhel71
|
|
16
16
|
us-east-2: ami-00cc9f964320129d7
|
17
17
|
us-west-1: ami-0110a4f8a96b24369
|
18
18
|
us-west-2: ami-0006d7ea260e40777
|
19
|
-
centos6: &
|
20
|
-
us-east-1: ami-
|
21
|
-
ap-northeast-1: ami-
|
22
|
-
ap-northeast-2: ami-
|
23
|
-
ap-south-1: ami-
|
24
|
-
ap-southeast-1: ami-
|
25
|
-
ap-southeast-2: ami-
|
26
|
-
ca-central-1: ami-
|
27
|
-
eu-central-1: ami-
|
28
|
-
eu-north-1: ami-
|
29
|
-
eu-west-1: ami-
|
30
|
-
eu-west-2: ami-
|
31
|
-
eu-west-3: ami-
|
32
|
-
sa-east-1: ami-
|
33
|
-
us-east-2: ami-
|
34
|
-
us-west-1: ami-
|
35
|
-
us-west-2: ami-
|
36
|
-
centos7:
|
19
|
+
centos6: &3
|
20
|
+
us-east-1: ami-06a4e11df81ad5f36
|
21
|
+
ap-northeast-1: ami-0c777a90d1239a89f
|
22
|
+
ap-northeast-2: ami-00a536043e60d99e0
|
23
|
+
ap-south-1: ami-0dbe9e035d242ab19
|
24
|
+
ap-southeast-1: ami-07a0370b2aaca3d83
|
25
|
+
ap-southeast-2: ami-0df17df004fb2d85a
|
26
|
+
ca-central-1: ami-0852062afaf78369b
|
27
|
+
eu-central-1: ami-058aab5f423dea3fa
|
28
|
+
eu-north-1: ami-040fd7c04441f6c6b
|
29
|
+
eu-west-1: ami-0a0595aeafc8430b2
|
30
|
+
eu-west-2: ami-0f45a65b48147cbd2
|
31
|
+
eu-west-3: ami-0fa2dea3f867cd713
|
32
|
+
sa-east-1: ami-0e49de35e61a9bf6a
|
33
|
+
us-east-2: ami-06c0d5b6dbb7494c7
|
34
|
+
us-west-1: ami-08c8ff991d27c3a25
|
35
|
+
us-west-2: ami-0b62b81cae1d662c9
|
36
|
+
centos7:
|
37
37
|
us-east-1: ami-0d98f625837fb042e
|
38
38
|
ap-northeast-1: ami-0f86cf4470a454938
|
39
39
|
ap-northeast-2: ami-012efba9ff5419589
|
@@ -50,29 +50,29 @@ centos7: ¢os7
|
|
50
50
|
us-east-2: ami-00c5f50b43ecdb248
|
51
51
|
us-west-1: ami-0cc4055a6417e4df6
|
52
52
|
us-west-2: ami-0c250c14d31f0847f
|
53
|
-
ubuntu16: &
|
53
|
+
ubuntu16: &2
|
54
54
|
us-east-1: ami-bcdc16c6
|
55
55
|
us-west-1: ami-1b17257b
|
56
56
|
us-west-2: ami-19e92861
|
57
|
-
eu-west-1:
|
57
|
+
eu-west-1: ami-eed00d97
|
58
58
|
eu-central-1: ami-e613ac89
|
59
59
|
sa-east-1: ami-1ca7d970
|
60
60
|
ap-northeast-1: ami-6959870f
|
61
61
|
ap-northeast-2: ami-08d77266
|
62
|
-
ap-southeast-1: ami-d9dca7ba
|
62
|
+
ap-southeast-1: ami-d9dca7ba
|
63
63
|
ap-southeast-2: ami-02ad4060
|
64
|
-
ubuntu14:
|
64
|
+
ubuntu14:
|
65
65
|
us-east-1: ami-663a6e0c
|
66
66
|
us-west-1: ami-13988772
|
67
67
|
us-west-2: ami-b885eed8
|
68
|
-
eu-west-1:
|
68
|
+
eu-west-1: ami-b265c7c1
|
69
69
|
eu-central-1: ami-ad8894c1
|
70
70
|
sa-east-1: ami-4196112d
|
71
71
|
ap-northeast-1: ami-575b6e39
|
72
72
|
ap-northeast-2: ami-f0ac629e
|
73
|
-
ap-southeast-1: ami-2855964b
|
73
|
+
ap-southeast-1: ami-2855964b
|
74
74
|
ap-southeast-2: ami-d19fc4b2
|
75
|
-
win2k12r2: &
|
75
|
+
win2k12r2: &1
|
76
76
|
us-east-1: ami-d4409aae
|
77
77
|
us-east-2: ami-fbbe929e
|
78
78
|
us-west-1: ami-ec91ac8c
|
@@ -85,14 +85,13 @@ win2k12r2: &win2k12r2
|
|
85
85
|
ap-southeast-1: ami-b61657d5
|
86
86
|
ap-southeast-2: ami-9a7b97f8
|
87
87
|
ap-south-1: ami-99a8eaf6
|
88
|
-
ca-central-1: ami-608b3304
|
89
|
-
win2k16:
|
88
|
+
ca-central-1: ami-608b3304
|
89
|
+
win2k16:
|
90
90
|
us-east-1: ami-d2cb25a8
|
91
91
|
us-east-2: ami-2db59748
|
92
92
|
us-west-1: ami-2db59748
|
93
93
|
us-west-2: ami-3b47ba43
|
94
94
|
eu-central-1: ami-37d46558
|
95
|
-
eu-west-1: ami-53408c2a
|
96
95
|
eu-west-1: ami-06c5d662
|
97
96
|
sa-east-1: ami-53fd803f
|
98
97
|
ap-northeast-1: ami-ce8b42a8
|
@@ -101,11 +100,12 @@ win2k16: &win2k16
|
|
101
100
|
ap-southeast-2: ami-792bcd1b
|
102
101
|
ap-south-1: ami-448dcb2b
|
103
102
|
ca-central-1: ami-a39920c7
|
104
|
-
amazon:
|
103
|
+
amazon:
|
105
104
|
us-east-1: ami-b73b63a0
|
106
105
|
us-east-2: ami-58277d3d
|
107
106
|
us-west-1: ami-23e8a343
|
108
107
|
us-west-2: ami-5ec1673e
|
108
|
+
us-gov-east-1: ami-fdaf4e8c
|
109
109
|
eu-central-1: ami-f9619996
|
110
110
|
eu-west-1: ami-9398d3e0
|
111
111
|
sa-east-1: ami-97831ffb
|
@@ -113,12 +113,10 @@ amazon: &amazon2016
|
|
113
113
|
ap-northeast-2: ami-983ce8f6
|
114
114
|
ap-southeast-1: ami-b953f2da
|
115
115
|
ap-southeast-2: ami-db704cb8
|
116
|
-
win2k12: *
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
linux: *centos6
|
124
|
-
amazon: *amazon2016
|
116
|
+
win2k12: *1
|
117
|
+
windows: *1
|
118
|
+
ubuntu: *2
|
119
|
+
centos: *3
|
120
|
+
rhel7: *4
|
121
|
+
rhel: *4
|
122
|
+
linux: *3
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
centos6: ¢os6 OpenLogic/CentOS/6
|
3
|
+
#centos7: ¢os7 westernoceansoftwaresprivatelimited/centos-7-6/centos-7-6-server
|
4
|
+
centos7: ¢os7 OpenLogic/CentOS/7
|
5
|
+
rhel8: &rhel8 RedHat/RHEL/8
|
6
|
+
rhel7: &rhel7 RedHat/RHEL/7
|
7
|
+
rhel6: &rhel6 RedHat/RHEL/6
|
8
|
+
debian10: &debian10 Debian/debian-10/10
|
9
|
+
win2k12r2: &win2k12r2 MicrosoftWindowsServer/WindowsServer/2012-R2-Datacenter
|
10
|
+
win2k16: &win2k16 MicrosoftWindowsServer/WindowsServer/2016-Datacenter
|
11
|
+
win2k19: &win2k19 MicrosoftWindowsServer/WindowsServer/2019-Datacenter
|
12
|
+
win2k12: *win2k12r2
|
13
|
+
windows: *win2k16
|
14
|
+
centos: *centos7
|
15
|
+
rhel: *rhel7
|
16
|
+
linux: *centos7
|
17
|
+
debian: *debian10
|
@@ -0,0 +1,24 @@
|
|
1
|
+
---
|
2
|
+
centos6: ¢os6 centos-cloud/centos-6
|
3
|
+
centos7: ¢os7 centos-cloud/centos-7
|
4
|
+
rhel71: &rhel71 rhel-cloud/rhel-7
|
5
|
+
rhel6: &rhel6 rhel-cloud/rhel-6
|
6
|
+
debian10: &debian10 debian-cloud/debian-10
|
7
|
+
debian9: &debian9 debian-cloud/debian-9
|
8
|
+
ubuntu14: &ubuntu14 ubuntu-os-cloud/ubuntu-1404-lts
|
9
|
+
ubuntu16: &ubuntu16 ubuntu-os-cloud/ubuntu-1604-lts
|
10
|
+
ubuntu18: &ubuntu18 ubuntu-os-cloud/ubuntu-1804-lts
|
11
|
+
ubuntu19: &ubuntu19 ubuntu-os-cloud/ubuntu-1904
|
12
|
+
win2k12r2: &win2k12r2 windows-cloud/windows-2012-r2
|
13
|
+
win2k16: &win2k16 windows-cloud/windows-2016
|
14
|
+
win2k19: &win2k19 windows-cloud/windows-2019
|
15
|
+
google: &google coreos-cloud/coreos-stable
|
16
|
+
coreos: *google
|
17
|
+
win2k12: *win2k12r2
|
18
|
+
windows: *win2k16
|
19
|
+
ubuntu: *ubuntu18
|
20
|
+
centos: *centos7
|
21
|
+
rhel7: *rhel71
|
22
|
+
rhel: *rhel71
|
23
|
+
linux: *centos7
|
24
|
+
debian: *debian10
|
@@ -1,2 +1,2 @@
|
|
1
1
|
Do not edit these files in place! Instead, copy them to $install_prefix/etc
|
2
|
-
(e.g. /opt/mu/etc/
|
2
|
+
(e.g. /opt/mu/etc/AWS.yaml) and make customizations there.
|
data/modules/mu/deploy.rb
CHANGED
@@ -50,6 +50,9 @@ module MU
|
|
50
50
|
# We just pass this flag to MommaCat, telling it not to save any metadata.
|
51
51
|
attr_reader :no_artifacts
|
52
52
|
|
53
|
+
# The deployment object we create for our stack
|
54
|
+
attr_reader :mommacat
|
55
|
+
|
53
56
|
# Indicates whether we are updating an existing deployment, as opposed to
|
54
57
|
# creating a new one.
|
55
58
|
attr_reader :updating
|
@@ -66,6 +69,7 @@ module MU
|
|
66
69
|
# @param deploy_id [String]: Reload and re-process an existing deploy
|
67
70
|
def initialize(environment,
|
68
71
|
verbosity: MU::Logger::NORMAL,
|
72
|
+
color: true,
|
69
73
|
webify_logs: false,
|
70
74
|
nocleanup: false,
|
71
75
|
cloudformation_path: nil,
|
@@ -76,12 +80,14 @@ module MU
|
|
76
80
|
deploy_id: nil,
|
77
81
|
deploy_obj: nil)
|
78
82
|
MU.setVar("verbosity", verbosity)
|
83
|
+
MU.setVar("color", color)
|
79
84
|
@webify_logs = webify_logs
|
80
85
|
@verbosity = verbosity
|
86
|
+
@color = color
|
81
87
|
@nocleanup = nocleanup
|
82
88
|
@no_artifacts = no_artifacts
|
83
89
|
@reraise_thread = reraise_thread
|
84
|
-
MU.setLogging(verbosity, webify_logs)
|
90
|
+
MU.setLogging(verbosity, webify_logs, STDOUT, color)
|
85
91
|
|
86
92
|
MU::Cloud::CloudFormation.emitCloudFormation(set: force_cloudformation)
|
87
93
|
@cloudformation_output = cloudformation_path
|
@@ -96,7 +102,7 @@ module MU
|
|
96
102
|
@dependency_semaphore = Mutex.new
|
97
103
|
|
98
104
|
@main_config = stack_conf
|
99
|
-
@original_config = Marshal.load(Marshal.dump(stack_conf))
|
105
|
+
@original_config = Marshal.load(Marshal.dump(MU.structToHash(stack_conf.dup)))
|
100
106
|
@original_config.freeze
|
101
107
|
@admins = stack_conf["admins"]
|
102
108
|
@mommacat = deploy_obj
|
@@ -109,7 +115,7 @@ module MU
|
|
109
115
|
@updating = false
|
110
116
|
time=Time.new
|
111
117
|
@appname = stack_conf["appname"]
|
112
|
-
@timestamp = time.strftime("%Y%m%d%H").to_s
|
118
|
+
@timestamp = time.strftime("%Y%m%d%H").to_s
|
113
119
|
@timestamp.freeze
|
114
120
|
@timestart = time.to_s;
|
115
121
|
@timestart.freeze
|
@@ -141,7 +147,7 @@ module MU
|
|
141
147
|
if !@main_config[data[:cfg_plural]].nil? and @main_config[data[:cfg_plural]].size > 0
|
142
148
|
@main_config[data[:cfg_plural]].each { |resource|
|
143
149
|
if force_cloudformation
|
144
|
-
if resource['cloud']
|
150
|
+
if resource['cloud'] == "AWS"
|
145
151
|
resource['cloud'] = "CloudFormation"
|
146
152
|
if resource.has_key?("vpc") and resource["vpc"].is_a?(Hash)
|
147
153
|
resource["vpc"]['cloud'] = "CloudFormation"
|
@@ -205,12 +211,26 @@ module MU
|
|
205
211
|
if !die
|
206
212
|
puts "Received SIGINT, hit ctrl-C again within five seconds to kill this deployment."
|
207
213
|
else
|
208
|
-
|
214
|
+
Thread.list.each do |t|
|
215
|
+
next if !t.status
|
216
|
+
if t.object_id != Thread.current.object_id and
|
217
|
+
t.thread_variable_get("name") != "main_thread" and
|
218
|
+
t.thread_variable_get("owned_by_mu")
|
219
|
+
t.kill
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
if @main_thread
|
224
|
+
@main_thread.raise "Terminated by user"
|
225
|
+
else
|
226
|
+
raise "Terminated by user"
|
227
|
+
end
|
209
228
|
end
|
210
229
|
@last_sigterm = Time.now.to_i
|
211
230
|
end
|
212
231
|
|
213
232
|
begin
|
233
|
+
@main_thread = Thread.current
|
214
234
|
if !@mommacat
|
215
235
|
metadata = {
|
216
236
|
"appname" => @appname,
|
@@ -238,16 +258,25 @@ module MU
|
|
238
258
|
@admins.each { |admin|
|
239
259
|
@mommacat.notify("admins", admin['name'], admin)
|
240
260
|
}
|
261
|
+
if @mommacat.numKittens(types: ["Server", "ServerPool"]) > 0
|
262
|
+
MU::MommaCat.start
|
263
|
+
end
|
241
264
|
|
242
265
|
@deploy_semaphore = Mutex.new
|
243
266
|
parent_thread_id = Thread.current.object_id
|
244
|
-
|
267
|
+
|
268
|
+
# Run cloud provider-specific deploy meta-artifact creation (ssh keys,
|
269
|
+
# resource groups, etc)
|
270
|
+
@mommacat.cloudsUsed.each { |cloud|
|
271
|
+
cloudclass = Object.const_get("MU").const_get("Cloud").const_get(cloud)
|
272
|
+
cloudclass.initDeploy(@mommacat)
|
273
|
+
}
|
245
274
|
|
246
275
|
# Kick off threads to create each of our new servers.
|
247
276
|
@my_threads << Thread.new {
|
248
277
|
MU.dupGlobals(parent_thread_id)
|
249
278
|
Thread.current.thread_variable_set("name", "mu_create_container")
|
250
|
-
Thread.abort_on_exception =
|
279
|
+
# Thread.abort_on_exception = false
|
251
280
|
MU::Cloud.resource_types.each { |cloudclass, data|
|
252
281
|
if !@main_config[data[:cfg_plural]].nil? and
|
253
282
|
@main_config[data[:cfg_plural]].size > 0 and
|
@@ -261,7 +290,7 @@ module MU
|
|
261
290
|
@my_threads << Thread.new {
|
262
291
|
MU.dupGlobals(parent_thread_id)
|
263
292
|
Thread.current.thread_variable_set("name", "mu_groom_container")
|
264
|
-
Thread.abort_on_exception =
|
293
|
+
# Thread.abort_on_exception = false
|
265
294
|
MU::Cloud.resource_types.each { |cloudclass, data|
|
266
295
|
if !@main_config[data[:cfg_plural]].nil? and
|
267
296
|
@main_config[data[:cfg_plural]].size > 0 and
|
@@ -283,9 +312,13 @@ module MU
|
|
283
312
|
t.join
|
284
313
|
end
|
285
314
|
|
315
|
+
@mommacat.save!
|
316
|
+
|
286
317
|
rescue Exception => e
|
287
318
|
@my_threads.each do |t|
|
288
|
-
if t.object_id != Thread.current.object_id and
|
319
|
+
if t.object_id != Thread.current.object_id and
|
320
|
+
t.thread_variable_get("name") != "main_thread" and
|
321
|
+
t.object_id != parent_thread_id
|
289
322
|
MU::MommaCat.unlockAll
|
290
323
|
t.kill
|
291
324
|
end
|
@@ -294,14 +327,17 @@ module MU
|
|
294
327
|
# If it was a regular old exit, we assume something deeper in already
|
295
328
|
# handled logging and cleanup for us, and just quietly go away.
|
296
329
|
if e.class.to_s != "SystemExit"
|
297
|
-
MU.log e.
|
330
|
+
MU.log e.class.name+": "+e.message, MU::ERR, details: e.backtrace if @verbosity != MU::Logger::SILENT
|
298
331
|
if !@nocleanup
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
332
|
+
|
333
|
+
# Wrap this in a thread to protect the Azure SDK from imploding
|
334
|
+
# because it mistakenly thinks there's a deadlock.
|
335
|
+
cleanup_thread = Thread.new {
|
336
|
+
MU.dupGlobals(parent_thread_id)
|
337
|
+
Thread.abort_on_exception = false
|
338
|
+
MU::Cleanup.run(MU.deploy_id, skipsnapshots: true, verbosity: @verbosity, mommacat: @mommacat)
|
339
|
+
}
|
340
|
+
cleanup_thread.join
|
305
341
|
@nocleanup = true # so we don't run this again later
|
306
342
|
end
|
307
343
|
end
|
@@ -333,7 +369,7 @@ module MU
|
|
333
369
|
if MU.myCloud == "AWS"
|
334
370
|
MU::Cloud::AWS.openFirewallForClients # XXX add the other clouds, or abstract
|
335
371
|
end
|
336
|
-
MU::MommaCat.getLitter(MU.deploy_id, use_cache: false)
|
372
|
+
# MU::MommaCat.getLitter(MU.deploy_id, use_cache: false)
|
337
373
|
if @mommacat.numKittens(types: ["Server", "ServerPool"]) > 0
|
338
374
|
# MU::MommaCat.syncMonitoringConfig # TODO only invoke if Server or ServerPool actually changed something when @updating
|
339
375
|
end
|
@@ -401,19 +437,7 @@ module MU
|
|
401
437
|
}
|
402
438
|
end
|
403
439
|
|
404
|
-
|
405
|
-
(!$MU_CFG['slack']['skip_environments'] or !$MU_CFG['slack']['skip_environments'].any?{ |s| s.casecmp(MU.environment)==0 })
|
406
|
-
require 'slack-notifier'
|
407
|
-
slack = Slack::Notifier.new $MU_CFG['slack']['webhook']
|
408
|
-
|
409
|
-
slack.ping "Mu deployment #{MU.appname} *\"#{MU.handle}\"* (`#{MU.deploy_id}`) successfully completed on *#{$MU_CFG['hostname']}* (#{$MU_CFG['public_address']})", channel: $MU_CFG['slack']['channel']
|
410
|
-
if MU.summary.size > 0
|
411
|
-
MU.summary.each { |msg|
|
412
|
-
slack.ping msg, channel: $MU_CFG['slack']['channel']
|
413
|
-
}
|
414
|
-
end
|
415
|
-
end
|
416
|
-
|
440
|
+
@mommacat.sendAdminSlack("Deploy completed succesfully", msg: MU.summary.join("\n"))
|
417
441
|
end
|
418
442
|
|
419
443
|
private
|
@@ -431,6 +455,7 @@ module MU
|
|
431
455
|
$str += JSON.pretty_generate(@mommacat.deployment)
|
432
456
|
|
433
457
|
admin_addrs = @admins.map { |admin|
|
458
|
+
admin['name'] ||= ""
|
434
459
|
admin['name']+" <"+admin['email']+">"
|
435
460
|
}
|
436
461
|
|
@@ -516,7 +541,7 @@ MESSAGE_END
|
|
516
541
|
|
517
542
|
services.each { |resource|
|
518
543
|
if !resource["#MU_CLOUDCLASS"]
|
519
|
-
pp resource
|
544
|
+
# pp resource
|
520
545
|
end
|
521
546
|
res_type = resource["#MU_CLOUDCLASS"].cfg_name
|
522
547
|
name = res_type+"_"+resource["name"]
|
@@ -531,9 +556,10 @@ MESSAGE_END
|
|
531
556
|
if resource["dependencies"] != nil then
|
532
557
|
resource["dependencies"].each { |dependency|
|
533
558
|
parent_class = nil
|
534
|
-
MU::Cloud.resource_types.each_pair { |
|
535
|
-
if attrs[:cfg_name] == dependency['type']
|
536
|
-
|
559
|
+
MU::Cloud.resource_types.each_pair { |res_class, attrs|
|
560
|
+
if attrs[:cfg_name] == dependency['type'] or
|
561
|
+
attrs[:cfg_plural] == dependency['type']
|
562
|
+
parent_class = Object.const_get("MU").const_get("Cloud").const_get(res_class)
|
537
563
|
break
|
538
564
|
end
|
539
565
|
}
|
@@ -576,109 +602,126 @@ MESSAGE_END
|
|
576
602
|
parent_thread = Thread.current
|
577
603
|
services.uniq!
|
578
604
|
services.each do |service|
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
605
|
+
begin
|
606
|
+
@my_threads << Thread.new(service) { |myservice|
|
607
|
+
MU.dupGlobals(parent_thread_id)
|
608
|
+
threadname = myservice["#MU_CLOUDCLASS"].cfg_name+"_"+myservice["name"]+"_#{mode}"
|
609
|
+
Thread.current.thread_variable_set("name", threadname)
|
610
|
+
Thread.current.thread_variable_set("owned_by_mu", true)
|
611
|
+
# Thread.abort_on_exception = false
|
612
|
+
waitOnThreadDependencies(threadname)
|
613
|
+
|
614
|
+
if myservice["#MU_CLOUDCLASS"].instance_methods(false).include?(:groom) and !myservice['dependencies'].nil? and !myservice['dependencies'].size == 0
|
615
|
+
if mode == "create"
|
616
|
+
MU::MommaCat.lock(myservice["#MU_CLOUDCLASS"].cfg_name+"_"+myservice["name"]+"-dependencies")
|
617
|
+
elsif mode == "groom"
|
618
|
+
MU::MommaCat.unlock(myservice["#MU_CLOUDCLASS"].cfg_name+"_"+myservice["name"]+"-dependencies")
|
619
|
+
end
|
591
620
|
end
|
592
|
-
end
|
593
621
|
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
rescue Exception => e
|
607
|
-
MU::MommaCat.unlockAll
|
608
|
-
@main_thread.raise MuError, "Error invoking #{service["#MU_CLOUDCLASS"]}.#{mode} for #{myservice['name']} (#{e.inspect})", e.backtrace
|
609
|
-
raise e
|
610
|
-
end
|
611
|
-
begin
|
612
|
-
MU.log "Checking whether to run #{service['#MUOBJECT']}.#{mode} (updating: #{@updating})", MU::DEBUG
|
613
|
-
if !@updating or mode != "create"
|
614
|
-
myservice = run_this_method.call
|
615
|
-
else
|
616
|
-
|
617
|
-
# XXX experimental create behavior for --liveupdate flag, only works on a couple of resource types. Inserting new resources into an old deploy is tricky.
|
618
|
-
opts = {}
|
619
|
-
if service["#MU_CLOUDCLASS"].cfg_name == "loadbalancer"
|
620
|
-
opts['classic'] = service['classic'] ? true : false
|
622
|
+
MU.log "Launching thread #{threadname}", MU::DEBUG
|
623
|
+
begin
|
624
|
+
if myservice['#MUOBJECT'].nil?
|
625
|
+
if @mommacat
|
626
|
+
ext_obj = @mommacat.findLitterMate(type: myservice["#MU_CLOUDCLASS"].cfg_plural, name: myservice['name'], credentials: myservice['credentials'], created_only: true, return_all: false)
|
627
|
+
if @updating
|
628
|
+
raise MuError, "Failed to findLitterMate(type: #{myservice["#MU_CLOUDCLASS"].cfg_plural}, name: #{myservice['name']}, credentials: #{myservice['credentials']}, created_only: true, return_all: false) in deploy #{@mommacat.deploy_id}" if !ext_obj
|
629
|
+
ext_obj.config!(myservice)
|
630
|
+
end
|
631
|
+
myservice['#MUOBJECT'] = ext_obj
|
632
|
+
end
|
633
|
+
myservice['#MUOBJECT'] ||= myservice["#MU_CLOUDCLASS"].new(mommacat: @mommacat, kitten_cfg: myservice, delayed_save: @updating)
|
621
634
|
end
|
635
|
+
rescue Exception => e
|
636
|
+
MU::MommaCat.unlockAll
|
637
|
+
@main_thread.raise MuError, "Error instantiating object from #{myservice["#MU_CLOUDCLASS"]} (#{e.inspect})", e.backtrace
|
638
|
+
raise e
|
639
|
+
end
|
640
|
+
begin
|
641
|
+
run_this_method = myservice['#MUOBJECT'].method(mode)
|
642
|
+
rescue Exception => e
|
643
|
+
MU::MommaCat.unlockAll
|
644
|
+
@main_thread.raise MuError, "Error invoking #{myservice["#MU_CLOUDCLASS"]}.#{mode} for #{myservice['name']} (#{e.inspect})", e.backtrace
|
645
|
+
raise e
|
646
|
+
end
|
647
|
+
begin
|
648
|
+
MU.log "Checking whether to run #{myservice['#MUOBJECT']}.#{mode} (updating: #{@updating})", MU::DEBUG
|
649
|
+
if !@updating or mode != "create"
|
650
|
+
myservice = run_this_method.call
|
651
|
+
else
|
622
652
|
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
# allow_multi: service["#MU_CLOUDCLASS"].has_multiple,
|
629
|
-
tag_key: "MU-ID",
|
630
|
-
tag_value: @mommacat.deploy_id,
|
631
|
-
flags: opts,
|
632
|
-
dummy_ok: false
|
633
|
-
)
|
634
|
-
|
635
|
-
found = found.delete_if { |x|
|
636
|
-
x.cloud_id.nil? and x.cloudobj.cloud_id.nil?
|
637
|
-
}
|
653
|
+
# XXX experimental create behavior for --liveupdate flag, only works on a couple of resource types. Inserting new resources into an old deploy is tricky.
|
654
|
+
opts = {}
|
655
|
+
if myservice["#MU_CLOUDCLASS"].cfg_name == "loadbalancer"
|
656
|
+
opts['classic'] = myservice['classic'] ? true : false
|
657
|
+
end
|
638
658
|
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
#
|
646
|
-
|
659
|
+
found = MU::MommaCat.findStray(myservice['cloud'],
|
660
|
+
myservice["#MU_CLOUDCLASS"].cfg_name,
|
661
|
+
name: myservice['name'],
|
662
|
+
credentials: myservice['credentials'],
|
663
|
+
region: myservice['region'],
|
664
|
+
deploy_id: @mommacat.deploy_id,
|
665
|
+
# allow_multi: myservice["#MU_CLOUDCLASS"].has_multiple,
|
666
|
+
tag_key: "MU-ID",
|
667
|
+
tag_value: @mommacat.deploy_id,
|
668
|
+
flags: opts,
|
669
|
+
dummy_ok: false
|
670
|
+
)
|
671
|
+
|
672
|
+
found = found.delete_if { |x|
|
673
|
+
x.cloud_id.nil? and x.cloudobj.cloud_id.nil?
|
674
|
+
}
|
675
|
+
|
676
|
+
if found.size == 0
|
677
|
+
MU.log "#{myservice["#MU_CLOUDCLASS"].name} #{myservice['name']} not found, creating", MU::NOTICE
|
647
678
|
myservice = run_this_method.call
|
679
|
+
else
|
680
|
+
real_descriptor = @mommacat.findLitterMate(type: myservice["#MU_CLOUDCLASS"].cfg_name, name: myservice['name'], created_only: true)
|
681
|
+
|
682
|
+
if !real_descriptor
|
683
|
+
MU.log "Invoking #{run_this_method.to_s} #{myservice['name']} #{myservice['name']}", MU::NOTICE
|
684
|
+
myservice = run_this_method.call
|
685
|
+
end
|
686
|
+
#MU.log "#{myservice["#MU_CLOUDCLASS"].cfg_name} #{myservice['name']}", MU::NOTICE
|
648
687
|
end
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
688
|
+
|
689
|
+
end
|
690
|
+
rescue ThreadError => e
|
691
|
+
MU.log "Waiting for threads to complete (#{e.message})", MU::NOTICE
|
692
|
+
@my_threads.each do |thr|
|
693
|
+
next if thr.object_id == Thread.current.object_id
|
694
|
+
thr.join(0.1)
|
695
|
+
end
|
696
|
+
@my_threads.reject! { |thr| !thr.alive? }
|
697
|
+
sleep 10+Random.rand(20)
|
698
|
+
retry
|
699
|
+
rescue Exception => e
|
700
|
+
MU.log e.inspect, MU::ERR, details: e.backtrace if @verbosity != MU::Logger::SILENT
|
701
|
+
MU::MommaCat.unlockAll
|
702
|
+
Thread.list.each do |t|
|
703
|
+
if t.object_id != Thread.current.object_id and t.thread_variable_get("name") != "main_thread" and t.object_id != parent_thread_id and t.thread_variable_get("owned_by_mu")
|
704
|
+
t.kill
|
661
705
|
end
|
662
|
-
#MU.log "#{service["#MU_CLOUDCLASS"].cfg_name} #{service['name']}", MU::NOTICE
|
663
706
|
end
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
MU.log e.inspect, MU::ERR, details: e.backtrace if @verbosity != MU::Logger::SILENT
|
668
|
-
MU::MommaCat.unlockAll
|
669
|
-
Thread.list.each do |t|
|
670
|
-
if t.object_id != Thread.current.object_id and t.thread_variable_get("name") != "main_thread" and t.object_id != parent_thread_id
|
671
|
-
t.kill
|
707
|
+
if !@nocleanup
|
708
|
+
MU::Cleanup.run(MU.deploy_id, verbosity: @verbosity, skipsnapshots: true)
|
709
|
+
@nocleanup = true # so we don't run this again later
|
672
710
|
end
|
711
|
+
@main_thread.raise MuError, e.message, e.backtrace
|
673
712
|
end
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
713
|
+
MU.purgeGlobals
|
714
|
+
}
|
715
|
+
rescue ThreadError => e
|
716
|
+
MU.log "Waiting for threads to complete (#{e.message})", MU::NOTICE
|
717
|
+
@my_threads.each do |thr|
|
718
|
+
next if thr.object_id == Thread.current.object_id
|
719
|
+
thr.join(0.1)
|
679
720
|
end
|
680
|
-
|
681
|
-
|
721
|
+
@my_threads.reject! { |thr| !thr.alive? }
|
722
|
+
sleep 10+Random.rand(20)
|
723
|
+
retry
|
724
|
+
end
|
682
725
|
end
|
683
726
|
end
|
684
727
|
|