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 +4 -4
- data/lib/stack_master.rb +1 -0
- data/lib/stack_master/cli.rb +19 -0
- data/lib/stack_master/commands/nag.rb +30 -0
- data/lib/stack_master/version.rb +1 -1
- metadata +22 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 404a38ded90b0e30b4e7dbca97185e298959c0541d7ed507880cd6654f45868f
|
4
|
+
data.tar.gz: a0459cf8623da399abc16482d3ec3674b418a369406e465d9a6245ea7d3de48e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9a25c80259fe178287eaa6c13ee43cbb04e9a5288c1a6d4b429499df35a27bf7437873492e338221e0a2744252244889ce7b7d9e82521eb95883c5520bce4ed
|
7
|
+
data.tar.gz: 8187cf1cc0ff902a8fa90274a15ed8d0e9ea989e0020b942bce488a4b7881da7a544554c2949305681748349c991401e65308f65e039c04e2290018892fc15ed
|
data/lib/stack_master.rb
CHANGED
data/lib/stack_master/cli.rb
CHANGED
@@ -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
|
data/lib/stack_master/version.rb
CHANGED
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.
|
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-
|
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.
|
545
|
-
source_code_uri: https://github.com/envato/stack_master/tree/v2.
|
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.
|