stack_master 2.17.0 → 2.18.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.
- checksums.yaml +4 -4
- data/README.md +1 -6
- data/bin/stack_master +3 -5
- data/lib/stack_master/aws_driver/cloud_formation.rb +25 -23
- data/lib/stack_master/aws_driver/s3.rb +24 -17
- data/lib/stack_master/change_set.rb +11 -15
- data/lib/stack_master/cli.rb +53 -32
- data/lib/stack_master/command.rb +1 -5
- data/lib/stack_master/commands/apply.rb +39 -20
- data/lib/stack_master/commands/delete.rb +6 -7
- data/lib/stack_master/commands/drift.rb +11 -12
- data/lib/stack_master/commands/events.rb +4 -6
- data/lib/stack_master/commands/init.rb +21 -20
- data/lib/stack_master/commands/lint.rb +1 -1
- data/lib/stack_master/commands/list_stacks.rb +1 -1
- data/lib/stack_master/commands/nag.rb +0 -1
- data/lib/stack_master/commands/outputs.rb +1 -1
- data/lib/stack_master/commands/resources.rb +9 -1
- data/lib/stack_master/commands/status.rb +4 -4
- data/lib/stack_master/commands/terminal_helper.rb +3 -3
- data/lib/stack_master/commands/tidy.rb +14 -13
- data/lib/stack_master/config.rb +23 -21
- data/lib/stack_master/diff.rb +2 -2
- data/lib/stack_master/identity.rb +2 -1
- data/lib/stack_master/parameter_loader.rb +3 -5
- data/lib/stack_master/parameter_resolver.rb +18 -18
- data/lib/stack_master/parameter_resolvers/acm_certificate.rb +4 -1
- data/lib/stack_master/parameter_resolvers/ami_finder.rb +2 -3
- data/lib/stack_master/parameter_resolvers/ejson.rb +9 -6
- data/lib/stack_master/parameter_resolvers/env.rb +1 -2
- data/lib/stack_master/parameter_resolvers/latest_ami_by_tags.rb +1 -1
- data/lib/stack_master/parameter_resolvers/latest_container.rb +9 -7
- data/lib/stack_master/parameter_resolvers/one_password.rb +11 -7
- data/lib/stack_master/parameter_resolvers/parameter_store.rb +1 -5
- data/lib/stack_master/parameter_resolvers/security_group.rb +1 -1
- data/lib/stack_master/parameter_resolvers/sso_group_id.rb +3 -2
- data/lib/stack_master/parameter_resolvers/stack_output.rb +7 -9
- data/lib/stack_master/parameter_validator.rb +2 -5
- data/lib/stack_master/prompter.rb +11 -10
- data/lib/stack_master/resolver_array.rb +2 -3
- data/lib/stack_master/role_assumer.rb +7 -5
- data/lib/stack_master/security_group_finder.rb +7 -5
- data/lib/stack_master/sns_topic_finder.rb +4 -3
- data/lib/stack_master/sparkle_formation/compile_time/allowed_pattern_validator.rb +2 -3
- data/lib/stack_master/sparkle_formation/compile_time/allowed_values_validator.rb +2 -3
- data/lib/stack_master/sparkle_formation/compile_time/definitions_validator.rb +6 -6
- data/lib/stack_master/sparkle_formation/compile_time/empty_validator.rb +0 -2
- data/lib/stack_master/sparkle_formation/compile_time/max_length_validator.rb +1 -2
- data/lib/stack_master/sparkle_formation/compile_time/max_size_validator.rb +1 -2
- data/lib/stack_master/sparkle_formation/compile_time/min_length_validator.rb +2 -3
- data/lib/stack_master/sparkle_formation/compile_time/min_size_validator.rb +2 -3
- data/lib/stack_master/sparkle_formation/compile_time/number_validator.rb +1 -2
- data/lib/stack_master/sparkle_formation/compile_time/parameters_validator.rb +0 -1
- data/lib/stack_master/sparkle_formation/compile_time/state_builder.rb +0 -2
- data/lib/stack_master/sparkle_formation/compile_time/string_validator.rb +2 -3
- data/lib/stack_master/sparkle_formation/compile_time/value_builder.rb +7 -9
- data/lib/stack_master/sparkle_formation/compile_time/value_validator.rb +3 -6
- data/lib/stack_master/sparkle_formation/compile_time/value_validator_factory.rb +11 -13
- data/lib/stack_master/sparkle_formation/template_file.rb +2 -4
- data/lib/stack_master/sso_group_id_finder.rb +15 -12
- data/lib/stack_master/stack.rb +51 -18
- data/lib/stack_master/stack_definition.rb +6 -5
- data/lib/stack_master/stack_differ.rb +36 -9
- data/lib/stack_master/stack_events/fetcher.rb +3 -1
- data/lib/stack_master/stack_events/presenter.rb +6 -1
- data/lib/stack_master/stack_events/streamer.rb +3 -1
- data/lib/stack_master/stack_status.rb +1 -0
- data/lib/stack_master/template_compilers/json.rb +1 -1
- data/lib/stack_master/template_compilers/sparkle_formation.rb +12 -9
- data/lib/stack_master/template_utils.rb +8 -4
- data/lib/stack_master/test_driver/cloud_formation.rb +34 -9
- data/lib/stack_master/test_driver/s3.rb +2 -3
- data/lib/stack_master/utils.rb +4 -6
- data/lib/stack_master/validator.rb +7 -6
- data/lib/stack_master/version.rb +1 -1
- data/lib/stack_master.rb +3 -1
- metadata +21 -10
- data/lib/stack_master/parameter_resolvers/accounts_by_tags.rb +0 -60
|
@@ -17,7 +17,7 @@ module StackMaster
|
|
|
17
17
|
return false
|
|
18
18
|
end
|
|
19
19
|
cf.validate_template(template_body: TemplateUtils.maybe_compressed_template_body(stack.template_body))
|
|
20
|
-
StackMaster.stdout.puts
|
|
20
|
+
StackMaster.stdout.puts 'valid'
|
|
21
21
|
true
|
|
22
22
|
rescue Aws::CloudFormation::Errors::ValidationError => e
|
|
23
23
|
StackMaster.stdout.puts "invalid. #{e.message}"
|
|
@@ -35,11 +35,12 @@ module StackMaster
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def stack
|
|
38
|
-
@stack ||=
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
@stack ||=
|
|
39
|
+
if validate_template_parameters?
|
|
40
|
+
Stack.generate(@stack_definition, @config)
|
|
41
|
+
else
|
|
42
|
+
Stack.generate_without_parameters(@stack_definition, @config)
|
|
43
|
+
end
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
def parameter_validator
|
data/lib/stack_master/version.rb
CHANGED
data/lib/stack_master.rb
CHANGED
|
@@ -140,6 +140,7 @@ module StackMaster
|
|
|
140
140
|
|
|
141
141
|
def debug(message)
|
|
142
142
|
return unless debug?
|
|
143
|
+
|
|
143
144
|
stderr.puts Rainbow("[DEBUG] #{message}").color(:green)
|
|
144
145
|
end
|
|
145
146
|
|
|
@@ -167,10 +168,11 @@ module StackMaster
|
|
|
167
168
|
end
|
|
168
169
|
|
|
169
170
|
attr_accessor :non_interactive_answer
|
|
171
|
+
|
|
170
172
|
@non_interactive_answer = 'y'
|
|
171
173
|
|
|
172
174
|
def base_dir
|
|
173
|
-
File.expand_path(File.join(File.dirname(__FILE__),
|
|
175
|
+
File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
|
174
176
|
end
|
|
175
177
|
|
|
176
178
|
def cloud_formation_driver
|
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: stack_master
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.18.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steve Hodgkiss
|
|
8
8
|
- Glen Stampoultzis
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: bundler
|
|
@@ -123,6 +122,20 @@ dependencies:
|
|
|
123
122
|
- - ">="
|
|
124
123
|
- !ruby/object:Gem::Version
|
|
125
124
|
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: rubocop
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ">="
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :development
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ">="
|
|
137
|
+
- !ruby/object:Gem::Version
|
|
138
|
+
version: '0'
|
|
126
139
|
- !ruby/object:Gem::Dependency
|
|
127
140
|
name: os
|
|
128
141
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -542,7 +555,6 @@ files:
|
|
|
542
555
|
- lib/stack_master/paged_response_accumulator.rb
|
|
543
556
|
- lib/stack_master/parameter_loader.rb
|
|
544
557
|
- lib/stack_master/parameter_resolver.rb
|
|
545
|
-
- lib/stack_master/parameter_resolvers/accounts_by_tags.rb
|
|
546
558
|
- lib/stack_master/parameter_resolvers/acm_certificate.rb
|
|
547
559
|
- lib/stack_master/parameter_resolvers/ami_finder.rb
|
|
548
560
|
- lib/stack_master/parameter_resolvers/ejson.rb
|
|
@@ -604,15 +616,15 @@ files:
|
|
|
604
616
|
- stacktemplates/parameter_stack_name.yml
|
|
605
617
|
- stacktemplates/stack.json.erb
|
|
606
618
|
- stacktemplates/stack_master.yml.erb
|
|
607
|
-
homepage: https://
|
|
619
|
+
homepage: https://github.com/envato/stack_master
|
|
608
620
|
licenses:
|
|
609
621
|
- MIT
|
|
610
622
|
metadata:
|
|
623
|
+
allowed_push_host: https://rubygems.org
|
|
611
624
|
bug_tracker_uri: https://github.com/envato/stack_master/issues
|
|
612
625
|
changelog_uri: https://github.com/envato/stack_master/blob/master/CHANGELOG.md
|
|
613
|
-
documentation_uri: https://www.rubydoc.info/gems/stack_master/2.
|
|
614
|
-
source_code_uri: https://github.com/envato/stack_master/tree/v2.
|
|
615
|
-
post_install_message:
|
|
626
|
+
documentation_uri: https://www.rubydoc.info/gems/stack_master/2.18.0
|
|
627
|
+
source_code_uri: https://github.com/envato/stack_master/tree/v2.18.0
|
|
616
628
|
rdoc_options: []
|
|
617
629
|
require_paths:
|
|
618
630
|
- lib
|
|
@@ -627,8 +639,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
627
639
|
- !ruby/object:Gem::Version
|
|
628
640
|
version: '0'
|
|
629
641
|
requirements: []
|
|
630
|
-
rubygems_version:
|
|
631
|
-
signing_key:
|
|
642
|
+
rubygems_version: 4.0.5
|
|
632
643
|
specification_version: 4
|
|
633
644
|
summary: StackMaster is a sure-footed way of creating, updating and keeping track
|
|
634
645
|
of Amazon (AWS) CloudFormation stacks.
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
module StackMaster
|
|
2
|
-
module ParameterResolvers
|
|
3
|
-
class AccountsByTags < Resolver
|
|
4
|
-
array_resolver class_name: 'AccountsByTags'
|
|
5
|
-
|
|
6
|
-
def initialize(config, stack_definition)
|
|
7
|
-
@config = config
|
|
8
|
-
@stack_definition = stack_definition
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def resolve(team)
|
|
12
|
-
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
def fetch_all_aws_accounts()
|
|
18
|
-
return @aws_accounts if defined(@aws_accounts)
|
|
19
|
-
@aws_accounts = []
|
|
20
|
-
next_token = nil
|
|
21
|
-
client = Aws::Organizations::Client.new(region: @stack_definition.region)
|
|
22
|
-
loop do
|
|
23
|
-
resp = client.list_accounts(next_token: next_token)
|
|
24
|
-
@aws_accounts << resp.accounts
|
|
25
|
-
next_token = resp.next_token
|
|
26
|
-
break if next_token.nil?
|
|
27
|
-
end
|
|
28
|
-
@aws_accounts.flatten! || @aws_accounts
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def_fetch_tags_for_account(account)
|
|
32
|
-
client = Aws::Organizations::Client.new(region: @stack_definition.region)
|
|
33
|
-
next_token = nil
|
|
34
|
-
tags = []
|
|
35
|
-
loop do
|
|
36
|
-
client.list_tags_for_resource(resource_id: account.id, next_token: next_token)
|
|
37
|
-
tags << resp.tags
|
|
38
|
-
next_token = resp.next_token
|
|
39
|
-
break if next_token.nil?
|
|
40
|
-
end
|
|
41
|
-
tags.flatten! || tags
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def fetch_tags_for_accounts()
|
|
45
|
-
return @tagged_aws_accounts if defined?(@tagged_aws_accounts )
|
|
46
|
-
@tagged_aws_accounts = Hash.new()
|
|
47
|
-
fetch_all_aws_accounts()
|
|
48
|
-
@aws_accounts.each do |account|
|
|
49
|
-
@tagged_aws_accounts[account.id.to_sym] = { :account => account.id, :tags => fetch_tags_for_account(account.id) }
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def account_in_group?(account, group)
|
|
54
|
-
fetch_tags_for_accounts if defined?(@tagged_aws_accounts)
|
|
55
|
-
@tagged_aws_accounts[:account.to_sym][:tags].select {|tag| tag['key'] =='Group' && tag['value']==group}
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|