stack_master 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +208 -0
  7. data/Rakefile +11 -0
  8. data/apply_demo.gif +0 -0
  9. data/bin/stack_master +16 -0
  10. data/example/simple/Gemfile +3 -0
  11. data/example/simple/parameters/myapp_vpc.yml +1 -0
  12. data/example/simple/parameters/myapp_web.yml +2 -0
  13. data/example/simple/stack_master.yml +13 -0
  14. data/example/simple/templates/myapp_vpc.rb +39 -0
  15. data/example/simple/templates/myapp_web.rb +16 -0
  16. data/features/apply.feature +241 -0
  17. data/features/delete.feature +43 -0
  18. data/features/diff.feature +191 -0
  19. data/features/events.feature +38 -0
  20. data/features/init.feature +6 -0
  21. data/features/outputs.feature +49 -0
  22. data/features/region_aliases.feature +66 -0
  23. data/features/resources.feature +45 -0
  24. data/features/stack_defaults.feature +88 -0
  25. data/features/status.feature +124 -0
  26. data/features/step_definitions/stack_steps.rb +50 -0
  27. data/features/support/env.rb +14 -0
  28. data/lib/stack_master.rb +81 -0
  29. data/lib/stack_master/aws_driver/cloud_formation.rb +56 -0
  30. data/lib/stack_master/cli.rb +164 -0
  31. data/lib/stack_master/command.rb +13 -0
  32. data/lib/stack_master/commands/apply.rb +104 -0
  33. data/lib/stack_master/commands/delete.rb +53 -0
  34. data/lib/stack_master/commands/diff.rb +31 -0
  35. data/lib/stack_master/commands/events.rb +39 -0
  36. data/lib/stack_master/commands/init.rb +109 -0
  37. data/lib/stack_master/commands/list_stacks.rb +16 -0
  38. data/lib/stack_master/commands/outputs.rb +27 -0
  39. data/lib/stack_master/commands/resources.rb +33 -0
  40. data/lib/stack_master/commands/status.rb +47 -0
  41. data/lib/stack_master/commands/validate.rb +17 -0
  42. data/lib/stack_master/config.rb +86 -0
  43. data/lib/stack_master/ctrl_c.rb +4 -0
  44. data/lib/stack_master/parameter_loader.rb +17 -0
  45. data/lib/stack_master/parameter_resolver.rb +45 -0
  46. data/lib/stack_master/parameter_resolvers/secret.rb +42 -0
  47. data/lib/stack_master/parameter_resolvers/security_group.rb +20 -0
  48. data/lib/stack_master/parameter_resolvers/sns_topic_name.rb +29 -0
  49. data/lib/stack_master/parameter_resolvers/stack_output.rb +53 -0
  50. data/lib/stack_master/prompter.rb +14 -0
  51. data/lib/stack_master/security_group_finder.rb +29 -0
  52. data/lib/stack_master/sns_topic_finder.rb +27 -0
  53. data/lib/stack_master/stack.rb +96 -0
  54. data/lib/stack_master/stack_definition.rb +49 -0
  55. data/lib/stack_master/stack_differ.rb +80 -0
  56. data/lib/stack_master/stack_events/fetcher.rb +45 -0
  57. data/lib/stack_master/stack_events/presenter.rb +27 -0
  58. data/lib/stack_master/stack_events/streamer.rb +55 -0
  59. data/lib/stack_master/stack_states.rb +34 -0
  60. data/lib/stack_master/template_compiler.rb +21 -0
  61. data/lib/stack_master/test_driver/cloud_formation.rb +139 -0
  62. data/lib/stack_master/testing.rb +7 -0
  63. data/lib/stack_master/utils.rb +31 -0
  64. data/lib/stack_master/validator.rb +25 -0
  65. data/lib/stack_master/version.rb +3 -0
  66. data/logo.png +0 -0
  67. data/script/buildkite/bundle.sh +5 -0
  68. data/script/buildkite/clean.sh +3 -0
  69. data/script/buildkite_rspec.sh +27 -0
  70. data/spec/fixtures/parameters/myapp_vpc.yml +1 -0
  71. data/spec/fixtures/stack_master.yml +35 -0
  72. data/spec/fixtures/templates/myapp_vpc.json +1 -0
  73. data/spec/spec_helper.rb +99 -0
  74. data/spec/stack_master/commands/apply_spec.rb +92 -0
  75. data/spec/stack_master/commands/delete_spec.rb +40 -0
  76. data/spec/stack_master/commands/init_spec.rb +17 -0
  77. data/spec/stack_master/commands/status_spec.rb +38 -0
  78. data/spec/stack_master/commands/validate_spec.rb +26 -0
  79. data/spec/stack_master/config_spec.rb +81 -0
  80. data/spec/stack_master/parameter_loader_spec.rb +81 -0
  81. data/spec/stack_master/parameter_resolver_spec.rb +58 -0
  82. data/spec/stack_master/parameter_resolvers/secret_spec.rb +66 -0
  83. data/spec/stack_master/parameter_resolvers/security_group_spec.rb +17 -0
  84. data/spec/stack_master/parameter_resolvers/sns_topic_name_spec.rb +43 -0
  85. data/spec/stack_master/parameter_resolvers/stack_output_spec.rb +77 -0
  86. data/spec/stack_master/security_group_finder_spec.rb +49 -0
  87. data/spec/stack_master/sns_topic_finder_spec.rb +25 -0
  88. data/spec/stack_master/stack_definition_spec.rb +37 -0
  89. data/spec/stack_master/stack_differ_spec.rb +34 -0
  90. data/spec/stack_master/stack_events/fetcher_spec.rb +65 -0
  91. data/spec/stack_master/stack_events/presenter_spec.rb +18 -0
  92. data/spec/stack_master/stack_events/streamer_spec.rb +33 -0
  93. data/spec/stack_master/stack_spec.rb +157 -0
  94. data/spec/stack_master/template_compiler_spec.rb +48 -0
  95. data/spec/stack_master/test_driver/cloud_formation_spec.rb +24 -0
  96. data/spec/stack_master/utils_spec.rb +30 -0
  97. data/spec/stack_master/validator_spec.rb +38 -0
  98. data/stack_master.gemspec +38 -0
  99. data/stacktemplates/parameter_region.yml +3 -0
  100. data/stacktemplates/parameter_stack_name.yml +3 -0
  101. data/stacktemplates/stack.json.erb +20 -0
  102. data/stacktemplates/stack_master.yml.erb +6 -0
  103. metadata +427 -0
@@ -0,0 +1,24 @@
1
+ require 'stack_master/test_driver/cloud_formation'
2
+
3
+ RSpec.describe StackMaster::TestDriver::CloudFormation do
4
+ subject(:test_cf_driver) { described_class.new }
5
+
6
+ it 'adds and gets stacks' do
7
+ test_cf_driver.add_stack(stack_id: "1", stack_name: 'stack-1')
8
+ test_cf_driver.add_stack(stack_id: "2", stack_name: 'stack-2')
9
+ expect(test_cf_driver.describe_stacks.stacks.map(&:stack_id)).to eq(["1", "2"])
10
+
11
+ end
12
+
13
+ it 'adds and gets stack events' do
14
+ test_cf_driver.add_stack_event(stack_name: 'stack-1', resource_status: "UPDATE_COMPLETE")
15
+ test_cf_driver.add_stack_event(stack_name: 'stack-1', resource_status: "UPDATE_COMPLETE")
16
+ test_cf_driver.add_stack_event(stack_name: 'stack-2')
17
+ expect(test_cf_driver.describe_stack_events(stack_name: 'stack-1').stack_events.map(&:stack_name)).to eq ['stack-1', 'stack-1']
18
+ end
19
+
20
+ it 'sets and gets templates' do
21
+ test_cf_driver.set_template('stack-1', 'blah')
22
+ expect(test_cf_driver.get_template(stack_name: 'stack-1').template_body).to eq 'blah'
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ RSpec.describe StackMaster::Utils do
2
+ describe ".hash_to_aws_tags" do
3
+ let(:tags) { {'environment' => 'production'} }
4
+ subject(:aws_tags) { StackMaster::Utils.hash_to_aws_tags(tags) }
5
+
6
+ it "converts the tags attribute to aws format" do
7
+ expect(aws_tags).to eq([{key: 'environment', value: 'production'}])
8
+ end
9
+
10
+ context "tags is nil" do
11
+ let(:tags) { nil }
12
+
13
+ it "returns nil" do
14
+ expect(aws_tags).to eq([])
15
+ end
16
+ end
17
+ end
18
+
19
+ describe ".hash_to_aws_parameters" do
20
+ let(:params) { { 'param1' => 'value1', 'param2' => 'value2' } }
21
+ subject(:aws_params) { StackMaster::Utils.hash_to_aws_parameters(params) }
22
+
23
+ it "converts to aws parameters" do
24
+ expect(aws_params).to eq([
25
+ { parameter_key: 'param1', parameter_value: 'value1' },
26
+ { parameter_key: 'param2', parameter_value: 'value2' }
27
+ ])
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,38 @@
1
+ RSpec.describe StackMaster::Validator do
2
+
3
+ subject(:validator) { described_class.new(stack_definition) }
4
+ let(:stack_definition) do
5
+ StackMaster::StackDefinition.new(
6
+ region: 'us-east-1',
7
+ stack_name: 'myapp_vpc',
8
+ template: 'myapp_vpc.json',
9
+ tags: { 'environment' => 'production' },
10
+ base_dir: File.expand_path('spec/fixtures'),
11
+ )
12
+ end
13
+ let(:cf) { Aws::CloudFormation::Client.new(region: "us-east-1") }
14
+ before do
15
+ allow(Aws::CloudFormation::Client).to receive(:new).and_return cf
16
+ end
17
+
18
+ describe "#perform" do
19
+ context "template body is valid" do
20
+ before do
21
+ cf.stub_responses(:validate_template, nil)
22
+ end
23
+ it "tells the user everything will be fine" do
24
+ expect { validator.perform }.to output(/Valid/).to_stdout
25
+ end
26
+ end
27
+
28
+ context "invalid template body" do
29
+ before do
30
+ cf.stub_responses(:validate_template, Aws::CloudFormation::Errors::ValidationError.new('a', 'Problem'))
31
+ end
32
+ it "informs the user of their stupdity" do
33
+ expect { validator.perform }.to output(/Validation Failed/).to_stderr
34
+ end
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'stack_master/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "stack_master"
8
+ spec.version = StackMaster::VERSION
9
+ spec.authors = ["Steve Hodgkiss", "Glen Stampoultzis"]
10
+ spec.email = ["steve@hodgkiss.me", "gstamp@gmail.com"]
11
+ spec.summary = %q{StackMaster is a sure-footed way of creating, updating and keeping track of Amazon (AWS) CloudFormation stacks.}
12
+ spec.description = %q{}
13
+ spec.homepage = "https://github.com/envato/stack_master"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.5"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "pry"
25
+ spec.add_development_dependency "cucumber"
26
+ spec.add_development_dependency "aruba"
27
+ spec.add_development_dependency "timecop"
28
+ spec.add_dependency "commander"
29
+ spec.add_dependency "virtus"
30
+ spec.add_dependency "aws-sdk"
31
+ spec.add_dependency "diffy"
32
+ spec.add_dependency "colorize"
33
+ spec.add_dependency "activesupport"
34
+ spec.add_dependency "sparkle_formation", "~> 1.1"
35
+ spec.add_dependency "table_print"
36
+ spec.add_dependency "dotgpg"
37
+ spec.add_dependency "deep_merge"
38
+ end
@@ -0,0 +1,3 @@
1
+ # Add parameters here:
2
+ # param1: value1
3
+ # param2: value2
@@ -0,0 +1,3 @@
1
+ # Add parameters here:
2
+ # param1: value1
3
+ # param2: value2
@@ -0,0 +1,20 @@
1
+ {
2
+ "AWSTemplateFormatVersion" : "2010-09-09",
3
+ "Description" : "Cloudformation stack for <%= stack_name %>",
4
+
5
+ "Parameters" : {
6
+ "InstanceType" : {
7
+ "Description" : "EC2 instance type",
8
+ "Type" : "String"
9
+ }
10
+ },
11
+
12
+ "Mappings" : {
13
+ },
14
+
15
+ "Resources" : {
16
+ },
17
+
18
+ "Outputs" : {
19
+ }
20
+ }
@@ -0,0 +1,6 @@
1
+ stacks:
2
+ <%= region %>:
3
+ <%= stack_name %>:
4
+ template: <%= stack_name %>.json
5
+ tags:
6
+ environment: production
metadata ADDED
@@ -0,0 +1,427 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: stack_master
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Steve Hodgkiss
8
+ - Glen Stampoultzis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-11-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.5'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.5'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: pry
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: cucumber
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: aruba
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: timecop
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: commander
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ">="
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: virtus
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: aws-sdk
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: diffy
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :runtime
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: colorize
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
175
+ type: :runtime
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: activesupport
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ type: :runtime
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ">="
194
+ - !ruby/object:Gem::Version
195
+ version: '0'
196
+ - !ruby/object:Gem::Dependency
197
+ name: sparkle_formation
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '1.1'
203
+ type: :runtime
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '1.1'
210
+ - !ruby/object:Gem::Dependency
211
+ name: table_print
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - ">="
215
+ - !ruby/object:Gem::Version
216
+ version: '0'
217
+ type: :runtime
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: '0'
224
+ - !ruby/object:Gem::Dependency
225
+ name: dotgpg
226
+ requirement: !ruby/object:Gem::Requirement
227
+ requirements:
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
231
+ type: :runtime
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: deep_merge
240
+ requirement: !ruby/object:Gem::Requirement
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: '0'
245
+ type: :runtime
246
+ prerelease: false
247
+ version_requirements: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - ">="
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ description: ''
253
+ email:
254
+ - steve@hodgkiss.me
255
+ - gstamp@gmail.com
256
+ executables:
257
+ - stack_master
258
+ extensions: []
259
+ extra_rdoc_files: []
260
+ files:
261
+ - ".gitignore"
262
+ - ".rspec"
263
+ - Gemfile
264
+ - LICENSE.txt
265
+ - README.md
266
+ - Rakefile
267
+ - apply_demo.gif
268
+ - bin/stack_master
269
+ - example/simple/Gemfile
270
+ - example/simple/parameters/myapp_vpc.yml
271
+ - example/simple/parameters/myapp_web.yml
272
+ - example/simple/stack_master.yml
273
+ - example/simple/templates/myapp_vpc.rb
274
+ - example/simple/templates/myapp_web.rb
275
+ - features/apply.feature
276
+ - features/delete.feature
277
+ - features/diff.feature
278
+ - features/events.feature
279
+ - features/init.feature
280
+ - features/outputs.feature
281
+ - features/region_aliases.feature
282
+ - features/resources.feature
283
+ - features/stack_defaults.feature
284
+ - features/status.feature
285
+ - features/step_definitions/stack_steps.rb
286
+ - features/support/env.rb
287
+ - lib/stack_master.rb
288
+ - lib/stack_master/aws_driver/cloud_formation.rb
289
+ - lib/stack_master/cli.rb
290
+ - lib/stack_master/command.rb
291
+ - lib/stack_master/commands/apply.rb
292
+ - lib/stack_master/commands/delete.rb
293
+ - lib/stack_master/commands/diff.rb
294
+ - lib/stack_master/commands/events.rb
295
+ - lib/stack_master/commands/init.rb
296
+ - lib/stack_master/commands/list_stacks.rb
297
+ - lib/stack_master/commands/outputs.rb
298
+ - lib/stack_master/commands/resources.rb
299
+ - lib/stack_master/commands/status.rb
300
+ - lib/stack_master/commands/validate.rb
301
+ - lib/stack_master/config.rb
302
+ - lib/stack_master/ctrl_c.rb
303
+ - lib/stack_master/parameter_loader.rb
304
+ - lib/stack_master/parameter_resolver.rb
305
+ - lib/stack_master/parameter_resolvers/secret.rb
306
+ - lib/stack_master/parameter_resolvers/security_group.rb
307
+ - lib/stack_master/parameter_resolvers/sns_topic_name.rb
308
+ - lib/stack_master/parameter_resolvers/stack_output.rb
309
+ - lib/stack_master/prompter.rb
310
+ - lib/stack_master/security_group_finder.rb
311
+ - lib/stack_master/sns_topic_finder.rb
312
+ - lib/stack_master/stack.rb
313
+ - lib/stack_master/stack_definition.rb
314
+ - lib/stack_master/stack_differ.rb
315
+ - lib/stack_master/stack_events/fetcher.rb
316
+ - lib/stack_master/stack_events/presenter.rb
317
+ - lib/stack_master/stack_events/streamer.rb
318
+ - lib/stack_master/stack_states.rb
319
+ - lib/stack_master/template_compiler.rb
320
+ - lib/stack_master/test_driver/cloud_formation.rb
321
+ - lib/stack_master/testing.rb
322
+ - lib/stack_master/utils.rb
323
+ - lib/stack_master/validator.rb
324
+ - lib/stack_master/version.rb
325
+ - logo.png
326
+ - script/buildkite/bundle.sh
327
+ - script/buildkite/clean.sh
328
+ - script/buildkite_rspec.sh
329
+ - spec/fixtures/parameters/myapp_vpc.yml
330
+ - spec/fixtures/stack_master.yml
331
+ - spec/fixtures/templates/myapp_vpc.json
332
+ - spec/spec_helper.rb
333
+ - spec/stack_master/commands/apply_spec.rb
334
+ - spec/stack_master/commands/delete_spec.rb
335
+ - spec/stack_master/commands/init_spec.rb
336
+ - spec/stack_master/commands/status_spec.rb
337
+ - spec/stack_master/commands/validate_spec.rb
338
+ - spec/stack_master/config_spec.rb
339
+ - spec/stack_master/parameter_loader_spec.rb
340
+ - spec/stack_master/parameter_resolver_spec.rb
341
+ - spec/stack_master/parameter_resolvers/secret_spec.rb
342
+ - spec/stack_master/parameter_resolvers/security_group_spec.rb
343
+ - spec/stack_master/parameter_resolvers/sns_topic_name_spec.rb
344
+ - spec/stack_master/parameter_resolvers/stack_output_spec.rb
345
+ - spec/stack_master/security_group_finder_spec.rb
346
+ - spec/stack_master/sns_topic_finder_spec.rb
347
+ - spec/stack_master/stack_definition_spec.rb
348
+ - spec/stack_master/stack_differ_spec.rb
349
+ - spec/stack_master/stack_events/fetcher_spec.rb
350
+ - spec/stack_master/stack_events/presenter_spec.rb
351
+ - spec/stack_master/stack_events/streamer_spec.rb
352
+ - spec/stack_master/stack_spec.rb
353
+ - spec/stack_master/template_compiler_spec.rb
354
+ - spec/stack_master/test_driver/cloud_formation_spec.rb
355
+ - spec/stack_master/utils_spec.rb
356
+ - spec/stack_master/validator_spec.rb
357
+ - stack_master.gemspec
358
+ - stacktemplates/parameter_region.yml
359
+ - stacktemplates/parameter_stack_name.yml
360
+ - stacktemplates/stack.json.erb
361
+ - stacktemplates/stack_master.yml.erb
362
+ homepage: https://github.com/envato/stack_master
363
+ licenses:
364
+ - MIT
365
+ metadata: {}
366
+ post_install_message:
367
+ rdoc_options: []
368
+ require_paths:
369
+ - lib
370
+ required_ruby_version: !ruby/object:Gem::Requirement
371
+ requirements:
372
+ - - ">="
373
+ - !ruby/object:Gem::Version
374
+ version: '0'
375
+ required_rubygems_version: !ruby/object:Gem::Requirement
376
+ requirements:
377
+ - - ">="
378
+ - !ruby/object:Gem::Version
379
+ version: '0'
380
+ requirements: []
381
+ rubyforge_project:
382
+ rubygems_version: 2.4.5.1
383
+ signing_key:
384
+ specification_version: 4
385
+ summary: StackMaster is a sure-footed way of creating, updating and keeping track
386
+ of Amazon (AWS) CloudFormation stacks.
387
+ test_files:
388
+ - features/apply.feature
389
+ - features/delete.feature
390
+ - features/diff.feature
391
+ - features/events.feature
392
+ - features/init.feature
393
+ - features/outputs.feature
394
+ - features/region_aliases.feature
395
+ - features/resources.feature
396
+ - features/stack_defaults.feature
397
+ - features/status.feature
398
+ - features/step_definitions/stack_steps.rb
399
+ - features/support/env.rb
400
+ - spec/fixtures/parameters/myapp_vpc.yml
401
+ - spec/fixtures/stack_master.yml
402
+ - spec/fixtures/templates/myapp_vpc.json
403
+ - spec/spec_helper.rb
404
+ - spec/stack_master/commands/apply_spec.rb
405
+ - spec/stack_master/commands/delete_spec.rb
406
+ - spec/stack_master/commands/init_spec.rb
407
+ - spec/stack_master/commands/status_spec.rb
408
+ - spec/stack_master/commands/validate_spec.rb
409
+ - spec/stack_master/config_spec.rb
410
+ - spec/stack_master/parameter_loader_spec.rb
411
+ - spec/stack_master/parameter_resolver_spec.rb
412
+ - spec/stack_master/parameter_resolvers/secret_spec.rb
413
+ - spec/stack_master/parameter_resolvers/security_group_spec.rb
414
+ - spec/stack_master/parameter_resolvers/sns_topic_name_spec.rb
415
+ - spec/stack_master/parameter_resolvers/stack_output_spec.rb
416
+ - spec/stack_master/security_group_finder_spec.rb
417
+ - spec/stack_master/sns_topic_finder_spec.rb
418
+ - spec/stack_master/stack_definition_spec.rb
419
+ - spec/stack_master/stack_differ_spec.rb
420
+ - spec/stack_master/stack_events/fetcher_spec.rb
421
+ - spec/stack_master/stack_events/presenter_spec.rb
422
+ - spec/stack_master/stack_events/streamer_spec.rb
423
+ - spec/stack_master/stack_spec.rb
424
+ - spec/stack_master/template_compiler_spec.rb
425
+ - spec/stack_master/test_driver/cloud_formation_spec.rb
426
+ - spec/stack_master/utils_spec.rb
427
+ - spec/stack_master/validator_spec.rb