cloud-mu 3.1.5 → 3.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Dockerfile +5 -1
- data/ansible/roles/mu-windows/files/LaunchConfig.json +9 -0
- data/ansible/roles/mu-windows/files/config.xml +76 -0
- data/ansible/roles/mu-windows/tasks/main.yml +16 -0
- data/bin/mu-adopt +2 -1
- data/bin/mu-configure +16 -0
- data/bin/mu-node-manage +15 -16
- data/cloud-mu.gemspec +2 -2
- data/cookbooks/mu-activedirectory/resources/domain.rb +4 -4
- data/cookbooks/mu-activedirectory/resources/domain_controller.rb +4 -4
- data/cookbooks/mu-tools/recipes/eks.rb +2 -2
- data/cookbooks/mu-tools/recipes/windows-client.rb +25 -22
- data/extras/clean-stock-amis +25 -19
- data/extras/image-generators/AWS/win2k12.yaml +2 -0
- data/extras/image-generators/AWS/win2k16.yaml +2 -0
- data/extras/image-generators/AWS/win2k19.yaml +2 -0
- data/modules/mommacat.ru +1 -1
- data/modules/mu.rb +6 -5
- data/modules/mu/adoption.rb +19 -4
- data/modules/mu/cleanup.rb +181 -293
- data/modules/mu/cloud.rb +58 -17
- data/modules/mu/clouds/aws.rb +36 -1
- data/modules/mu/clouds/aws/container_cluster.rb +30 -21
- data/modules/mu/clouds/aws/role.rb +1 -1
- data/modules/mu/clouds/aws/vpc.rb +5 -1
- data/modules/mu/clouds/azure.rb +10 -0
- data/modules/mu/clouds/cloudformation.rb +10 -0
- data/modules/mu/clouds/google.rb +18 -4
- data/modules/mu/clouds/google/bucket.rb +2 -2
- data/modules/mu/clouds/google/container_cluster.rb +10 -7
- data/modules/mu/clouds/google/database.rb +3 -3
- data/modules/mu/clouds/google/firewall_rule.rb +3 -3
- data/modules/mu/clouds/google/function.rb +3 -3
- data/modules/mu/clouds/google/loadbalancer.rb +4 -4
- data/modules/mu/clouds/google/role.rb +18 -9
- data/modules/mu/clouds/google/server.rb +16 -14
- data/modules/mu/clouds/google/server_pool.rb +4 -4
- data/modules/mu/clouds/google/user.rb +2 -2
- data/modules/mu/clouds/google/vpc.rb +9 -13
- data/modules/mu/config.rb +1 -1
- data/modules/mu/config/container_cluster.rb +5 -0
- data/modules/mu/config/doc_helpers.rb +1 -1
- data/modules/mu/config/ref.rb +12 -6
- data/modules/mu/config/schema_helpers.rb +8 -3
- data/modules/mu/config/server.rb +7 -0
- data/modules/mu/config/tail.rb +1 -0
- data/modules/mu/config/vpc.rb +15 -7
- data/modules/mu/config/vpc.yml +0 -1
- data/modules/mu/defaults/AWS.yaml +48 -48
- data/modules/mu/deploy.rb +1 -1
- data/modules/mu/groomer.rb +1 -1
- data/modules/mu/groomers/ansible.rb +69 -4
- data/modules/mu/groomers/chef.rb +48 -4
- data/modules/mu/master.rb +75 -3
- data/modules/mu/mommacat.rb +104 -855
- data/modules/mu/mommacat/naming.rb +28 -0
- data/modules/mu/mommacat/search.rb +463 -0
- data/modules/mu/mommacat/storage.rb +185 -183
- data/modules/tests/super_simple_bok.yml +1 -3
- metadata +8 -5
@@ -332,32 +332,17 @@ module MU
|
|
332
332
|
Dir.mkdir(deploy_dir, 0700)
|
333
333
|
end
|
334
334
|
|
335
|
-
if !origin.nil?
|
336
|
-
|
337
|
-
|
338
|
-
o_file.close
|
339
|
-
end
|
340
|
-
|
341
|
-
if !@private_key.nil?
|
342
|
-
privkey = File.new("#{deploy_dir}/private_key", File::CREAT|File::TRUNC|File::RDWR, 0600)
|
343
|
-
privkey.puts @private_key
|
344
|
-
privkey.close
|
345
|
-
end
|
346
|
-
|
347
|
-
if !@public_key.nil?
|
348
|
-
pubkey = File.new("#{deploy_dir}/public_key", File::CREAT|File::TRUNC|File::RDWR, 0600)
|
349
|
-
pubkey.puts @public_key
|
350
|
-
pubkey.close
|
351
|
-
end
|
335
|
+
writeFile("origin.json", JSON.pretty_generate(origin)) if !origin.nil?
|
336
|
+
writeFile("private_key", @private_key) if !@private_key.nil?
|
337
|
+
writeFile("public_key", @public_key) if !@public_key.nil?
|
352
338
|
|
353
339
|
if !@deployment.nil? and @deployment.size > 0
|
354
340
|
@deployment['handle'] = MU.handle if @deployment['handle'].nil? and !MU.handle.nil?
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
@deployment['ssh_public_key'] ||= @ssh_public_key if @ssh_public_key
|
341
|
+
[:public_key, :timestamp, :seed, :appname, :handle, :ssh_public_key].each { |var|
|
342
|
+
value = instance_variable_get(("@"+var.to_s).to_sym)
|
343
|
+
@deployment[var.to_s] = value if value
|
344
|
+
}
|
345
|
+
|
361
346
|
begin
|
362
347
|
# XXX doing this to trigger JSON errors before stomping the stored
|
363
348
|
# file...
|
@@ -380,36 +365,15 @@ module MU
|
|
380
365
|
end
|
381
366
|
|
382
367
|
if !@original_config.nil? and @original_config.is_a?(Hash)
|
383
|
-
|
384
|
-
config.puts JSON.pretty_generate(MU::Config.manxify(@original_config))
|
385
|
-
config.close
|
368
|
+
writeFile("basket_of_kittens.json", JSON.pretty_generate(MU::Config.manxify(@original_config)))
|
386
369
|
end
|
387
370
|
|
388
|
-
if !@ssh_private_key.nil?
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
key = File.new("#{deploy_dir}/node_ssh.pub", File::CREAT|File::TRUNC|File::RDWR, 0600)
|
395
|
-
key.puts @ssh_public_key
|
396
|
-
key.close
|
397
|
-
end
|
398
|
-
if !@ssh_key_name.nil?
|
399
|
-
key = File.new("#{deploy_dir}/ssh_key_name", File::CREAT|File::TRUNC|File::RDWR, 0600)
|
400
|
-
key.puts @ssh_key_name
|
401
|
-
key.close
|
402
|
-
end
|
403
|
-
if !@environment.nil?
|
404
|
-
env = File.new("#{deploy_dir}/environment_name", File::CREAT|File::TRUNC|File::RDWR, 0600)
|
405
|
-
env.puts @environment
|
406
|
-
env.close
|
407
|
-
end
|
408
|
-
if !@deploy_secret.nil?
|
409
|
-
secret = File.new("#{deploy_dir}/deploy_secret", File::CREAT|File::TRUNC|File::RDWR, 0600)
|
410
|
-
secret.print @deploy_secret
|
411
|
-
secret.close
|
412
|
-
end
|
371
|
+
writeFile("node_ssh.key", @ssh_private_key) if !@ssh_private_key.nil?
|
372
|
+
writeFile("node_ssh.pub", @ssh_public_key) if !@ssh_public_key.nil?
|
373
|
+
writeFile("ssh_key_name", @ssh_key_name) if !@ssh_key_name.nil?
|
374
|
+
writeFile("environment_name", @environment) if !@environment.nil?
|
375
|
+
writeFile("deploy_secret", @deploy_secret) if !@deploy_secret.nil?
|
376
|
+
|
413
377
|
if !@secrets.nil?
|
414
378
|
secretdir = "#{deploy_dir}/secrets"
|
415
379
|
if !Dir.exist?(secretdir)
|
@@ -418,9 +382,7 @@ module MU
|
|
418
382
|
end
|
419
383
|
@secrets.each_pair { |type, servers|
|
420
384
|
servers.each_pair { |server, svr_secret|
|
421
|
-
|
422
|
-
key.puts svr_secret
|
423
|
-
key.close
|
385
|
+
writeFile("secrets/#{type}.#{server}", svr_secret)
|
424
386
|
}
|
425
387
|
}
|
426
388
|
end
|
@@ -430,146 +392,64 @@ module MU
|
|
430
392
|
syncLitter(@deployment['servers'].keys, triggering_node: triggering_node, save_only: true) if @deployment.has_key?("servers")
|
431
393
|
end
|
432
394
|
|
433
|
-
#
|
434
|
-
#
|
435
|
-
#
|
436
|
-
|
437
|
-
# @param type [String]: The type of resource, e.g. "vpc" or "server."
|
438
|
-
# @param name [String]: The Mu resource class, typically the name field of a Basket of Kittens resource declaration.
|
439
|
-
# @param mu_name [String]: The fully-expanded Mu resource name, e.g. MGMT-PROD-2015040115-FR-ADMGMT2
|
440
|
-
# @param deploy_id [String]: The deployment to search. Will search all deployments if not specified.
|
441
|
-
# @return [Hash,Array<Hash>]
|
442
|
-
def self.getResourceMetadata(type, name: nil, deploy_id: nil, use_cache: true, mu_name: nil)
|
443
|
-
if type.nil?
|
444
|
-
raise MuError, "Can't call getResourceMetadata without a type argument"
|
445
|
-
end
|
446
|
-
_shortclass, _cfg_name, type, _classname = MU::Cloud.getResourceNames(type)
|
447
|
-
|
448
|
-
# first, check our in-memory deploys, which may or may not have been
|
449
|
-
# written to disk yet.
|
450
|
-
littercache = nil
|
451
|
-
begin
|
452
|
-
@@litter_semaphore.synchronize {
|
453
|
-
littercache = @@litters.dup
|
454
|
-
}
|
455
|
-
rescue ThreadError => e
|
456
|
-
# already locked by a parent caller and this is a read op, so this is ok
|
457
|
-
raise e if !e.message.match(/recursive locking/)
|
458
|
-
littercache = @@litters.dup
|
459
|
-
end
|
460
|
-
littercache.each_pair { |deploy, momma|
|
461
|
-
@@deploy_struct_semaphore.synchronize {
|
462
|
-
@deploy_cache[deploy] = {
|
463
|
-
"mtime" => Time.now,
|
464
|
-
"data" => momma.deployment
|
465
|
-
}
|
466
|
-
}
|
467
|
-
}
|
468
|
-
|
395
|
+
# Read all of our +deployment.json+ files in and stick them in a hash. Used
|
396
|
+
# by search routines that just need to skim this data without loading
|
397
|
+
# entire {MU::MommaCat} objects.
|
398
|
+
def self.cacheDeployMetadata(deploy_id = nil, use_cache: false)
|
469
399
|
deploy_root = File.expand_path(MU.dataDir+"/deployments")
|
470
400
|
MU::MommaCat.deploy_struct_semaphore.synchronize {
|
471
|
-
|
472
|
-
|
473
|
-
this_deploy_dir = deploy_root+"/"+deploy
|
474
|
-
next if deploy == "." or deploy == ".." or !Dir.exist?(this_deploy_dir)
|
475
|
-
next if deploy_id and deploy_id != deploy
|
476
|
-
|
477
|
-
if !File.size?(this_deploy_dir+"/deployment.json")
|
478
|
-
MU.log "#{this_deploy_dir}/deployment.json doesn't exist, skipping when loading cache", MU::DEBUG
|
479
|
-
next
|
480
|
-
end
|
481
|
-
if @deploy_cache[deploy].nil? or !use_cache
|
482
|
-
@deploy_cache[deploy] = Hash.new
|
483
|
-
elsif @deploy_cache[deploy]['mtime'] == File.mtime("#{this_deploy_dir}/deployment.json")
|
484
|
-
MU.log "Using cached copy of deploy #{deploy} from #{@deploy_cache[deploy]['mtime']}", MU::DEBUG
|
401
|
+
@@deploy_cache ||= {}
|
402
|
+
return if !Dir.exist?(deploy_root)
|
485
403
|
|
486
|
-
|
487
|
-
|
404
|
+
Dir.entries(deploy_root).each { |deploy|
|
405
|
+
this_deploy_dir = deploy_root+"/"+deploy
|
406
|
+
this_deploy_file = this_deploy_dir+"/deployment.json"
|
488
407
|
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
408
|
+
if deploy == "." or deploy == ".." or !Dir.exist?(this_deploy_dir) or
|
409
|
+
(deploy_id and deploy_id != deploy) or
|
410
|
+
!File.size?(this_deploy_file) or
|
411
|
+
(use_cache and @@deploy_cache[deploy] and @@deploy_cache[deploy]['mtime'] == File.mtime(this_deploy_file))
|
412
|
+
next
|
413
|
+
end
|
494
414
|
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
data['#MU_NODE_CLASS'] = node_class
|
520
|
-
if !data.has_key?("cloud") # XXX kludge until old metadata gets fixed
|
521
|
-
data["cloud"] = MU::Config.defaultCloud
|
522
|
-
end
|
523
|
-
data['#MU_NAME'] = nodename
|
524
|
-
if !mu_name.nil? and nodename == mu_name
|
525
|
-
return {deploy => [data]} if deploy_id && deploy == deploy_id
|
526
|
-
end
|
527
|
-
}
|
415
|
+
@@deploy_cache[deploy] ||= {}
|
416
|
+
|
417
|
+
MU.log "Caching deploy #{deploy}", MU::DEBUG
|
418
|
+
lock = File.open(this_deploy_file, File::RDONLY)
|
419
|
+
lock.flock(File::LOCK_EX)
|
420
|
+
@@deploy_cache[deploy]['mtime'] = File.mtime(this_deploy_file)
|
421
|
+
|
422
|
+
begin
|
423
|
+
@@deploy_cache[deploy]['data'] = JSON.parse(File.read(this_deploy_file))
|
424
|
+
next if @@deploy_cache[deploy]['data'].nil?
|
425
|
+
# Populate some generable entries that should be in the deploy
|
426
|
+
# data. Also, bounce out if we realize we've found exactly what
|
427
|
+
# we needed already.
|
428
|
+
MU::Cloud.resource_types.values.each { |attrs|
|
429
|
+
|
430
|
+
next if @@deploy_cache[deploy]['data'][attrs[:cfg_plural]].nil?
|
431
|
+
if attrs[:has_multiples]
|
432
|
+
@@deploy_cache[deploy]['data'][attrs[:cfg_plural]].each_pair { |node_class, nodes|
|
433
|
+
next if nodes.nil? or !nodes.is_a?(Hash)
|
434
|
+
nodes.each_pair { |nodename, data|
|
435
|
+
next if !data.is_a?(Hash)
|
436
|
+
data['#MU_NODE_CLASS'] ||= node_class
|
437
|
+
data['#MU_NAME'] ||= nodename
|
438
|
+
data["cloud"] ||= MU::Config.defaultCloud
|
528
439
|
}
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
440
|
+
}
|
441
|
+
end
|
442
|
+
}
|
443
|
+
rescue JSON::ParserError
|
444
|
+
raise MuError, "JSON parse failed on #{this_deploy_file}\n\n"+File.read(this_deploy_file)
|
445
|
+
ensure
|
534
446
|
lock.flock(File::LOCK_UN)
|
535
447
|
lock.close
|
536
|
-
}
|
537
|
-
end
|
538
|
-
}
|
539
|
-
|
540
|
-
matches = {}
|
541
|
-
|
542
|
-
if deploy_id.nil?
|
543
|
-
@deploy_cache.each_key { |deploy|
|
544
|
-
next if !@deploy_cache[deploy].has_key?('data')
|
545
|
-
next if !@deploy_cache[deploy]['data'].has_key?(type)
|
546
|
-
if !name.nil?
|
547
|
-
next if @deploy_cache[deploy]['data'][type][name].nil?
|
548
|
-
matches[deploy] ||= []
|
549
|
-
matches[deploy] << @deploy_cache[deploy]['data'][type][name].dup
|
550
|
-
else
|
551
|
-
matches[deploy] ||= []
|
552
|
-
matches[deploy].concat(@deploy_cache[deploy]['data'][type].values)
|
553
448
|
end
|
554
449
|
}
|
555
|
-
|
556
|
-
elsif !@deploy_cache[deploy_id].nil?
|
557
|
-
if !@deploy_cache[deploy_id]['data'].nil? and
|
558
|
-
!@deploy_cache[deploy_id]['data'][type].nil?
|
559
|
-
if !name.nil?
|
560
|
-
if !@deploy_cache[deploy_id]['data'][type][name].nil?
|
561
|
-
matches[deploy_id] ||= []
|
562
|
-
matches[deploy_id] << @deploy_cache[deploy_id]['data'][type][name].dup
|
563
|
-
else
|
564
|
-
return matches # nothing, actually
|
565
|
-
end
|
566
|
-
else
|
567
|
-
matches[deploy_id] = @deploy_cache[deploy_id]['data'][type].values
|
568
|
-
end
|
569
|
-
end
|
570
|
-
end
|
450
|
+
}
|
571
451
|
|
572
|
-
|
452
|
+
@@deploy_cache
|
573
453
|
end
|
574
454
|
|
575
455
|
# Get the deploy directory
|
@@ -604,6 +484,128 @@ module MU
|
|
604
484
|
end
|
605
485
|
|
606
486
|
private
|
487
|
+
|
488
|
+
def writeFile(filename, contents)
|
489
|
+
file = File.new("#{deploy_dir}/#{filename}", File::CREAT|File::TRUNC|File::RDWR, 0600)
|
490
|
+
file.puts contents
|
491
|
+
file.close
|
492
|
+
end
|
493
|
+
|
494
|
+
# Helper for +initialize+
|
495
|
+
def setDeploySecret
|
496
|
+
credsets = {}
|
497
|
+
MU::Cloud.resource_types.values.each { |attrs|
|
498
|
+
if !@original_config[attrs[:cfg_plural]].nil? and @original_config[attrs[:cfg_plural]].size > 0
|
499
|
+
@original_config[attrs[:cfg_plural]].each { |resource|
|
500
|
+
|
501
|
+
credsets[resource['cloud']] ||= []
|
502
|
+
credsets[resource['cloud']] << resource['credentials']
|
503
|
+
@clouds[resource['cloud']] = 0 if !@clouds.has_key?(resource['cloud'])
|
504
|
+
@clouds[resource['cloud']] = @clouds[resource['cloud']] + 1
|
505
|
+
|
506
|
+
}
|
507
|
+
end
|
508
|
+
}
|
509
|
+
|
510
|
+
MU.log "Creating deploy secret for #{MU.deploy_id}"
|
511
|
+
@deploy_secret = Password.random(256)
|
512
|
+
if !@original_config['scrub_mu_isms'] and !@no_artifacts
|
513
|
+
credsets.each_pair { |cloud, creds|
|
514
|
+
creds.uniq!
|
515
|
+
cloudclass = Object.const_get("MU").const_get("Cloud").const_get(cloud)
|
516
|
+
creds.each { |credentials|
|
517
|
+
cloudclass.writeDeploySecret(@deploy_id, @deploy_secret, credentials: credentials)
|
518
|
+
}
|
519
|
+
}
|
520
|
+
end
|
521
|
+
end
|
522
|
+
|
523
|
+
def loadObjects(delay_descriptor_load)
|
524
|
+
MU::Cloud.resource_types.each_pair { |res_type, attrs|
|
525
|
+
type = attrs[:cfg_plural]
|
526
|
+
next if !@deployment.has_key?(type)
|
527
|
+
|
528
|
+
@deployment[type].each_pair { |res_name, data|
|
529
|
+
orig_cfg = nil
|
530
|
+
if @original_config.has_key?(type)
|
531
|
+
@original_config[type].each { |resource|
|
532
|
+
if resource["name"] == res_name
|
533
|
+
orig_cfg = resource
|
534
|
+
break
|
535
|
+
end
|
536
|
+
}
|
537
|
+
end
|
538
|
+
|
539
|
+
# Some Server objects originated from ServerPools, get their
|
540
|
+
# configs from there
|
541
|
+
if type == "servers" and orig_cfg.nil? and
|
542
|
+
@original_config.has_key?("server_pools")
|
543
|
+
@original_config["server_pools"].each { |resource|
|
544
|
+
if resource["name"] == res_name
|
545
|
+
orig_cfg = resource
|
546
|
+
break
|
547
|
+
end
|
548
|
+
}
|
549
|
+
end
|
550
|
+
|
551
|
+
if orig_cfg.nil?
|
552
|
+
MU.log "Failed to locate original config for #{attrs[:cfg_name]} #{res_name} in #{@deploy_id}", MU::WARN if !["firewall_rules", "databases", "storage_pools", "cache_clusters", "alarms"].include?(type) # XXX shaddap
|
553
|
+
next
|
554
|
+
end
|
555
|
+
|
556
|
+
if orig_cfg['vpc'] and orig_cfg['vpc'].is_a?(Hash)
|
557
|
+
ref = if orig_cfg['vpc']['id'] and orig_cfg['vpc']['id'].is_a?(Hash)
|
558
|
+
orig_cfg['vpc']['id']['mommacat'] = self
|
559
|
+
MU::Config::Ref.get(orig_cfg['vpc']['id'])
|
560
|
+
else
|
561
|
+
orig_cfg['vpc']['mommacat'] = self
|
562
|
+
MU::Config::Ref.get(orig_cfg['vpc'])
|
563
|
+
end
|
564
|
+
orig_cfg['vpc'].delete('mommacat')
|
565
|
+
orig_cfg['vpc'] = ref if ref.kitten(shallow: true)
|
566
|
+
end
|
567
|
+
|
568
|
+
begin
|
569
|
+
# Load up MU::Cloud objects for all our kittens in this deploy
|
570
|
+
orig_cfg['environment'] = @environment # not always set in old deploys
|
571
|
+
if attrs[:has_multiples]
|
572
|
+
data.keys.each { |mu_name|
|
573
|
+
attrs[:interface].new(mommacat: self, kitten_cfg: orig_cfg, mu_name: mu_name, delay_descriptor_load: delay_descriptor_load)
|
574
|
+
}
|
575
|
+
else
|
576
|
+
# XXX hack for old deployments, this can go away some day
|
577
|
+
if data['mu_name'].nil?
|
578
|
+
raise MuError, "Unable to find or guess a Mu name for #{res_type}: #{res_name} in #{@deploy_id}"
|
579
|
+
end
|
580
|
+
attrs[:interface].new(mommacat: self, kitten_cfg: orig_cfg, mu_name: data['mu_name'], cloud_id: data['cloud_id'])
|
581
|
+
end
|
582
|
+
rescue StandardError => e
|
583
|
+
if e.class != MU::Cloud::MuCloudResourceNotImplemented
|
584
|
+
MU.log "Failed to load an existing resource of type '#{type}' in #{@deploy_id}: #{e.inspect}", MU::WARN, details: e.backtrace
|
585
|
+
end
|
586
|
+
end
|
587
|
+
}
|
588
|
+
}
|
589
|
+
end
|
590
|
+
|
591
|
+
# Helper for +initialize+
|
592
|
+
def initDeployDirectory
|
593
|
+
if !Dir.exist?(MU.dataDir+"/deployments")
|
594
|
+
MU.log "Creating #{MU.dataDir}/deployments", MU::DEBUG
|
595
|
+
Dir.mkdir(MU.dataDir+"/deployments", 0700)
|
596
|
+
end
|
597
|
+
path = File.expand_path(MU.dataDir+"/deployments")+"/"+@deploy_id
|
598
|
+
if !Dir.exist?(path)
|
599
|
+
MU.log "Creating #{path}", MU::DEBUG
|
600
|
+
Dir.mkdir(path, 0700)
|
601
|
+
end
|
602
|
+
|
603
|
+
@ssh_key_name, @ssh_private_key, @ssh_public_key = self.SSHKey
|
604
|
+
if !File.exist?(deploy_dir+"/private_key")
|
605
|
+
@private_key, @public_key = createDeployKey
|
606
|
+
end
|
607
|
+
|
608
|
+
end
|
607
609
|
|
608
610
|
###########################################################################
|
609
611
|
###########################################################################
|
@@ -4,7 +4,7 @@
|
|
4
4
|
appname: smoketest
|
5
5
|
parameters:
|
6
6
|
- name: complexity
|
7
|
-
default:
|
7
|
+
default: simple
|
8
8
|
- name: vpc_name
|
9
9
|
required: false
|
10
10
|
- name: instance_type
|
@@ -20,8 +20,6 @@ parameters:
|
|
20
20
|
- name: server_pools_name
|
21
21
|
default: superBoK_ServerPool
|
22
22
|
|
23
|
-
<% $complexity = 'complex' %>
|
24
|
-
|
25
23
|
vpcs:
|
26
24
|
-
|
27
25
|
<%= include("../mu/config/vpc.yml") %>
|
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.1.
|
4
|
+
version: 3.1.6
|
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-03-
|
14
|
+
date: 2020-03-20 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: addressable
|
@@ -444,12 +444,11 @@ executables:
|
|
444
444
|
- mu-self-update
|
445
445
|
- mu-ssh
|
446
446
|
- mu-upload-chef-artifacts
|
447
|
+
- mu-configure
|
447
448
|
- mu-aws-setup
|
448
449
|
- mu-gcp-setup
|
449
|
-
- mu-node-manage
|
450
|
-
- mu-adopt
|
451
|
-
- mu-configure
|
452
450
|
- mu-load-config.rb
|
451
|
+
- mu-node-manage
|
453
452
|
- mu-ansible-secret
|
454
453
|
- mu-momma-cat
|
455
454
|
- mu-azure-setup
|
@@ -458,6 +457,7 @@ executables:
|
|
458
457
|
- mu-cleanup
|
459
458
|
- mu-deploy
|
460
459
|
- mu-run-tests
|
460
|
+
- mu-adopt
|
461
461
|
extensions: []
|
462
462
|
extra_rdoc_files: []
|
463
463
|
files:
|
@@ -498,6 +498,8 @@ files:
|
|
498
498
|
- ansible/roles/mu-nat/vars/main.yml
|
499
499
|
- ansible/roles/mu-windows/README.md
|
500
500
|
- ansible/roles/mu-windows/defaults/main.yml
|
501
|
+
- ansible/roles/mu-windows/files/LaunchConfig.json
|
502
|
+
- ansible/roles/mu-windows/files/config.xml
|
501
503
|
- ansible/roles/mu-windows/handlers/main.yml
|
502
504
|
- ansible/roles/mu-windows/meta/main.yml
|
503
505
|
- ansible/roles/mu-windows/tasks/main.yml
|
@@ -1086,6 +1088,7 @@ files:
|
|
1086
1088
|
- modules/mu/mommacat.rb
|
1087
1089
|
- modules/mu/mommacat/daemon.rb
|
1088
1090
|
- modules/mu/mommacat/naming.rb
|
1091
|
+
- modules/mu/mommacat/search.rb
|
1089
1092
|
- modules/mu/mommacat/storage.rb
|
1090
1093
|
- modules/mu/monkey_patches/chef_knife_ssh.rb
|
1091
1094
|
- modules/tests/README.md
|