stack_master 1.3.1 → 1.4.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/CODE_OF_CONDUCT.md +73 -0
- data/README.md +10 -11
- data/lib/stack_master.rb +10 -3
- data/lib/stack_master/test_driver/cloud_formation.rb +2 -0
- data/lib/stack_master/version.rb +1 -1
- data/stack_master.gemspec +6 -1
- metadata +76 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 718e9ceaea1d3ec8a5ad3f5087947e8d99b0acbc9d9cf00a7b9195a6c527bd9c
|
4
|
+
data.tar.gz: e22b0c545568097c3f94eea29453e3020436e14ec002a3c1653d39a38028a268
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5d481814fbfbe8dc7e1474802c38eb0740ebe51b3112c5c5b12ec728c3e0dc0a71a41b61de2a27475f93589cafa0782f44c928889e8ecfe17a6ed5a36647eaf
|
7
|
+
data.tar.gz: d0f72299b00a8abf372c64247b0c5552fce38050e65db1aa6a52721859bb8d0e56b289f0f430730bad794d2b829900ecff52d5db8e3dd86f83354d3bb2e083b3
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
2
|
+
|
3
|
+
## Our Pledge
|
4
|
+
|
5
|
+
In the interest of fostering an open and welcoming environment, we as
|
6
|
+
contributors and maintainers pledge to making participation in our project and
|
7
|
+
our community a harassment-free experience for everyone, regardless of age, body
|
8
|
+
size, disability, ethnicity, gender identity and expression, level of experience,
|
9
|
+
education, socio-economic status, nationality, personal appearance, race,
|
10
|
+
religion, or sexual identity and orientation.
|
11
|
+
|
12
|
+
## Our Standards
|
13
|
+
|
14
|
+
Examples of behavior that contributes to creating a positive environment
|
15
|
+
include:
|
16
|
+
|
17
|
+
* Using welcoming and inclusive language
|
18
|
+
* Being respectful of differing viewpoints and experiences
|
19
|
+
* Gracefully accepting constructive criticism
|
20
|
+
* Focusing on what is best for the community
|
21
|
+
* Showing empathy towards other community members
|
22
|
+
|
23
|
+
Examples of unacceptable behavior by participants include:
|
24
|
+
|
25
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or
|
26
|
+
advances
|
27
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
28
|
+
* Public or private harassment
|
29
|
+
* Publishing others' private information, such as a physical or electronic
|
30
|
+
address, without explicit permission
|
31
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
32
|
+
professional setting
|
33
|
+
|
34
|
+
## Our Responsibilities
|
35
|
+
|
36
|
+
Project maintainers are responsible for clarifying the standards of acceptable
|
37
|
+
behavior and are expected to take appropriate and fair corrective action in
|
38
|
+
response to any instances of unacceptable behavior.
|
39
|
+
|
40
|
+
Project maintainers have the right and responsibility to remove, edit, or
|
41
|
+
reject comments, commits, code, wiki edits, issues, and other contributions
|
42
|
+
that are not aligned to this Code of Conduct, or to ban temporarily or
|
43
|
+
permanently any contributor for other behaviors that they deem inappropriate,
|
44
|
+
threatening, offensive, or harmful.
|
45
|
+
|
46
|
+
## Scope
|
47
|
+
|
48
|
+
This Code of Conduct applies both within project spaces and in public spaces
|
49
|
+
when an individual is representing the project or its community. Examples of
|
50
|
+
representing a project or community include using an official project e-mail
|
51
|
+
address, posting via an official social media account, or acting as an appointed
|
52
|
+
representative at an online or offline event. Representation of a project may be
|
53
|
+
further defined and clarified by project maintainers.
|
54
|
+
|
55
|
+
## Enforcement
|
56
|
+
|
57
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
+
reported by contacting the project team at stackmaster@googlegroups.com. All
|
59
|
+
complaints will be reviewed and investigated and will result in a response that
|
60
|
+
is deemed necessary and appropriate to the circumstances. The project team is
|
61
|
+
obligated to maintain confidentiality with regard to the reporter of an incident.
|
62
|
+
Further details of specific enforcement policies may be posted separately.
|
63
|
+
|
64
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good
|
65
|
+
faith may face temporary or permanent repercussions as determined by other
|
66
|
+
members of the project's leadership.
|
67
|
+
|
68
|
+
## Attribution
|
69
|
+
|
70
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
71
|
+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
72
|
+
|
73
|
+
[homepage]: https://www.contributor-covenant.org
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
[](https://badge.fury.io/rb/stack_master)
|
5
5
|
[](https://travis-ci.org/envato/stack_master)
|
6
6
|
|
7
|
-
StackMaster is a CLI tool to manage CloudFormation stacks, with the following features:
|
7
|
+
StackMaster is a CLI tool to manage [CloudFormation](https://aws.amazon.com/cloudformation/) stacks, with the following features:
|
8
8
|
|
9
9
|
- Synchronous visibility into stack updates. See exactly what is changing and
|
10
10
|
what will happen before agreeing to apply a change.
|
@@ -26,7 +26,7 @@ are displayed for review.
|
|
26
26
|
|
27
27
|
Stack parameters can be dynamically resolved at runtime using one of the
|
28
28
|
built in parameter resolvers. Parameters can be sourced from GPG encrypted YAML
|
29
|
-
files, other stacks outputs, by querying various AWS
|
29
|
+
files, other stacks outputs, by querying various AWS APIs to get resource ARNs,
|
30
30
|
etc.
|
31
31
|
|
32
32
|
## Installation
|
@@ -103,7 +103,7 @@ stacks:
|
|
103
103
|
## S3
|
104
104
|
|
105
105
|
StackMaster can optionally use S3 to store the templates before creating a stack.
|
106
|
-
This requires to configure an S3 bucket in stack_master.yml:
|
106
|
+
This requires you to configure an S3 bucket in stack_master.yml:
|
107
107
|
|
108
108
|
```yaml
|
109
109
|
stack_defaults:
|
@@ -125,7 +125,6 @@ stacks:
|
|
125
125
|
## Directories
|
126
126
|
|
127
127
|
- `templates` - CloudFormation, SparkleFormation or CfnDsl templates.
|
128
|
-
- `polices` - Stack policies.
|
129
128
|
- `parameters` - Parameters as YAML files.
|
130
129
|
- `secrets` - GPG encrypted secret files.
|
131
130
|
- `policies` - Stack policy JSON files.
|
@@ -133,7 +132,7 @@ stacks:
|
|
133
132
|
## Templates
|
134
133
|
|
135
134
|
StackMaster supports CloudFormation templates in plain JSON or YAML. Any `.yml` or `.yaml` file will be processed as
|
136
|
-
YAML
|
135
|
+
YAML, while any `.json` file will be processed as JSON.
|
137
136
|
|
138
137
|
### Ruby DSLs
|
139
138
|
By default, any template ending with `.rb` will be processed as a [SparkleFormation](https://github.com/sparkleformation/sparkle_formation)
|
@@ -165,7 +164,7 @@ key_name: myapp-us-east-1
|
|
165
164
|
### Compile Time Parameters
|
166
165
|
|
167
166
|
Compile time parameters can be used for [SparkleFormation](http://www.sparkleformation.io) templates. It conforms and
|
168
|
-
allows you to use the [Compile Time Parameters](http://www.sparkleformation.io/docs/sparkle_formation/compile-time-parameters.html) feature
|
167
|
+
allows you to use the [Compile Time Parameters](http://www.sparkleformation.io/docs/sparkle_formation/compile-time-parameters.html) feature.
|
169
168
|
|
170
169
|
A simple example looks like this
|
171
170
|
|
@@ -184,7 +183,7 @@ Keys in parameter files are automatically converted to camel case.
|
|
184
183
|
Parameter values can be sourced dynamically using parameter resolvers.
|
185
184
|
|
186
185
|
One benefit of using parameter resolvers instead of hard coding values like VPC
|
187
|
-
|
186
|
+
IDs and resource ARNs is that the same configuration works cross
|
188
187
|
region/account, even though the resolved values will be different.
|
189
188
|
|
190
189
|
### Stack Output
|
@@ -292,7 +291,7 @@ web_ami:
|
|
292
291
|
latest_ami_by_tags: role=web,application=myapp
|
293
292
|
```
|
294
293
|
|
295
|
-
Note that the corresponding array resolver is named `latest_amis_by_tags
|
294
|
+
Note that the corresponding array resolver is named `latest_amis_by_tags`.
|
296
295
|
|
297
296
|
### Latest AMI by attribute
|
298
297
|
|
@@ -308,7 +307,7 @@ bastion_ami:
|
|
308
307
|
name: ubuntu/images/hvm/ubuntu-wily-15.10-amd64-server-*
|
309
308
|
```
|
310
309
|
|
311
|
-
A set of possible attributes is available in the [AWS documentation](https://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html#describe_images-instance_method)
|
310
|
+
A set of possible attributes is available in the [AWS documentation](https://docs.aws.amazon.com/sdkforruby/api/Aws/EC2/Client.html#describe_images-instance_method).
|
312
311
|
|
313
312
|
Any value can be an array of possible matches.
|
314
313
|
|
@@ -331,7 +330,7 @@ To create a resolver named my_resolver:
|
|
331
330
|
```
|
332
331
|
lib/stack_master/parameter_resolvers/my_resolver.rb
|
333
332
|
```
|
334
|
-
* That file
|
333
|
+
* That file needs to contain a class named `StackMaster::ParameterResolvers::MyResolver`
|
335
334
|
that implements a `resolve` method and an initializer taking 2 parameters :
|
336
335
|
```ruby
|
337
336
|
module StackMaster
|
@@ -503,7 +502,7 @@ stack_master apply [region-or-alias] # Create or update stacks in the given regi
|
|
503
502
|
stack_master apply # Create or update all stacks
|
504
503
|
stack_master --changed apply # Create or update all stacks that have changed
|
505
504
|
stack_master --yes apply [region-or-alias] [stack-name] # Create or update a stack non-interactively (forcing yes)
|
506
|
-
stack_master diff [region-or-alias] [stack-name] # Display a stack
|
505
|
+
stack_master diff [region-or-alias] [stack-name] # Display a stack template and parameter diff
|
507
506
|
stack_master delete [region-or-alias] [stack-name] # Delete a stack
|
508
507
|
stack_master events [region-or-alias] [stack-name] # Display events for a stack
|
509
508
|
stack_master outputs [region-or-alias] [stack-name] # Display outputs for a stack
|
data/lib/stack_master.rb
CHANGED
@@ -1,8 +1,15 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require "aws-sdk"
|
1
|
+
require 'commander'
|
2
|
+
require 'yaml'
|
3
|
+
require "aws-sdk-cloudformation"
|
4
|
+
require "aws-sdk-ec2"
|
5
|
+
require "aws-sdk-s3"
|
6
|
+
require "aws-sdk-sns"
|
7
|
+
require "aws-sdk-ssm"
|
4
8
|
require "colorize"
|
5
9
|
require 'active_support/core_ext/string'
|
10
|
+
require 'multi_json'
|
11
|
+
|
12
|
+
MultiJson.use :json_gem
|
6
13
|
|
7
14
|
module StackMaster
|
8
15
|
extend self
|
data/lib/stack_master/version.rb
CHANGED
data/stack_master.gemspec
CHANGED
@@ -28,7 +28,11 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency "timecop"
|
29
29
|
spec.add_dependency "ruby-progressbar"
|
30
30
|
spec.add_dependency "commander"
|
31
|
-
spec.add_dependency "aws-sdk", "~>
|
31
|
+
spec.add_dependency "aws-sdk-cloudformation", "~> 1"
|
32
|
+
spec.add_dependency "aws-sdk-ec2", "~> 1"
|
33
|
+
spec.add_dependency "aws-sdk-s3", "~> 1"
|
34
|
+
spec.add_dependency "aws-sdk-sns", "~> 1"
|
35
|
+
spec.add_dependency "aws-sdk-ssm", "~> 1"
|
32
36
|
spec.add_dependency "diffy"
|
33
37
|
spec.add_dependency "erubis"
|
34
38
|
spec.add_dependency "colorize"
|
@@ -38,4 +42,5 @@ Gem::Specification.new do |spec|
|
|
38
42
|
spec.add_dependency "dotgpg"
|
39
43
|
spec.add_dependency "deep_merge"
|
40
44
|
spec.add_dependency "cfndsl"
|
45
|
+
spec.add_dependency "multi_json"
|
41
46
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack_master
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Hodgkiss
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-04-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -138,19 +138,75 @@ dependencies:
|
|
138
138
|
- !ruby/object:Gem::Version
|
139
139
|
version: '0'
|
140
140
|
- !ruby/object:Gem::Dependency
|
141
|
-
name: aws-sdk
|
141
|
+
name: aws-sdk-cloudformation
|
142
142
|
requirement: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
144
|
- - "~>"
|
145
145
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
146
|
+
version: '1'
|
147
147
|
type: :runtime
|
148
148
|
prerelease: false
|
149
149
|
version_requirements: !ruby/object:Gem::Requirement
|
150
150
|
requirements:
|
151
151
|
- - "~>"
|
152
152
|
- !ruby/object:Gem::Version
|
153
|
-
version: '
|
153
|
+
version: '1'
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: aws-sdk-ec2
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - "~>"
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '1'
|
161
|
+
type: :runtime
|
162
|
+
prerelease: false
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - "~>"
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '1'
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: aws-sdk-s3
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - "~>"
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '1'
|
175
|
+
type: :runtime
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - "~>"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '1'
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
name: aws-sdk-sns
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '1'
|
189
|
+
type: :runtime
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - "~>"
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '1'
|
196
|
+
- !ruby/object:Gem::Dependency
|
197
|
+
name: aws-sdk-ssm
|
198
|
+
requirement: !ruby/object:Gem::Requirement
|
199
|
+
requirements:
|
200
|
+
- - "~>"
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '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'
|
154
210
|
- !ruby/object:Gem::Dependency
|
155
211
|
name: diffy
|
156
212
|
requirement: !ruby/object:Gem::Requirement
|
@@ -277,6 +333,20 @@ dependencies:
|
|
277
333
|
- - ">="
|
278
334
|
- !ruby/object:Gem::Version
|
279
335
|
version: '0'
|
336
|
+
- !ruby/object:Gem::Dependency
|
337
|
+
name: multi_json
|
338
|
+
requirement: !ruby/object:Gem::Requirement
|
339
|
+
requirements:
|
340
|
+
- - ">="
|
341
|
+
- !ruby/object:Gem::Version
|
342
|
+
version: '0'
|
343
|
+
type: :runtime
|
344
|
+
prerelease: false
|
345
|
+
version_requirements: !ruby/object:Gem::Requirement
|
346
|
+
requirements:
|
347
|
+
- - ">="
|
348
|
+
- !ruby/object:Gem::Version
|
349
|
+
version: '0'
|
280
350
|
description: ''
|
281
351
|
email:
|
282
352
|
- steve@hodgkiss.me
|
@@ -289,6 +359,7 @@ files:
|
|
289
359
|
- ".gitignore"
|
290
360
|
- ".rspec"
|
291
361
|
- ".travis.yml"
|
362
|
+
- CODE_OF_CONDUCT.md
|
292
363
|
- Gemfile
|
293
364
|
- LICENSE.txt
|
294
365
|
- README.md
|