cloud-mu 3.4.0 → 3.5.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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/ansible/roles/mu-nat/tasks/main.yml +3 -0
  3. data/bin/mu-aws-setup +41 -7
  4. data/bin/mu-azure-setup +34 -0
  5. data/bin/mu-configure +214 -119
  6. data/bin/mu-gcp-setup +37 -2
  7. data/bin/mu-node-manage +3 -0
  8. data/bin/mu-refresh-ssl +67 -0
  9. data/bin/mu-run-tests +14 -4
  10. data/bin/mu-self-update +30 -10
  11. data/bin/mu-upload-chef-artifacts +30 -26
  12. data/cloud-mu.gemspec +8 -6
  13. data/cookbooks/mu-master/attributes/default.rb +5 -1
  14. data/cookbooks/mu-master/metadata.rb +2 -2
  15. data/cookbooks/mu-master/recipes/default.rb +81 -26
  16. data/cookbooks/mu-master/recipes/init.rb +197 -62
  17. data/cookbooks/mu-master/recipes/update_nagios_only.rb +1 -1
  18. data/cookbooks/mu-master/recipes/vault.rb +78 -77
  19. data/cookbooks/mu-master/templates/default/mods/rewrite.conf.erb +1 -0
  20. data/cookbooks/mu-master/templates/default/nagios.conf.erb +103 -0
  21. data/cookbooks/mu-master/templates/default/web_app.conf.erb +14 -30
  22. data/cookbooks/mu-tools/attributes/default.rb +5 -0
  23. data/cookbooks/mu-tools/files/centos-6/CentOS-Base.repo +47 -0
  24. data/cookbooks/mu-tools/libraries/helper.rb +12 -2
  25. data/cookbooks/mu-tools/libraries/monkey.rb +1 -1
  26. data/cookbooks/mu-tools/recipes/apply_security.rb +6 -0
  27. data/cookbooks/mu-tools/recipes/aws_api.rb +6 -4
  28. data/cookbooks/mu-tools/recipes/base_repositories.rb +1 -1
  29. data/cookbooks/mu-tools/recipes/gcloud.rb +2 -9
  30. data/cookbooks/mu-tools/recipes/google_api.rb +5 -2
  31. data/cookbooks/mu-tools/resources/disk.rb +108 -58
  32. data/extras/Gemfile.lock.bootstrap +394 -0
  33. data/extras/bucketstubs/error.html +0 -0
  34. data/extras/bucketstubs/index.html +0 -0
  35. data/extras/clean-stock-amis +9 -9
  36. data/extras/git_rpm/build.sh +20 -0
  37. data/extras/git_rpm/mugit.spec +53 -0
  38. data/extras/image-generators/VMWare/centos8.yaml +15 -0
  39. data/extras/openssl_rpm/build.sh +19 -0
  40. data/extras/openssl_rpm/mussl.spec +46 -0
  41. data/extras/python_rpm/muthon.spec +14 -4
  42. data/extras/ruby_rpm/muby.spec +9 -5
  43. data/extras/sqlite_rpm/build.sh +19 -0
  44. data/extras/sqlite_rpm/muqlite.spec +47 -0
  45. data/install/installer +7 -5
  46. data/modules/mu.rb +12 -5
  47. data/modules/mu/cloud/machine_images.rb +1 -1
  48. data/modules/mu/cloud/providers.rb +6 -1
  49. data/modules/mu/cloud/resource_base.rb +1 -1
  50. data/modules/mu/cloud/ssh_sessions.rb +4 -0
  51. data/modules/mu/config.rb +28 -12
  52. data/modules/mu/config/database.rb +2 -2
  53. data/modules/mu/config/firewall_rule.rb +1 -1
  54. data/modules/mu/config/ref.rb +2 -2
  55. data/modules/mu/config/schema_helpers.rb +12 -3
  56. data/modules/mu/config/server.rb +10 -4
  57. data/modules/mu/config/server_pool.rb +2 -2
  58. data/modules/mu/config/vpc.rb +10 -10
  59. data/modules/mu/defaults/AWS.yaml +32 -32
  60. data/modules/mu/deploy.rb +23 -10
  61. data/modules/mu/groomers/chef.rb +2 -2
  62. data/modules/mu/master.rb +49 -3
  63. data/modules/mu/mommacat.rb +8 -5
  64. data/modules/mu/mommacat/naming.rb +2 -2
  65. data/modules/mu/mommacat/storage.rb +22 -27
  66. data/modules/mu/providers/aws.rb +142 -48
  67. data/modules/mu/providers/aws/alarm.rb +3 -3
  68. data/modules/mu/providers/aws/bucket.rb +19 -19
  69. data/modules/mu/providers/aws/cache_cluster.rb +22 -22
  70. data/modules/mu/providers/aws/cdn.rb +2 -2
  71. data/modules/mu/providers/aws/collection.rb +14 -14
  72. data/modules/mu/providers/aws/container_cluster.rb +27 -27
  73. data/modules/mu/providers/aws/database.rb +40 -39
  74. data/modules/mu/providers/aws/dnszone.rb +5 -5
  75. data/modules/mu/providers/aws/endpoint.rb +35 -35
  76. data/modules/mu/providers/aws/firewall_rule.rb +26 -23
  77. data/modules/mu/providers/aws/function.rb +28 -28
  78. data/modules/mu/providers/aws/group.rb +7 -7
  79. data/modules/mu/providers/aws/habitat.rb +2 -2
  80. data/modules/mu/providers/aws/job.rb +6 -6
  81. data/modules/mu/providers/aws/loadbalancer.rb +34 -34
  82. data/modules/mu/providers/aws/log.rb +14 -14
  83. data/modules/mu/providers/aws/msg_queue.rb +10 -10
  84. data/modules/mu/providers/aws/nosqldb.rb +8 -8
  85. data/modules/mu/providers/aws/notifier.rb +7 -7
  86. data/modules/mu/providers/aws/role.rb +17 -15
  87. data/modules/mu/providers/aws/search_domain.rb +10 -10
  88. data/modules/mu/providers/aws/server.rb +176 -95
  89. data/modules/mu/providers/aws/server_pool.rb +65 -105
  90. data/modules/mu/providers/aws/storage_pool.rb +17 -9
  91. data/modules/mu/providers/aws/user.rb +1 -1
  92. data/modules/mu/providers/aws/vpc.rb +103 -51
  93. data/modules/mu/providers/aws/vpc_subnet.rb +43 -39
  94. data/modules/mu/providers/azure.rb +78 -12
  95. data/modules/mu/providers/azure/server.rb +18 -3
  96. data/modules/mu/providers/cloudformation/server.rb +1 -1
  97. data/modules/mu/providers/google.rb +19 -4
  98. data/modules/mu/providers/google/folder.rb +6 -2
  99. data/modules/mu/providers/google/function.rb +65 -30
  100. data/modules/mu/providers/google/role.rb +1 -1
  101. data/modules/mu/providers/google/vpc.rb +27 -2
  102. data/modules/tests/aws-servers-with-handrolled-iam.yaml +37 -0
  103. data/modules/tests/k8s.yaml +1 -1
  104. metadata +24 -8
@@ -581,7 +581,7 @@ module MU
581
581
  }
582
582
  end
583
583
  if args[:cloud_id]
584
- found.reject! { |k, _v| k != role.name }
584
+ found.reject! { |k, _v| k != args[:cloud_id] }
585
585
  end
586
586
 
587
587
  # Now go get everything that's bound here
@@ -364,6 +364,12 @@ end
364
364
  }
365
365
  end
366
366
 
367
+
368
+ # The API is filled with lies
369
+ @subnets.reject! { |s|
370
+ !MU::Cloud::Google.listRegions(credentials: @credentials).include?(s.az)
371
+ }
372
+
367
373
  return @subnets
368
374
  end
369
375
 
@@ -442,14 +448,19 @@ end
442
448
 
443
449
  # Check for a subnet in this VPC matching one or more of the specified
444
450
  # criteria, and return it if found.
445
- def getSubnet(cloud_id: nil, name: nil, tag_key: nil, tag_value: nil, ip_block: nil, region: nil)
451
+ def getSubnet(cloud_id: nil, name: nil, tag_key: nil, tag_value: nil, ip_block: nil, region: nil, subnet_mu_name: nil)
446
452
  if !cloud_id.nil? and cloud_id.match(/^https:\/\//)
447
453
  cloud_id.match(/\/regions\/([^\/]+)\/subnetworks\/([^\/]+)$/)
448
454
  region = Regexp.last_match[1]
449
455
  cloud_id = Regexp.last_match[2]
450
456
  cloud_id.gsub!(/.*?\//, "")
451
457
  end
452
- MU.log "getSubnet(cloud_id: #{cloud_id}, name: #{name}, tag_key: #{tag_key}, tag_value: #{tag_value}, ip_block: #{ip_block}, region: #{region})", MU::DEBUG, details: caller[0]
458
+
459
+ if name
460
+ subnet_mu_name ||= @config['scrub_mu_isms'] ? @cloud_id+name.downcase : MU::Cloud::Google.nameStr(@deploy.getResourceName(name, max_length: 61))
461
+ end
462
+
463
+ MU.log "getSubnet(cloud_id: #{cloud_id}, name: #{name}, tag_key: #{tag_key}, tag_value: #{tag_value}, ip_block: #{ip_block}, region: #{region}, subnet_mu_name: #{subnet_mu_name})", MU::DEBUG, details: caller[0]
453
464
  subnets.each { |subnet|
454
465
  next if region and subnet.az != region
455
466
  if !cloud_id.nil? and !subnet.cloud_id.nil? and subnet.cloud_id.to_s == cloud_id.to_s
@@ -457,6 +468,9 @@ end
457
468
  elsif !name.nil? and !subnet.name.nil? and
458
469
  subnet.name.downcase.to_s == name.downcase.to_s
459
470
  return subnet
471
+ elsif !subnet_mu_name.nil? and !subnet.name.nil? and
472
+ subnet.name.downcase.to_s == subnet_mu_name.downcase.to_s
473
+ return subnet
460
474
  end
461
475
  }
462
476
  return nil
@@ -931,6 +945,14 @@ MU.log "ROUTES TO #{target_instance.name}", MU::WARN, details: resp
931
945
  else
932
946
  route['nat_host_name'] = nat['name']
933
947
  route['priority'] = 100
948
+ MU::Config.addDependency(vpc, nat['name'], "server", their_phase: "groom", my_phase: "groom")
949
+ vpc["bastion"] = MU::Config::Ref.get(
950
+ name: nat['name'],
951
+ cloud: vpc['cloud'],
952
+ credentials: vpc['credentials'],
953
+ type: "servers"
954
+ )
955
+
934
956
  end
935
957
  end
936
958
  }
@@ -1172,6 +1194,9 @@ MU.log "ROUTES TO #{target_instance.name}", MU::WARN, details: resp
1172
1194
  if e.message.match(/notFound: /)
1173
1195
  MU.log "Failed to fetch cloud description for Google subnet #{@cloud_id}", MU::WARN, details: { "project" => @parent.habitat_id, "region" => @az, "name" => @cloud_id }
1174
1196
  return nil
1197
+ elsif e.message.match(/Unknown region\. /)
1198
+ MU.log "Google subnet #{@cloud_id} seems like it should live in #{@az}, but that's not a valid region", MU::WARN, details: { "project" => @parent.habitat_id, "region" => @az, "name" => @cloud_id }
1199
+ return nil
1175
1200
  else
1176
1201
  raise e
1177
1202
  end
@@ -0,0 +1,37 @@
1
+ # clouds: AWS
2
+ # groomers: Chef
3
+ ---
4
+ appname: smoketest
5
+ vpcs:
6
+ - name: svrtest
7
+ roles:
8
+ - name: handrolled
9
+ scrub_mu_isms: true
10
+ can_assume:
11
+ - entity_id: ec2.amazonaws.com
12
+ entity_type: service
13
+ import:
14
+ - arn:aws:iam::aws:policy/AmazonRDSFullAccess
15
+ servers:
16
+ - name: iamtest1
17
+ size: t3.medium
18
+ iam_role: handrolled
19
+ platform: centos6
20
+ generate_iam_role: false
21
+ vpc:
22
+ name: svrtest
23
+ server_pools:
24
+ - name: iamtest2
25
+ scrub_mu_isms: true
26
+ min_size: 1
27
+ max_size: 1
28
+ wait_for_nodes: 1
29
+ platform: centos6
30
+ vpc:
31
+ name: svrtest
32
+ basis:
33
+ launch-config:
34
+ name: iamtest2
35
+ size: t3.medium
36
+ iam_role: handrolled
37
+ generate_iam_role: false
@@ -27,7 +27,7 @@ container_clusters:
27
27
  comment: meep
28
28
  vpc:
29
29
  vpc_name: k8s
30
- subnet_pref: all_private
30
+ subnet_pref: all_public
31
31
  kubernetes_resources:
32
32
  - apiVersion: v1
33
33
  kind: Service
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: 3.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Stange
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2020-10-22 00:00:00.000000000 Z
14
+ date: 2021-01-18 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: addressable
@@ -47,28 +47,28 @@ dependencies:
47
47
  requirements:
48
48
  - - "~>"
49
49
  - !ruby/object:Gem::Version
50
- version: '0.52'
50
+ version: '0.65'
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - "~>"
56
56
  - !ruby/object:Gem::Version
57
- version: '0.52'
57
+ version: '0.65'
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: bundler
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - "~>"
63
63
  - !ruby/object:Gem::Version
64
- version: '1.17'
64
+ version: 2.1.4
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - "~>"
70
70
  - !ruby/object:Gem::Version
71
- version: '1.17'
71
+ version: 2.1.4
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: chronic_duration
74
74
  requirement: !ruby/object:Gem::Requirement
@@ -131,14 +131,14 @@ dependencies:
131
131
  requirements:
132
132
  - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: 0.36.4
134
+ version: 0.50.0
135
135
  type: :runtime
136
136
  prerelease: false
137
137
  version_requirements: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
- version: 0.36.4
141
+ version: 0.50.0
142
142
  - !ruby/object:Gem::Dependency
143
143
  name: googleauth
144
144
  requirement: !ruby/object:Gem::Requirement
@@ -448,6 +448,7 @@ executables:
448
448
  - mu-gen-docs
449
449
  - mu-tunnel-nagios
450
450
  - mu-ssh
451
+ - mu-refresh-ssl
451
452
  - mu-gen-env
452
453
  - mu-configure
453
454
  - mu-momma-cat
@@ -524,6 +525,7 @@ files:
524
525
  - bin/mu-load-config.rb
525
526
  - bin/mu-momma-cat
526
527
  - bin/mu-node-manage
528
+ - bin/mu-refresh-ssl
527
529
  - bin/mu-run-tests
528
530
  - bin/mu-self-update
529
531
  - bin/mu-ssh
@@ -663,8 +665,10 @@ files:
663
665
  - cookbooks/mu-master/templates/default/389-directory-setup.inf.erb
664
666
  - cookbooks/mu-master/templates/default/chef-server.rb.erb
665
667
  - cookbooks/mu-master/templates/default/dhclient-eth0.conf.erb
668
+ - cookbooks/mu-master/templates/default/mods/rewrite.conf.erb
666
669
  - cookbooks/mu-master/templates/default/mu-momma-cat.erb
667
670
  - cookbooks/mu-master/templates/default/mu.rc.erb
671
+ - cookbooks/mu-master/templates/default/nagios.conf.erb
668
672
  - cookbooks/mu-master/templates/default/openssl.cnf.erb
669
673
  - cookbooks/mu-master/templates/default/sssd.conf.erb
670
674
  - cookbooks/mu-master/templates/default/web_app.conf.erb
@@ -736,6 +740,7 @@ files:
736
740
  - cookbooks/mu-tools/attributes/default.rb
737
741
  - cookbooks/mu-tools/attributes/ebs_rolling_snapshots.rb
738
742
  - cookbooks/mu-tools/files/amazon/etc/freshclam.conf
743
+ - cookbooks/mu-tools/files/centos-6/CentOS-Base.repo
739
744
  - cookbooks/mu-tools/files/centos-6/README_MU
740
745
  - cookbooks/mu-tools/files/centos-6/etc/audit/stig.rules
741
746
  - cookbooks/mu-tools/files/centos-6/etc/bashrc
@@ -908,15 +913,20 @@ files:
908
913
  - environments/dev.json
909
914
  - environments/development.json
910
915
  - environments/prod.json
916
+ - extras/Gemfile.lock.bootstrap
911
917
  - extras/README.md
912
918
  - extras/admin-role-binding.yaml
913
919
  - extras/admin-user.yaml
914
920
  - extras/alpha.png
915
921
  - extras/aws-auth-cm.yaml.erb
916
922
  - extras/beta.png
923
+ - extras/bucketstubs/error.html
924
+ - extras/bucketstubs/index.html
917
925
  - extras/clean-stock-amis
918
926
  - extras/generate-stock-images
919
927
  - extras/git-fix-permissions-hook
928
+ - extras/git_rpm/build.sh
929
+ - extras/git_rpm/mugit.spec
920
930
  - extras/gitlab-eks-helper.sh.erb
921
931
  - extras/image-generators/AWS/centos6.yaml
922
932
  - extras/image-generators/AWS/centos7-govcloud.yaml
@@ -928,14 +938,19 @@ files:
928
938
  - extras/image-generators/Google/centos6.yaml
929
939
  - extras/image-generators/Google/centos7.yaml
930
940
  - extras/image-generators/README.md
941
+ - extras/image-generators/VMWare/centos8.yaml
931
942
  - extras/lambda_waf_domain_blacklist.py
932
943
  - extras/list-stock-amis
944
+ - extras/openssl_rpm/build.sh
945
+ - extras/openssl_rpm/mussl.spec
933
946
  - extras/platform_berksfile_base
934
947
  - extras/python_rpm/build.sh
935
948
  - extras/python_rpm/muthon.spec
936
949
  - extras/release.png
937
950
  - extras/ruby_rpm/build.sh
938
951
  - extras/ruby_rpm/muby.spec
952
+ - extras/sqlite_rpm/build.sh
953
+ - extras/sqlite_rpm/muqlite.spec
939
954
  - extras/vault_tools/README.md
940
955
  - extras/vault_tools/export_vaults.sh
941
956
  - extras/vault_tools/recreate_vaults.sh
@@ -1115,6 +1130,7 @@ files:
1115
1130
  - modules/tests/auto_scaling.inc
1116
1131
  - modules/tests/aws-iam.yaml
1117
1132
  - modules/tests/aws-jobs-functions.yaml
1133
+ - modules/tests/aws-servers-with-handrolled-iam.yaml
1118
1134
  - modules/tests/aws-sgs.yaml
1119
1135
  - modules/tests/bucket.yml
1120
1136
  - modules/tests/centos6.yaml