stack_master 2.9.0 → 2.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ba7ee171f7c218998ce73593d18bb62165c40a201f088b51192a7cfc1d8fb10
4
- data.tar.gz: 368a14a56b4cbd7678d71860902c1e1d360756c6272bd1fc6a7b1b6f5ac8f7c3
3
+ metadata.gz: 404a38ded90b0e30b4e7dbca97185e298959c0541d7ed507880cd6654f45868f
4
+ data.tar.gz: a0459cf8623da399abc16482d3ec3674b418a369406e465d9a6245ea7d3de48e
5
5
  SHA512:
6
- metadata.gz: 6eb37d06cd15fbf0852f7c798a18b35747b001d8ffe1edfcdf55c25c629e46d731c47dc5466e8af7275512f6f2dac54b492c714069dfded2c78ab6920bea04af
7
- data.tar.gz: 03c242ee5d588b817a53d1bf74e6808c762d37047805fcd79b18c73d5f2e84ce87ed8114efe7ea583f05d71449b4d64b50f4cce7395b72784d9c44837cb9579d
6
+ metadata.gz: b9a25c80259fe178287eaa6c13ee43cbb04e9a5288c1a6d4b429499df35a27bf7437873492e338221e0a2744252244889ce7b7d9e82521eb95883c5520bce4ed
7
+ data.tar.gz: 8187cf1cc0ff902a8fa90274a15ed8d0e9ea989e0020b942bce488a4b7881da7a544554c2949305681748349c991401e65308f65e039c04e2290018892fc15ed
@@ -70,6 +70,7 @@ module StackMaster
70
70
  autoload :Delete, 'stack_master/commands/delete'
71
71
  autoload :Status, 'stack_master/commands/status'
72
72
  autoload :Tidy, 'stack_master/commands/tidy'
73
+ autoload :Nag, 'stack_master/commands/nag'
73
74
  end
74
75
 
75
76
  module ParameterResolvers
@@ -146,6 +146,17 @@ module StackMaster
146
146
  end
147
147
  end
148
148
 
149
+ command :nag do |c|
150
+ c.syntax = 'stack_master nag [region_or_alias] [stack_name]'
151
+ c.summary = "Check this stack's template with cfn_nag"
152
+ c.description = "Runs SAST scan cfn_nag on the template"
153
+ c.example 'run cfn_nag on stack myapp-vpc with us-east-1 settings', 'stack_master nag us-east-1 myapp-vpc'
154
+ c.action do |args, options|
155
+ options.default config: default_config_file
156
+ execute_stacks_command(StackMaster::Commands::Nag, args, options)
157
+ end
158
+ end
159
+
149
160
  command :compile do |c|
150
161
  c.syntax = 'stack_master compile [region_or_alias] [stack_name]'
151
162
  c.summary = "Print the compiled version of a given stack"
@@ -254,6 +265,7 @@ module StackMaster
254
265
  stack_definitions = config.filter(region, stack_name)
255
266
  if stack_definitions.empty?
256
267
  StackMaster.stdout.puts "Could not find stack definition #{stack_name} in region #{region}"
268
+ show_other_region_candidates(config, stack_name)
257
269
  success = false
258
270
  end
259
271
  stack_definitions = stack_definitions.select do |stack_definition|
@@ -270,6 +282,13 @@ module StackMaster
270
282
  @kernel.exit false unless success
271
283
  end
272
284
 
285
+ def show_other_region_candidates(config, stack_name)
286
+ candidates = config.filter(region="", stack_name=stack_name)
287
+ return if candidates.empty?
288
+
289
+ StackMaster.stdout.puts "Stack name #{stack_name} exists in regions: #{candidates.map(&:region).join(', ')}"
290
+ end
291
+
273
292
  def execute_if_allowed_account(allowed_accounts, &block)
274
293
  raise ArgumentError, "Block required to execute this method" unless block_given?
275
294
  if running_in_allowed_account?(allowed_accounts)
@@ -0,0 +1,30 @@
1
+ module StackMaster
2
+ module Commands
3
+ class Nag
4
+ include Command
5
+ include Commander::UI
6
+
7
+ def perform
8
+ rv = Tempfile.open(['stack', "___#{stack_definition.stack_name}.#{proposed_stack.template_format}"]) do |f|
9
+ f.write(proposed_stack.template_body)
10
+ f.flush
11
+ system('cfn_nag', f.path)
12
+ $?.exitstatus
13
+ end
14
+
15
+ failed!("cfn_nag check failed with exit status #{rv}") if rv > 0
16
+ end
17
+
18
+ private
19
+
20
+ def stack_definition
21
+ @stack_definition ||= @config.find_stack(@region, @stack_name)
22
+ end
23
+
24
+ def proposed_stack
25
+ @proposed_stack ||= Stack.generate(stack_definition, @config)
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module StackMaster
2
- VERSION = "2.9.0"
2
+ VERSION = "2.10.0"
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stack_master
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.0
4
+ version: 2.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Hodgkiss
8
8
  - Glen Stampoultzis
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-06-24 00:00:00.000000000 Z
12
+ date: 2020-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -437,6 +437,20 @@ dependencies:
437
437
  - - ">="
438
438
  - !ruby/object:Gem::Version
439
439
  version: '0'
440
+ - !ruby/object:Gem::Dependency
441
+ name: cfn-nag
442
+ requirement: !ruby/object:Gem::Requirement
443
+ requirements:
444
+ - - "~>"
445
+ - !ruby/object:Gem::Version
446
+ version: 0.6.7
447
+ type: :runtime
448
+ prerelease: false
449
+ version_requirements: !ruby/object:Gem::Requirement
450
+ requirements:
451
+ - - "~>"
452
+ - !ruby/object:Gem::Version
453
+ version: 0.6.7
440
454
  description: ''
441
455
  email:
442
456
  - steve@hodgkiss.me
@@ -464,6 +478,7 @@ files:
464
478
  - lib/stack_master/commands/init.rb
465
479
  - lib/stack_master/commands/lint.rb
466
480
  - lib/stack_master/commands/list_stacks.rb
481
+ - lib/stack_master/commands/nag.rb
467
482
  - lib/stack_master/commands/outputs.rb
468
483
  - lib/stack_master/commands/resources.rb
469
484
  - lib/stack_master/commands/status.rb
@@ -541,9 +556,9 @@ licenses:
541
556
  metadata:
542
557
  bug_tracker_uri: https://github.com/envato/stack_master/issues
543
558
  changelog_uri: https://github.com/envato/stack_master/blob/master/CHANGELOG.md
544
- documentation_uri: https://www.rubydoc.info/gems/stack_master/2.9.0
545
- source_code_uri: https://github.com/envato/stack_master/tree/v2.9.0
546
- post_install_message:
559
+ documentation_uri: https://www.rubydoc.info/gems/stack_master/2.10.0
560
+ source_code_uri: https://github.com/envato/stack_master/tree/v2.10.0
561
+ post_install_message:
547
562
  rdoc_options: []
548
563
  require_paths:
549
564
  - lib
@@ -559,7 +574,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
559
574
  version: '0'
560
575
  requirements: []
561
576
  rubygems_version: 3.0.3
562
- signing_key:
577
+ signing_key:
563
578
  specification_version: 4
564
579
  summary: StackMaster is a sure-footed way of creating, updating and keeping track
565
580
  of Amazon (AWS) CloudFormation stacks.