stack_master 2.9.0 → 2.10.0

Sign up to get free protection for your applications and to get access to all the features.
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.