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 +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.
|