stack_master 2.13.2 → 2.13.4
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/lib/stack_master/aws_driver/cloud_formation.rb +1 -1
- data/lib/stack_master/aws_driver/s3.rb +5 -5
- data/lib/stack_master/change_set.rb +3 -3
- data/lib/stack_master/commands/init.rb +1 -1
- data/lib/stack_master/commands/resources.rb +1 -1
- data/lib/stack_master/config.rb +1 -1
- data/lib/stack_master/identity.rb +2 -2
- data/lib/stack_master/parameter_loader.rb +1 -1
- data/lib/stack_master/parameter_resolvers/acm_certificate.rb +2 -2
- data/lib/stack_master/parameter_resolvers/ami_finder.rb +3 -3
- data/lib/stack_master/parameter_resolvers/latest_container.rb +1 -1
- data/lib/stack_master/parameter_resolvers/parameter_store.rb +3 -3
- data/lib/stack_master/parameter_resolvers/stack_output.rb +1 -1
- data/lib/stack_master/role_assumer.rb +2 -2
- data/lib/stack_master/security_group_finder.rb +1 -1
- data/lib/stack_master/sns_topic_finder.rb +1 -1
- data/lib/stack_master/stack.rb +3 -3
- data/lib/stack_master/version.rb +1 -1
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 583b1be28160e2e7a7d483c6c98d4c04cd2a40d2af68aaac909d20d8a89d481e
|
4
|
+
data.tar.gz: 145c997f67b7ddc582f9662cdae40982de289290a844987864c1f51586f82666
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f64207bb7cffe0fa1eb57bec402f96516772d7ead47ffce6ad74439ab5372df9322aa2cb0c5970af35b1f6563940a32e116275408dd4743475c1e8256bfdc024
|
7
|
+
data.tar.gz: cb54cad90ae22381bc3f410f661abc878edf1abfa9b69cfb4c42e6d85ac4f562eca9d0cf9098b24b0e35e97d2022176949ade4ba609000cd2cbb239a786304d7
|
@@ -17,10 +17,10 @@ module StackMaster
|
|
17
17
|
|
18
18
|
s3 = new_s3_client(region: region)
|
19
19
|
|
20
|
-
current_objects = s3.list_objects(
|
20
|
+
current_objects = s3.list_objects({
|
21
21
|
prefix: prefix,
|
22
22
|
bucket: bucket
|
23
|
-
).map(&:contents).flatten.inject({}){|h,obj|
|
23
|
+
}).map(&:contents).flatten.inject({}){|h,obj|
|
24
24
|
h.merge(obj.key => obj)
|
25
25
|
}
|
26
26
|
|
@@ -38,12 +38,12 @@ module StackMaster
|
|
38
38
|
s3_uri = "s3://#{bucket}/#{object_key}"
|
39
39
|
StackMaster.stdout.print "- #{File.basename(path)} => #{s3_uri} "
|
40
40
|
|
41
|
-
s3.put_object(
|
41
|
+
s3.put_object({
|
42
42
|
bucket: bucket,
|
43
43
|
key: object_key,
|
44
44
|
body: body,
|
45
45
|
metadata: { md5: compiled_template_md5 }
|
46
|
-
)
|
46
|
+
})
|
47
47
|
StackMaster.stdout.puts "done."
|
48
48
|
end
|
49
49
|
end
|
@@ -61,7 +61,7 @@ module StackMaster
|
|
61
61
|
private
|
62
62
|
|
63
63
|
def new_s3_client(region: nil)
|
64
|
-
Aws::S3::Client.new(region: region || @region)
|
64
|
+
Aws::S3::Client.new({ region: region || @region })
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -25,12 +25,12 @@ module StackMaster
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.delete(id)
|
28
|
-
cf.delete_change_set(change_set_name: id)
|
28
|
+
cf.delete_change_set({ change_set_name: id })
|
29
29
|
end
|
30
30
|
|
31
31
|
def self.execute(id, stack_name)
|
32
|
-
cf.execute_change_set(change_set_name: id,
|
33
|
-
|
32
|
+
cf.execute_change_set({ change_set_name: id,
|
33
|
+
stack_name: stack_name })
|
34
34
|
end
|
35
35
|
|
36
36
|
def self.cf
|
@@ -29,7 +29,7 @@ module StackMaster
|
|
29
29
|
|
30
30
|
if !@options.overwrite
|
31
31
|
[@stack_master_filename, @stack_json_filename, @parameters_filename, @region_parameters_filename].each do |filename|
|
32
|
-
if File.
|
32
|
+
if File.exist?(filename)
|
33
33
|
StackMaster.stderr.puts("Aborting: #{filename} already exists. Use --overwrite to force overwriting file.")
|
34
34
|
return false
|
35
35
|
end
|
@@ -17,7 +17,7 @@ module StackMaster
|
|
17
17
|
private
|
18
18
|
|
19
19
|
def stack_resources
|
20
|
-
@stack_resources ||= cf.describe_stack_resources(stack_name: @stack_definition.stack_name).stack_resources
|
20
|
+
@stack_resources ||= cf.describe_stack_resources({ stack_name: @stack_definition.stack_name }).stack_resources
|
21
21
|
rescue Aws::CloudFormation::Errors::ValidationError
|
22
22
|
nil
|
23
23
|
end
|
data/lib/stack_master/config.rb
CHANGED
@@ -28,7 +28,7 @@ module StackMaster
|
|
28
28
|
|
29
29
|
dir = Dir.pwd
|
30
30
|
parent_dir = File.expand_path("..", Dir.pwd)
|
31
|
-
while parent_dir != dir && !File.
|
31
|
+
while parent_dir != dir && !File.exist?(File.join(dir, config_file))
|
32
32
|
dir = parent_dir
|
33
33
|
parent_dir = File.expand_path("..", dir)
|
34
34
|
end
|
@@ -31,11 +31,11 @@ module StackMaster
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def sts
|
34
|
-
@sts ||= Aws::STS::Client.new(region: region)
|
34
|
+
@sts ||= Aws::STS::Client.new({ region: region })
|
35
35
|
end
|
36
36
|
|
37
37
|
def iam
|
38
|
-
@iam ||= Aws::IAM::Client.new(region: region)
|
38
|
+
@iam ||= Aws::IAM::Client.new({ region: region })
|
39
39
|
end
|
40
40
|
|
41
41
|
def contains_account_id?(ids)
|
@@ -21,7 +21,7 @@ module StackMaster
|
|
21
21
|
private
|
22
22
|
|
23
23
|
def self.load_parameters(file_name)
|
24
|
-
file_exists = File.
|
24
|
+
file_exists = File.exist?(file_name)
|
25
25
|
StackMaster.debug file_exists ? " #{file_name} found" : " #{file_name} not found"
|
26
26
|
file_exists ? load_file(file_name) : {}
|
27
27
|
end
|
@@ -19,9 +19,9 @@ module StackMaster
|
|
19
19
|
def all_certs
|
20
20
|
certs = []
|
21
21
|
next_token = nil
|
22
|
-
client = Aws::ACM::Client.new(region: @stack_definition.region)
|
22
|
+
client = Aws::ACM::Client.new({ region: @stack_definition.region })
|
23
23
|
loop do
|
24
|
-
resp = client.list_certificates(certificate_statuses: ['ISSUED'], next_token: next_token)
|
24
|
+
resp = client.list_certificates({ certificate_statuses: ['ISSUED'], next_token: next_token })
|
25
25
|
certs << resp.certificate_summary_list
|
26
26
|
next_token = resp.next_token
|
27
27
|
break if next_token.nil?
|
@@ -19,7 +19,7 @@ module StackMaster
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def find_latest_ami(filters, owners = ['self'])
|
22
|
-
images = ec2.describe_images(owners: owners, filters: filters).images
|
22
|
+
images = ec2.describe_images({ owners: owners, filters: filters }).images
|
23
23
|
sorted_images = images.sort do |a, b|
|
24
24
|
Time.parse(a.creation_date) <=> Time.parse(b.creation_date)
|
25
25
|
end
|
@@ -29,8 +29,8 @@ module StackMaster
|
|
29
29
|
private
|
30
30
|
|
31
31
|
def ec2
|
32
|
-
@ec2 ||= Aws::EC2::Client.new(region: @region)
|
32
|
+
@ec2 ||= Aws::EC2::Client.new({ region: @region })
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
36
|
-
end
|
36
|
+
end
|
@@ -14,7 +14,7 @@ module StackMaster
|
|
14
14
|
end
|
15
15
|
|
16
16
|
@region = parameters['region'] || @stack_definition.region
|
17
|
-
ecr_client = Aws::ECR::Client.new(region: @region)
|
17
|
+
ecr_client = Aws::ECR::Client.new({ region: @region })
|
18
18
|
|
19
19
|
images = fetch_images(parameters['repository_name'], parameters['registry_id'], ecr_client)
|
20
20
|
|
@@ -11,11 +11,11 @@ module StackMaster
|
|
11
11
|
|
12
12
|
def resolve(value)
|
13
13
|
begin
|
14
|
-
ssm = Aws::SSM::Client.new(region: @stack_definition.region)
|
15
|
-
resp = ssm.get_parameter(
|
14
|
+
ssm = Aws::SSM::Client.new({ region: @stack_definition.region })
|
15
|
+
resp = ssm.get_parameter({
|
16
16
|
name: value,
|
17
17
|
with_decryption: true
|
18
|
-
)
|
18
|
+
})
|
19
19
|
rescue Aws::SSM::Errors::ParameterNotFound
|
20
20
|
raise ParameterNotFound, "Unable to find #{value} in Parameter Store"
|
21
21
|
end
|
@@ -53,7 +53,7 @@ module StackMaster
|
|
53
53
|
|
54
54
|
@stacks.fetch(stack_key) do
|
55
55
|
regional_cf = cf_for_region(unaliased_region)
|
56
|
-
cf_stack = regional_cf.describe_stacks(stack_name: stack_name).stacks.first
|
56
|
+
cf_stack = regional_cf.describe_stacks({ stack_name: stack_name }).stacks.first
|
57
57
|
@stacks[stack_key] = cf_stack
|
58
58
|
end
|
59
59
|
end
|
@@ -44,11 +44,11 @@ module StackMaster
|
|
44
44
|
def assume_role_credentials(account, role)
|
45
45
|
credentials_key = "#{account}:#{role}"
|
46
46
|
@credentials.fetch(credentials_key) do
|
47
|
-
@credentials[credentials_key] = Aws::AssumeRoleCredentials.new(
|
47
|
+
@credentials[credentials_key] = Aws::AssumeRoleCredentials.new({
|
48
48
|
region: StackMaster.cloud_formation_driver.region,
|
49
49
|
role_arn: "arn:aws:iam::#{account}:role/#{role}",
|
50
50
|
role_session_name: "stack-master-role-assumer"
|
51
|
-
)
|
51
|
+
})
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
data/lib/stack_master/stack.rb
CHANGED
@@ -29,15 +29,15 @@ module StackMaster
|
|
29
29
|
|
30
30
|
def self.find(region, stack_name)
|
31
31
|
cf = StackMaster.cloud_formation_driver
|
32
|
-
cf_stack = cf.describe_stacks(stack_name: stack_name).stacks.first
|
32
|
+
cf_stack = cf.describe_stacks({ stack_name: stack_name }).stacks.first
|
33
33
|
return unless cf_stack
|
34
34
|
parameters = cf_stack.parameters.inject({}) do |params_hash, param_struct|
|
35
35
|
params_hash[param_struct.parameter_key] = param_struct.parameter_value
|
36
36
|
params_hash
|
37
37
|
end
|
38
|
-
template_body ||= cf.get_template(stack_name: stack_name, template_stage: 'Original').template_body
|
38
|
+
template_body ||= cf.get_template({ stack_name: stack_name, template_stage: 'Original' }).template_body
|
39
39
|
template_format = TemplateUtils.identify_template_format(template_body)
|
40
|
-
stack_policy_body ||= cf.get_stack_policy(stack_name: stack_name).stack_policy_body
|
40
|
+
stack_policy_body ||= cf.get_stack_policy({ stack_name: stack_name }).stack_policy_body
|
41
41
|
outputs = cf_stack.outputs
|
42
42
|
|
43
43
|
new(region: region,
|
data/lib/stack_master/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack_master
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.13.
|
4
|
+
version: 2.13.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Hodgkiss
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-08-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -269,6 +269,20 @@ dependencies:
|
|
269
269
|
- - "~>"
|
270
270
|
- !ruby/object:Gem::Version
|
271
271
|
version: '1'
|
272
|
+
- !ruby/object:Gem::Dependency
|
273
|
+
name: sorted_set
|
274
|
+
requirement: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - ">="
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0'
|
279
|
+
type: :runtime
|
280
|
+
prerelease: false
|
281
|
+
version_requirements: !ruby/object:Gem::Requirement
|
282
|
+
requirements:
|
283
|
+
- - ">="
|
284
|
+
- !ruby/object:Gem::Version
|
285
|
+
version: '0'
|
272
286
|
- !ruby/object:Gem::Dependency
|
273
287
|
name: diffy
|
274
288
|
requirement: !ruby/object:Gem::Requirement
|
@@ -446,7 +460,7 @@ dependencies:
|
|
446
460
|
version: 0.6.7
|
447
461
|
- - "<"
|
448
462
|
- !ruby/object:Gem::Version
|
449
|
-
version: 0.
|
463
|
+
version: 0.9.0
|
450
464
|
type: :runtime
|
451
465
|
prerelease: false
|
452
466
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -456,7 +470,7 @@ dependencies:
|
|
456
470
|
version: 0.6.7
|
457
471
|
- - "<"
|
458
472
|
- !ruby/object:Gem::Version
|
459
|
-
version: 0.
|
473
|
+
version: 0.9.0
|
460
474
|
description: ''
|
461
475
|
email:
|
462
476
|
- steve@hodgkiss.me
|
@@ -563,8 +577,8 @@ licenses:
|
|
563
577
|
metadata:
|
564
578
|
bug_tracker_uri: https://github.com/envato/stack_master/issues
|
565
579
|
changelog_uri: https://github.com/envato/stack_master/blob/master/CHANGELOG.md
|
566
|
-
documentation_uri: https://www.rubydoc.info/gems/stack_master/2.13.
|
567
|
-
source_code_uri: https://github.com/envato/stack_master/tree/v2.13.
|
580
|
+
documentation_uri: https://www.rubydoc.info/gems/stack_master/2.13.4
|
581
|
+
source_code_uri: https://github.com/envato/stack_master/tree/v2.13.4
|
568
582
|
post_install_message:
|
569
583
|
rdoc_options: []
|
570
584
|
require_paths:
|
@@ -580,7 +594,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
580
594
|
- !ruby/object:Gem::Version
|
581
595
|
version: '0'
|
582
596
|
requirements: []
|
583
|
-
rubygems_version: 3.
|
597
|
+
rubygems_version: 3.1.6
|
584
598
|
signing_key:
|
585
599
|
specification_version: 4
|
586
600
|
summary: StackMaster is a sure-footed way of creating, updating and keeping track
|