cloud-mu 2.0.4 → 2.1.0beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +6 -0
  3. data/ansible/roles/geerlingguy.firewall/LICENSE +20 -0
  4. data/ansible/roles/geerlingguy.firewall/README.md +93 -0
  5. data/ansible/roles/geerlingguy.firewall/defaults/main.yml +19 -0
  6. data/ansible/roles/geerlingguy.firewall/handlers/main.yml +3 -0
  7. data/ansible/roles/geerlingguy.firewall/meta/main.yml +26 -0
  8. data/ansible/roles/geerlingguy.firewall/molecule/default/molecule.yml +40 -0
  9. data/ansible/roles/geerlingguy.firewall/molecule/default/playbook.yml +17 -0
  10. data/ansible/roles/geerlingguy.firewall/molecule/default/tests/test_default.py +14 -0
  11. data/ansible/roles/geerlingguy.firewall/molecule/default/yaml-lint.yml +6 -0
  12. data/ansible/roles/geerlingguy.firewall/tasks/disable-other-firewalls.yml +66 -0
  13. data/ansible/roles/geerlingguy.firewall/tasks/main.yml +44 -0
  14. data/ansible/roles/geerlingguy.firewall/templates/firewall.bash.j2 +136 -0
  15. data/ansible/roles/geerlingguy.firewall/templates/firewall.init.j2 +52 -0
  16. data/ansible/roles/geerlingguy.firewall/templates/firewall.unit.j2 +12 -0
  17. data/bin/mu-ansible-secret +114 -0
  18. data/bin/mu-aws-setup +74 -21
  19. data/bin/mu-node-manage +22 -12
  20. data/bin/mu-self-update +11 -4
  21. data/cloud-mu.gemspec +3 -3
  22. data/cookbooks/firewall/metadata.json +1 -1
  23. data/cookbooks/firewall/recipes/default.rb +4 -0
  24. data/cookbooks/mu-master/recipes/default.rb +0 -3
  25. data/cookbooks/mu-master/recipes/init.rb +15 -9
  26. data/cookbooks/mu-master/templates/default/mu.rc.erb +1 -1
  27. data/cookbooks/mu-master/templates/default/web_app.conf.erb +0 -4
  28. data/cookbooks/mu-php54/metadata.rb +2 -2
  29. data/cookbooks/mu-php54/recipes/default.rb +1 -3
  30. data/cookbooks/mu-tools/recipes/eks.rb +25 -2
  31. data/cookbooks/mu-tools/recipes/nrpe.rb +6 -1
  32. data/cookbooks/mu-tools/recipes/set_mu_hostname.rb +8 -0
  33. data/cookbooks/mu-tools/templates/default/etc_hosts.erb +1 -1
  34. data/cookbooks/mu-tools/templates/default/kubeconfig.erb +2 -2
  35. data/cookbooks/mu-tools/templates/default/kubelet-config.json.erb +35 -0
  36. data/extras/clean-stock-amis +10 -4
  37. data/extras/list-stock-amis +64 -0
  38. data/extras/python_rpm/build.sh +21 -0
  39. data/extras/python_rpm/muthon.spec +68 -0
  40. data/install/README.md +5 -2
  41. data/install/user-dot-murc.erb +1 -1
  42. data/modules/mu.rb +52 -8
  43. data/modules/mu/clouds/aws.rb +1 -1
  44. data/modules/mu/clouds/aws/container_cluster.rb +1071 -47
  45. data/modules/mu/clouds/aws/firewall_rule.rb +45 -19
  46. data/modules/mu/clouds/aws/log.rb +3 -2
  47. data/modules/mu/clouds/aws/role.rb +18 -2
  48. data/modules/mu/clouds/aws/server.rb +11 -5
  49. data/modules/mu/clouds/aws/server_pool.rb +20 -24
  50. data/modules/mu/clouds/aws/userdata/linux.erb +1 -1
  51. data/modules/mu/clouds/aws/vpc.rb +9 -0
  52. data/modules/mu/clouds/google/server.rb +2 -0
  53. data/modules/mu/config.rb +3 -3
  54. data/modules/mu/config/container_cluster.rb +1 -1
  55. data/modules/mu/config/firewall_rule.rb +4 -0
  56. data/modules/mu/config/role.rb +29 -0
  57. data/modules/mu/config/server.rb +9 -4
  58. data/modules/mu/groomer.rb +14 -3
  59. data/modules/mu/groomers/ansible.rb +553 -0
  60. data/modules/mu/groomers/chef.rb +0 -5
  61. data/modules/mu/mommacat.rb +18 -3
  62. data/modules/scratchpad.erb +1 -1
  63. data/requirements.txt +5 -0
  64. metadata +39 -16
@@ -20,11 +20,6 @@ module MU
20
20
  # Support for Chef as a host configuration management layer.
21
21
  class Chef
22
22
 
23
- # Wrapper class for temporary Exceptions. Gives our internals something
24
- # to inherit that will log a notice message appropriately before
25
- # bubbling up.
26
- class MuNoSuchSecret < StandardError;end
27
-
28
23
  Object.class_eval {
29
24
  def self.const_missing(symbol)
30
25
  if symbol.to_sym == :Chef or symbol.to_sym == :ChefVault
@@ -1058,7 +1058,8 @@ module MU
1058
1058
  allow_multi: false,
1059
1059
  calling_deploy: MU.mommacat,
1060
1060
  flags: {},
1061
- dummy_ok: false
1061
+ dummy_ok: false,
1062
+ debug: false
1062
1063
  )
1063
1064
  return nil if cloud == "CloudFormation" and !cloud_id.nil?
1064
1065
  begin
@@ -1094,7 +1095,9 @@ module MU
1094
1095
  deploy_id = mu_name.sub(/^(\w+-\w+-\d{10}-[A-Z]{2})-/, '\1')
1095
1096
  end
1096
1097
  end
1097
- MU.log "Called findStray with cloud: #{cloud}, type: #{type}, deploy_id: #{deploy_id}, calling_deploy: #{calling_deploy.deploy_id if !calling_deploy.nil?}, name: #{name}, cloud_id: #{cloud_id}, tag_key: #{tag_key}, tag_value: #{tag_value}, credentials: #{credentials}", MU::DEBUG, details: flags
1098
+ loglevel = debug ? MU::NOTICE : MU::DEBUG
1099
+
1100
+ MU.log "findStray(cloud: #{cloud}, type: #{type}, deploy_id: #{deploy_id}, calling_deploy: #{calling_deploy.deploy_id if !calling_deploy.nil?}, name: #{name}, cloud_id: #{cloud_id}, tag_key: #{tag_key}, tag_value: #{tag_value}, credentials: #{credentials})", loglevel, details: flags
1098
1101
 
1099
1102
  # See if the thing we're looking for is a member of the deploy that's
1100
1103
  # asking after it.
@@ -1110,16 +1113,19 @@ module MU
1110
1113
  mu_descs = MU::MommaCat.getResourceMetadata(cfg_plural, name: name, deploy_id: deploy_id, mu_name: mu_name)
1111
1114
 
1112
1115
  mu_descs.each_pair { |deploy_id, matches|
1116
+ MU.log "findStray: #{deploy_id} had #{matches.size.to_s} initial matches", loglevel
1113
1117
  next if matches.nil? or matches.size == 0
1114
1118
  momma = MU::MommaCat.getLitter(deploy_id)
1115
1119
  straykitten = nil
1116
1120
 
1121
+
1117
1122
  # If we found exactly one match in this deploy, use its metadata to
1118
1123
  # guess at resource names we weren't told.
1119
1124
  if matches.size == 1 and name.nil? and mu_name.nil?
1120
1125
  if cloud_id.nil?
1121
1126
  straykitten = momma.findLitterMate(type: type, name: matches.first["name"], cloud_id: matches.first["cloud_id"], credentials: credentials)
1122
1127
  else
1128
+ MU.log "findStray: attempting to narrow down with cloud_id #{cloud_id}", loglevel
1123
1129
  straykitten = momma.findLitterMate(type: type, name: matches.first["name"], cloud_id: cloud_id, credentials: credentials)
1124
1130
  end
1125
1131
  # elsif !flags.nil? and !flags.empty? # XXX eh, maybe later
@@ -1141,6 +1147,11 @@ module MU
1141
1147
 
1142
1148
  next if straykitten.nil?
1143
1149
 
1150
+ if straykitten.cloud_id.nil?
1151
+ MU.log "findStray: kitten #{straykitten.mu_name} came back with nil cloud_id", MU::WARN
1152
+ next
1153
+ end
1154
+
1144
1155
  kittens[straykitten.cloud_id] = straykitten
1145
1156
 
1146
1157
  # Peace out if we found the exact resource we want
@@ -1154,6 +1165,7 @@ module MU
1154
1165
  end
1155
1166
  }
1156
1167
 
1168
+
1157
1169
  # if !mu_descs.nil? and mu_descs.size > 0 and !deploy_id.nil? and !deploy_id.empty? and !mu_descs.first.empty?
1158
1170
  # MU.log "I found descriptions that might match #{resourceclass.cfg_plural} name: #{name}, deploy_id: #{deploy_id}, mu_name: #{mu_name}, but couldn't isolate my target kitten", MU::WARN, details: caller
1159
1171
  # puts File.read(deploy_dir(deploy_id)+"/deployment.json")
@@ -1171,7 +1183,9 @@ module MU
1171
1183
 
1172
1184
  matches = []
1173
1185
 
1186
+ found_the_thing = false
1174
1187
  credlist.each { |creds|
1188
+ break if found_the_thing
1175
1189
  if cloud_id or (tag_key and tag_value) or !flags.empty?
1176
1190
  regions = []
1177
1191
  begin
@@ -1193,6 +1207,7 @@ module MU
1193
1207
  cloud_descs[r] = resourceclass.find(cloud_id: cloud_id, region: r, tag_key: tag_key, tag_value: tag_value, flags: flags, credentials: creds)
1194
1208
  # Stop if you found the thing
1195
1209
  if cloud_id and cloud_descs[r] and !cloud_descs[r].empty?
1210
+ found_the_thing = true
1196
1211
  break
1197
1212
  end
1198
1213
  }
@@ -1210,7 +1225,7 @@ module MU
1210
1225
  # Give it a fake name if we have to and have decided that's ok.
1211
1226
  if (name.nil? or name.empty?)
1212
1227
  if !dummy_ok
1213
- MU.log "Found cloud provider data for #{cloud} #{type} #{kitten_cloud_id}, but without a name I can't manufacture a proper #{type} object to return", MU::DEBUG, details: caller
1228
+ MU.log "Found cloud provider data for #{cloud} #{type} #{kitten_cloud_id}, but without a name I can't manufacture a proper #{type} object to return", loglevel, details: caller
1214
1229
  next
1215
1230
  else
1216
1231
  if !mu_name.nil?
@@ -1 +1 @@
1
- modules/html.erb
1
+ html.erb
data/requirements.txt ADDED
@@ -0,0 +1,5 @@
1
+ # Modules we would like installed to our bundled Python (the RPM "muthon").
2
+ ansible>=2.7
3
+ awscli
4
+ gcloud
5
+ azure-cli
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloud-mu
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.1.0beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Stange
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2019-08-28 00:00:00.000000000 Z
15
+ date: 2019-05-27 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: erubis
@@ -202,14 +202,14 @@ dependencies:
202
202
  requirements:
203
203
  - - "~>"
204
204
  - !ruby/object:Gem::Version
205
- version: '1.10'
205
+ version: '1.8'
206
206
  type: :runtime
207
207
  prerelease: false
208
208
  version_requirements: !ruby/object:Gem::Requirement
209
209
  requirements:
210
210
  - - "~>"
211
211
  - !ruby/object:Gem::Version
212
- version: '1.10'
212
+ version: '1.8'
213
213
  - !ruby/object:Gem::Dependency
214
214
  name: solve
215
215
  requirement: !ruby/object:Gem::Requirement
@@ -353,21 +353,22 @@ description: |+
353
353
 
354
354
  email: eGTLabs@eglobaltech.com
355
355
  executables:
356
- - mu-upload-chef-artifacts
357
- - mu-configure
358
356
  - mu-gen-docs
357
+ - mu-node-manage
358
+ - mu-ssh
359
+ - mu-gen-env
360
+ - mu-configure
359
361
  - mu-gcp-setup
360
362
  - mu-tunnel-nagios
361
363
  - mu-deploy
362
- - mu-firewall-allow-clients
363
- - mu-self-update
364
- - mu-user-manage
365
364
  - mu-load-config.rb
366
- - mu-node-manage
367
- - mu-ssh
368
- - mu-cleanup
369
- - mu-gen-env
365
+ - mu-ansible-secret
370
366
  - mu-aws-setup
367
+ - mu-upload-chef-artifacts
368
+ - mu-user-manage
369
+ - mu-cleanup
370
+ - mu-firewall-allow-clients
371
+ - mu-self-update
371
372
  extensions: []
372
373
  extra_rdoc_files: []
373
374
  files:
@@ -375,6 +376,21 @@ files:
375
376
  - Jenkinsfile
376
377
  - LICENSE.md
377
378
  - README.md
379
+ - ansible/roles/geerlingguy.firewall/LICENSE
380
+ - ansible/roles/geerlingguy.firewall/README.md
381
+ - ansible/roles/geerlingguy.firewall/defaults/main.yml
382
+ - ansible/roles/geerlingguy.firewall/handlers/main.yml
383
+ - ansible/roles/geerlingguy.firewall/meta/main.yml
384
+ - ansible/roles/geerlingguy.firewall/molecule/default/molecule.yml
385
+ - ansible/roles/geerlingguy.firewall/molecule/default/playbook.yml
386
+ - ansible/roles/geerlingguy.firewall/molecule/default/tests/test_default.py
387
+ - ansible/roles/geerlingguy.firewall/molecule/default/yaml-lint.yml
388
+ - ansible/roles/geerlingguy.firewall/tasks/disable-other-firewalls.yml
389
+ - ansible/roles/geerlingguy.firewall/tasks/main.yml
390
+ - ansible/roles/geerlingguy.firewall/templates/firewall.bash.j2
391
+ - ansible/roles/geerlingguy.firewall/templates/firewall.init.j2
392
+ - ansible/roles/geerlingguy.firewall/templates/firewall.unit.j2
393
+ - bin/mu-ansible-secret
378
394
  - bin/mu-aws-setup
379
395
  - bin/mu-cleanup
380
396
  - bin/mu-configure
@@ -718,6 +734,7 @@ files:
718
734
  - cookbooks/mu-tools/templates/default/etc_pamd_system-auth.erb
719
735
  - cookbooks/mu-tools/templates/default/etc_sysconfig_network.erb
720
736
  - cookbooks/mu-tools/templates/default/kubeconfig.erb
737
+ - cookbooks/mu-tools/templates/default/kubelet-config.json.erb
721
738
  - cookbooks/mu-tools/templates/default/kubelet.service.erb
722
739
  - cookbooks/mu-tools/templates/default/maldet_scanall.sh.erb
723
740
  - cookbooks/mu-tools/templates/default/nrpe.cfg.erb
@@ -858,7 +875,10 @@ files:
858
875
  - extras/image-generators/aws/windows.yaml
859
876
  - extras/image-generators/gcp/centos6.yaml
860
877
  - extras/lambda_waf_domain_blacklist.py
878
+ - extras/list-stock-amis
861
879
  - extras/platform_berksfile_base
880
+ - extras/python_rpm/build.sh
881
+ - extras/python_rpm/muthon.spec
862
882
  - extras/ruby_rpm/build.sh
863
883
  - extras/ruby_rpm/muby.spec
864
884
  - extras/vault_tools/README.md
@@ -985,6 +1005,7 @@ files:
985
1005
  - modules/mu/deploy.rb
986
1006
  - modules/mu/groomer.rb
987
1007
  - modules/mu/groomers/README.md
1008
+ - modules/mu/groomers/ansible.rb
988
1009
  - modules/mu/groomers/chef.rb
989
1010
  - modules/mu/logger.rb
990
1011
  - modules/mu/master.rb
@@ -995,6 +1016,7 @@ files:
995
1016
  - modules/scratchpad.erb
996
1017
  - modules/tests/super_complex_bok.yml
997
1018
  - modules/tests/super_simple_bok.yml
1019
+ - requirements.txt
998
1020
  - roles/demo-dbservice-configure.json
999
1021
  - roles/demo-portal-configure.json
1000
1022
  - roles/mu-master-jenkins.json
@@ -1058,11 +1080,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
1058
1080
  version: '2.4'
1059
1081
  required_rubygems_version: !ruby/object:Gem::Requirement
1060
1082
  requirements:
1061
- - - ">="
1083
+ - - ">"
1062
1084
  - !ruby/object:Gem::Version
1063
- version: '0'
1085
+ version: 1.3.1
1064
1086
  requirements: []
1065
- rubygems_version: 3.0.3
1087
+ rubyforge_project:
1088
+ rubygems_version: 2.5.2.1
1066
1089
  signing_key:
1067
1090
  specification_version: 4
1068
1091
  summary: The eGTLabs Mu toolkit for unified cloud deployments