cloud-mu 3.3.0 → 3.5.1

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 (114) 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 +36 -2
  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 +9 -7
  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 +12 -0
  23. data/cookbooks/mu-tools/files/centos-6/CentOS-Base.repo +47 -0
  24. data/cookbooks/mu-tools/libraries/helper.rb +98 -4
  25. data/cookbooks/mu-tools/libraries/monkey.rb +1 -1
  26. data/cookbooks/mu-tools/recipes/apply_security.rb +31 -9
  27. data/cookbooks/mu-tools/recipes/aws_api.rb +8 -2
  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 +7 -0
  31. data/cookbooks/mu-tools/recipes/rsyslog.rb +8 -1
  32. data/cookbooks/mu-tools/resources/disk.rb +113 -42
  33. data/cookbooks/mu-tools/resources/mommacat_request.rb +1 -2
  34. data/cookbooks/mu-tools/templates/centos-8/sshd_config.erb +215 -0
  35. data/extras/Gemfile.lock.bootstrap +394 -0
  36. data/extras/bucketstubs/error.html +0 -0
  37. data/extras/bucketstubs/index.html +0 -0
  38. data/extras/clean-stock-amis +11 -3
  39. data/extras/generate-stock-images +6 -3
  40. data/extras/git_rpm/build.sh +20 -0
  41. data/extras/git_rpm/mugit.spec +53 -0
  42. data/extras/image-generators/AWS/centos7.yaml +19 -16
  43. data/extras/image-generators/AWS/{rhel7.yaml → rhel71.yaml} +0 -0
  44. data/extras/image-generators/AWS/{win2k12.yaml → win2k12r2.yaml} +0 -0
  45. data/extras/image-generators/VMWare/centos8.yaml +15 -0
  46. data/extras/openssl_rpm/build.sh +19 -0
  47. data/extras/openssl_rpm/mussl.spec +46 -0
  48. data/extras/python_rpm/muthon.spec +14 -4
  49. data/extras/ruby_rpm/muby.spec +9 -5
  50. data/extras/sqlite_rpm/build.sh +19 -0
  51. data/extras/sqlite_rpm/muqlite.spec +47 -0
  52. data/install/installer +7 -5
  53. data/modules/mommacat.ru +2 -2
  54. data/modules/mu.rb +12 -5
  55. data/modules/mu/cloud/machine_images.rb +1 -1
  56. data/modules/mu/cloud/providers.rb +6 -1
  57. data/modules/mu/cloud/resource_base.rb +7 -4
  58. data/modules/mu/cloud/ssh_sessions.rb +5 -1
  59. data/modules/mu/cloud/wrappers.rb +16 -7
  60. data/modules/mu/config.rb +28 -12
  61. data/modules/mu/config/database.rb +2 -2
  62. data/modules/mu/config/firewall_rule.rb +1 -1
  63. data/modules/mu/config/ref.rb +3 -3
  64. data/modules/mu/config/schema_helpers.rb +12 -3
  65. data/modules/mu/config/server.rb +10 -4
  66. data/modules/mu/config/server_pool.rb +2 -2
  67. data/modules/mu/config/vpc.rb +10 -10
  68. data/modules/mu/defaults/AWS.yaml +96 -96
  69. data/modules/mu/deploy.rb +27 -14
  70. data/modules/mu/groomers/chef.rb +2 -2
  71. data/modules/mu/master.rb +49 -3
  72. data/modules/mu/mommacat.rb +27 -9
  73. data/modules/mu/mommacat/naming.rb +2 -2
  74. data/modules/mu/mommacat/search.rb +16 -5
  75. data/modules/mu/mommacat/storage.rb +67 -32
  76. data/modules/mu/providers/aws.rb +185 -71
  77. data/modules/mu/providers/aws/alarm.rb +3 -3
  78. data/modules/mu/providers/aws/bucket.rb +19 -19
  79. data/modules/mu/providers/aws/cache_cluster.rb +22 -22
  80. data/modules/mu/providers/aws/cdn.rb +2 -2
  81. data/modules/mu/providers/aws/collection.rb +14 -14
  82. data/modules/mu/providers/aws/container_cluster.rb +27 -27
  83. data/modules/mu/providers/aws/database.rb +49 -45
  84. data/modules/mu/providers/aws/dnszone.rb +5 -5
  85. data/modules/mu/providers/aws/endpoint.rb +35 -35
  86. data/modules/mu/providers/aws/firewall_rule.rb +26 -23
  87. data/modules/mu/providers/aws/function.rb +35 -32
  88. data/modules/mu/providers/aws/group.rb +7 -7
  89. data/modules/mu/providers/aws/habitat.rb +2 -2
  90. data/modules/mu/providers/aws/job.rb +35 -32
  91. data/modules/mu/providers/aws/loadbalancer.rb +58 -37
  92. data/modules/mu/providers/aws/log.rb +14 -14
  93. data/modules/mu/providers/aws/msg_queue.rb +10 -10
  94. data/modules/mu/providers/aws/nosqldb.rb +8 -8
  95. data/modules/mu/providers/aws/notifier.rb +7 -7
  96. data/modules/mu/providers/aws/role.rb +69 -47
  97. data/modules/mu/providers/aws/search_domain.rb +10 -10
  98. data/modules/mu/providers/aws/server.rb +198 -110
  99. data/modules/mu/providers/aws/server_pool.rb +71 -119
  100. data/modules/mu/providers/aws/storage_pool.rb +17 -9
  101. data/modules/mu/providers/aws/user.rb +1 -1
  102. data/modules/mu/providers/aws/vpc.rb +106 -51
  103. data/modules/mu/providers/aws/vpc_subnet.rb +43 -39
  104. data/modules/mu/providers/azure.rb +82 -16
  105. data/modules/mu/providers/azure/server.rb +18 -3
  106. data/modules/mu/providers/cloudformation/server.rb +1 -1
  107. data/modules/mu/providers/google.rb +20 -5
  108. data/modules/mu/providers/google/folder.rb +6 -2
  109. data/modules/mu/providers/google/function.rb +65 -30
  110. data/modules/mu/providers/google/role.rb +2 -1
  111. data/modules/mu/providers/google/vpc.rb +27 -2
  112. data/modules/tests/aws-servers-with-handrolled-iam.yaml +37 -0
  113. data/modules/tests/k8s.yaml +1 -1
  114. metadata +32 -15
@@ -265,8 +265,12 @@ module MU
265
265
 
266
266
  if args[:cloud_id]
267
267
  raw_id = args[:cloud_id].sub(/^folders\//, "")
268
- resp = MU::Cloud::Google.folder(credentials: args[:credentials]).get_folder("folders/"+raw_id)
269
- found[resp.name] = resp if resp
268
+ begin
269
+ resp = MU::Cloud::Google.folder(credentials: args[:credentials]).get_folder("folders/"+raw_id)
270
+ found[resp.name] = resp if resp
271
+ rescue ::Google::Apis::ClientError => e
272
+ raise e if e.message !~ /forbidden: /
273
+ end
270
274
 
271
275
  elsif args[:flags] and args[:flags]['display_name']
272
276
 
@@ -119,6 +119,9 @@ module example.com/cloudfunction
119
119
  # Called automatically by {MU::Deploy#createResources}
120
120
  def groom
121
121
  desc = {}
122
+
123
+ func_obj = buildDesc
124
+
122
125
  labels = Hash[@tags.keys.map { |k|
123
126
  [k.downcase, @tags[k].downcase.gsub(/[^-_a-z0-9]/, '-')] }
124
127
  ]
@@ -140,6 +143,10 @@ module example.com/cloudfunction
140
143
  if cloud_desc.available_memory_mb != @config['memory']
141
144
  need_update = true
142
145
  end
146
+ if cloud_desc.service_account_email != func_obj.service_account_email
147
+ need_update = true
148
+ end
149
+
143
150
  if @config['environment_variable']
144
151
  @config['environment_variable'].each { |var|
145
152
  if !cloud_desc.environment_variables or
@@ -161,7 +168,17 @@ module example.com/cloudfunction
161
168
  File.read("#{dir}/current.zip")
162
169
  }
163
170
 
164
- new = if @config['code']['zip_file']
171
+ tempfile = nil
172
+ new = if @config['code']['zip_file'] or @config['code']['path']
173
+ if @config['code']['path']
174
+ tempfile = Tempfile.new(["function", ".zip"])
175
+ MU.log "#{@mu_name} using code at #{@config['code']['path']}"
176
+ MU::Master.zipDir(@config['code']['path'], tempfile.path)
177
+ @config['code']['zip_file'] = tempfile.path
178
+ else
179
+ MU.log "#{@mu_name} using code packaged at #{@config['code']['zip_file']}"
180
+ end
181
+ # @code_sha256 = Base64.encode64(Digest::SHA256.digest(zip)).chomp
165
182
  File.read(@config['code']['zip_file'])
166
183
  elsif @config['code']['gs_url']
167
184
  @config['code']['gs_url'].match(/^gs:\/\/([^\/]+)\/(.*)/)
@@ -172,25 +189,31 @@ module example.com/cloudfunction
172
189
  File.read(dir+"/new.zip")
173
190
  }
174
191
  end
192
+
175
193
  if @config['code']['gs_url'] and
176
194
  (@config['code']['gs_url'] != cloud_desc.source_archive_url or
177
195
  current != new)
178
196
  need_update = true
179
- elsif @config['code']['zip_file'] and current != new
197
+ elsif (@config['code']['zip_file'] or @config['code']['path']) and current != new
180
198
  need_update = true
181
- desc[:source_archive_url] = MU::Cloud::Google::Function.uploadPackage(@config['code']['zip_file'], @mu_name+"-cloudfunction.zip", credentials: @credentials)
199
+ end
200
+
201
+ if @config['vpc_connector']
202
+ if cloud_desc.vpc_connector != @config['vpc_connector'] or
203
+ cloud_desc.vpc_connector_egress_settings != (@config['vpc_connector_allow_all_egress'] ? "ALL_TRAFFIC" : "PRIVATE_RANGES_ONLY")
204
+ need_update = true
205
+ end
182
206
  end
183
207
 
184
208
  if need_update
185
- func_obj = buildDesc
186
- MU.log "Updating Cloud Function #{@mu_name}", MU::NOTICE, details: func_obj
209
+ MU.log "Updating Cloud Function #{@cloud_id}", MU::NOTICE, details: func_obj
187
210
  begin
188
- # MU::Cloud::Google.function(credentials: @credentials).patch_project_location_function(
189
- # @cloud_id,
190
- # func_obj
191
- # )
192
- rescue ::Google::Apis::ClientError
193
- MU.log "Error updating Cloud Function #{@mu_name}.", MU::ERR
211
+ MU::Cloud::Google.function(credentials: @credentials).patch_project_location_function(
212
+ @cloud_id,
213
+ func_obj
214
+ )
215
+ rescue ::Google::Apis::ClientError => e
216
+ MU.log "Error updating Cloud Function #{@mu_name}.", MU::ERR, e.message
194
217
  if desc[:source_archive_url]
195
218
  main_file = nil
196
219
  HELLO_WORLDS.each_pair { |runtime, code|
@@ -207,6 +230,11 @@ module example.com/cloudfunction
207
230
  # service_account_email: sa.kitten.cloud_desc.email,
208
231
  # labels: labels,
209
232
 
233
+ if tempfile
234
+ tempfile.close
235
+ tempfile.unlink
236
+ end
237
+
210
238
  end
211
239
 
212
240
  # Return the metadata for this project's configuration
@@ -354,6 +382,7 @@ module example.com/cloudfunction
354
382
  def self.schema(config)
355
383
  toplevel_required = ["runtime"]
356
384
  schema = {
385
+ "roles" => MU::Cloud.resourceClass("Google", "User").schema(config)[1]["roles"],
357
386
  "triggers" => {
358
387
  "type" => "array",
359
388
  "items" => {
@@ -448,6 +477,7 @@ module example.com/cloudfunction
448
477
  content_type: "application/zip",
449
478
  name: filename
450
479
  )
480
+
451
481
  MU::Cloud::Google.storage(credentials: credentials).insert_object(
452
482
  bucket,
453
483
  obj_obj,
@@ -487,7 +517,7 @@ module example.com/cloudfunction
487
517
  end
488
518
  # XXX list_project_locations
489
519
 
490
- if !function['code'] or (!function['code']['zip_file'] and !function['code']['gs_url'])
520
+ if !function['code'] or (!function['code']['zip_file'] and !function['code']['gs_url'] and !function['code']['path'])
491
521
  MU.log "Must specify a code source in Cloud Function #{function['name']}", MU::ERR
492
522
  ok = false
493
523
  elsif function['code']['zip_file']
@@ -557,22 +587,14 @@ module example.com/cloudfunction
557
587
 
558
588
  location = "projects/"+@config['project']+"/locations/"+@config['region']
559
589
  sa = nil
560
- retries = 0
561
- begin
562
- sa_ref = MU::Config::Ref.get(@config['service_account'])
563
- sa = @deploy.findLitterMate(name: sa_ref.name, type: "users")
564
- if !sa or !sa.cloud_desc
565
- sleep 10
566
- end
567
- rescue ::Google::Apis::ClientError => e
568
- if e.message.match(/notFound:/)
569
- sleep 10
570
- retries += 1
571
- retry
572
- end
573
- end while !sa or !sa.cloud_desc and retries < 5
590
+ need_sa = Proc.new {
591
+ !sa or !sa.kitten or !sa.kitten.cloud_desc
592
+ }
593
+ MU.retrier(loop_if: need_sa, wait: 10, max: 6) { |retries, _wait|
594
+ sa = MU::Config::Ref.get(@config['service_account'])
595
+ }
574
596
 
575
- if !sa or !sa.cloud_desc
597
+ if need_sa.call()
576
598
  raise MuError, "Failed to get service account cloud id from #{@config['service_account'].to_s}"
577
599
  end
578
600
 
@@ -583,7 +605,7 @@ module example.com/cloudfunction
583
605
  # entry_point: "hello_world",
584
606
  entry_point: @config['handler'],
585
607
  description: @deploy.deploy_id,
586
- service_account_email: sa.cloud_desc.email,
608
+ service_account_email: sa.kitten.cloud_desc.email,
587
609
  labels: labels,
588
610
  available_memory_mb: @config['memory']
589
611
  }
@@ -596,7 +618,6 @@ module example.com/cloudfunction
596
618
  if @config['vpc_connector']
597
619
  desc[:vpc_connector] = @config['vpc_connector']
598
620
  desc[:vpc_connector_egress_settings] = @config['vpc_connector_allow_all_egress'] ? "ALL_TRAFFIC" : "PRIVATE_RANGES_ONLY"
599
- pp desc
600
621
  elsif @vpc
601
622
  desc[:network] = @vpc.url.sub(/^.*?\/projects\//, 'projects/')
602
623
  end
@@ -627,8 +648,22 @@ module example.com/cloudfunction
627
648
  # }
628
649
  if @config['code']['gs_url']
629
650
  desc[:source_archive_url] = @config['code']['gs_url']
630
- elsif @config['code']['zip_file']
651
+ elsif @config['code']['zip_file'] or @config['code']['path']
652
+ tempfile = nil
653
+ if @config['code']['path']
654
+ tempfile = Tempfile.new(["function", ".zip"])
655
+ MU.log "#{@mu_name} using code at #{@config['code']['path']}"
656
+ MU::Master.zipDir(@config['code']['path'], tempfile.path)
657
+ @config['code']['zip_file'] = tempfile.path
658
+ else
659
+ MU.log "#{@mu_name} using code packaged at #{@config['code']['zip_file']}"
660
+ end
631
661
  desc[:source_archive_url] = MU::Cloud::Google::Function.uploadPackage(@config['code']['zip_file'], @mu_name+"-cloudfunction.zip", credentials: @credentials)
662
+
663
+ if tempfile
664
+ tempfile.close
665
+ tempfile.unlink
666
+ end
632
667
  end
633
668
 
634
669
  # Dir.mktmpdir(@mu_name) { |dir|
@@ -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
@@ -745,6 +745,7 @@ module MU
745
745
  end
746
746
 
747
747
  entity_types.each_pair { |entity_type, entities|
748
+ next if entity_type == "deleted"
748
749
  mu_entitytype = (entity_type == "serviceAccount" ? "user" : entity_type)+"s"
749
750
  entities.each { |entity|
750
751
  next if entity.nil?
@@ -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.3.0
4
+ version: 3.5.1
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-09-22 00:00:00.000000000 Z
14
+ date: 2021-02-25 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: addressable
@@ -28,47 +28,47 @@ dependencies:
28
28
  - !ruby/object:Gem::Version
29
29
  version: '2.5'
30
30
  - !ruby/object:Gem::Dependency
31
- name: aws-sdk-core
31
+ name: aws-sdk
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - "<"
34
+ - - "~>"
35
35
  - !ruby/object:Gem::Version
36
- version: '3'
36
+ version: '3.0'
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - "<"
41
+ - - "~>"
42
42
  - !ruby/object:Gem::Version
43
- version: '3'
43
+ version: '3.0'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: azure_sdk
46
46
  requirement: !ruby/object:Gem::Requirement
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
@@ -841,6 +846,7 @@ files:
841
846
  - cookbooks/mu-tools/templates/amazon/sshd_config.erb
842
847
  - cookbooks/mu-tools/templates/centos-6/sshd_config.erb
843
848
  - cookbooks/mu-tools/templates/centos-7/sshd_config.erb
849
+ - cookbooks/mu-tools/templates/centos-8/sshd_config.erb
844
850
  - cookbooks/mu-tools/templates/default/0-mu-log-client.conf.erb
845
851
  - cookbooks/mu-tools/templates/default/conf.maldet.erb
846
852
  - cookbooks/mu-tools/templates/default/etc_hosts.erb
@@ -907,34 +913,44 @@ files:
907
913
  - environments/dev.json
908
914
  - environments/development.json
909
915
  - environments/prod.json
916
+ - extras/Gemfile.lock.bootstrap
910
917
  - extras/README.md
911
918
  - extras/admin-role-binding.yaml
912
919
  - extras/admin-user.yaml
913
920
  - extras/alpha.png
914
921
  - extras/aws-auth-cm.yaml.erb
915
922
  - extras/beta.png
923
+ - extras/bucketstubs/error.html
924
+ - extras/bucketstubs/index.html
916
925
  - extras/clean-stock-amis
917
926
  - extras/generate-stock-images
918
927
  - extras/git-fix-permissions-hook
928
+ - extras/git_rpm/build.sh
929
+ - extras/git_rpm/mugit.spec
919
930
  - extras/gitlab-eks-helper.sh.erb
920
931
  - extras/image-generators/AWS/centos6.yaml
921
932
  - extras/image-generators/AWS/centos7-govcloud.yaml
922
933
  - extras/image-generators/AWS/centos7.yaml
923
- - extras/image-generators/AWS/rhel7.yaml
924
- - extras/image-generators/AWS/win2k12.yaml
934
+ - extras/image-generators/AWS/rhel71.yaml
935
+ - extras/image-generators/AWS/win2k12r2.yaml
925
936
  - extras/image-generators/AWS/win2k16.yaml
926
937
  - extras/image-generators/AWS/win2k19.yaml
927
938
  - extras/image-generators/Google/centos6.yaml
928
939
  - extras/image-generators/Google/centos7.yaml
929
940
  - extras/image-generators/README.md
941
+ - extras/image-generators/VMWare/centos8.yaml
930
942
  - extras/lambda_waf_domain_blacklist.py
931
943
  - extras/list-stock-amis
944
+ - extras/openssl_rpm/build.sh
945
+ - extras/openssl_rpm/mussl.spec
932
946
  - extras/platform_berksfile_base
933
947
  - extras/python_rpm/build.sh
934
948
  - extras/python_rpm/muthon.spec
935
949
  - extras/release.png
936
950
  - extras/ruby_rpm/build.sh
937
951
  - extras/ruby_rpm/muby.spec
952
+ - extras/sqlite_rpm/build.sh
953
+ - extras/sqlite_rpm/muqlite.spec
938
954
  - extras/vault_tools/README.md
939
955
  - extras/vault_tools/export_vaults.sh
940
956
  - extras/vault_tools/recreate_vaults.sh
@@ -1114,6 +1130,7 @@ files:
1114
1130
  - modules/tests/auto_scaling.inc
1115
1131
  - modules/tests/aws-iam.yaml
1116
1132
  - modules/tests/aws-jobs-functions.yaml
1133
+ - modules/tests/aws-servers-with-handrolled-iam.yaml
1117
1134
  - modules/tests/aws-sgs.yaml
1118
1135
  - modules/tests/bucket.yml
1119
1136
  - modules/tests/centos6.yaml