cfn-flow 0.5.0 → 0.7.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/README.md +77 -2
- data/lib/cfn-flow/cli.rb +2 -0
- data/lib/cfn-flow/version.rb +1 -1
- data/spec/cfn-flow/cli_spec.rb +11 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e00390b3fd3c7698003efd85d99fc576e885ba3
|
4
|
+
data.tar.gz: 881bb3936515feb3db9801637767c13db1b2ab9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 511ada328d1a675b712cb20ad14d94e01a1940fedfb5da0e196609d9dfd2845a155c09932115c1858a13c831684d1f03d316106d2bdb87ccc28f8b0c906c6eed
|
7
|
+
data.tar.gz: b3e5baf4a020bc72e6ada19e6e16ae758a678e3c3aded9973ced8bd6bc84b71d3ee576035cd9f35ee8d1c3bdfea1da4a44dd91f65f53b09d450a62ef5c2d43a3
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# cfn-flow
|
2
2
|
An opinionated command-line workflow for developing [AWS CloudFormation](https://aws.amazon.com/cloudformation/) templates and deploying stacks.
|
3
3
|
|
4
|
-
Track template changes in git and
|
4
|
+
Track template changes in git and publish versioned releases to AWS S3.
|
5
5
|
|
6
6
|
Deploy stacks using a standard, reliable process with extensible
|
7
7
|
configuration in git.
|
@@ -10,7 +10,7 @@ configuration in git.
|
|
10
10
|
|
11
11
|
1. *Optimize for onboarding.* The workflow should be simple to learn & understand.
|
12
12
|
2. *Optimize for happiness.* The workflow should be easy and enjoyable to use.
|
13
|
-
3. *Auditable
|
13
|
+
3. *Auditable changes.* Know who changed what when. Leverage git change history.
|
14
14
|
4. *Immutable releases.* The code in a release never changes.
|
15
15
|
|
16
16
|
## Installation
|
@@ -27,6 +27,81 @@ The `git` command is also needed.
|
|
27
27
|
Poke around:
|
28
28
|
```
|
29
29
|
cfn-flow help
|
30
|
+
|
31
|
+
cfn-flow help COMMAND
|
32
|
+
# E.g.:
|
33
|
+
cfn-flow help deploy
|
34
|
+
```
|
35
|
+
|
36
|
+
Launching a CloudFormation stack:
|
37
|
+
```
|
38
|
+
cfn-flow deploy production
|
39
|
+
```
|
40
|
+
|
41
|
+
## Configuration
|
42
|
+
|
43
|
+
`cfn-flow` looks for `./cfn-flow.yml` for stack and template configuration.
|
44
|
+
You can override this path by setting the `CFN_FLOW_CONFIG_PATH` environment
|
45
|
+
variable to another path.
|
46
|
+
|
47
|
+
Here's a minimal `cfn-flow.yml` config file:
|
48
|
+
|
49
|
+
```yaml
|
50
|
+
# Required service name
|
51
|
+
service: MyService
|
52
|
+
|
53
|
+
# Minimal configuration for launching the stack.
|
54
|
+
stack:
|
55
|
+
# Stack name uses embedded ruby to support dynamic values
|
56
|
+
stack_name: MyService-<%= Time.now.to_i %>
|
57
|
+
# Required: *either* template_url or template_body
|
58
|
+
template_body: path/to/template.json
|
59
|
+
# Alternatively:
|
60
|
+
# template_url: https://MyS3Bucket.s3.amazonaws.com/MyPrefix/release/abc123/template.json
|
61
|
+
```
|
62
|
+
|
63
|
+
And here's a maximal config file:
|
64
|
+
|
65
|
+
```yaml
|
66
|
+
---
|
67
|
+
# Example cfn-flow.yml
|
68
|
+
|
69
|
+
service: MyService
|
70
|
+
|
71
|
+
# Set the AWS region here to override or avoid setting the AWS_REGION env var
|
72
|
+
region: us-east-1
|
73
|
+
|
74
|
+
##
|
75
|
+
# Templates
|
76
|
+
#
|
77
|
+
# These define where templates will get published.
|
78
|
+
# $ cfn-flow publish --release my-cfn-template.json
|
79
|
+
# Published url: https://MyS3Bucket.s3.amazonaws.com/My/S3/Prefix/<git sha>/my-cfn-template.json
|
80
|
+
templates:
|
81
|
+
bucket: MyS3Bucket
|
82
|
+
s3_prefix: 'My/S3/Prefix'
|
83
|
+
|
84
|
+
stack:
|
85
|
+
stack_name: MyService-<%= Time.now.to_i %>
|
86
|
+
template_body: path/to/template.yml
|
87
|
+
template_url: http://...
|
88
|
+
parameters:
|
89
|
+
# Your parameters, e.g.:
|
90
|
+
vpcid: vpc-1234
|
91
|
+
ami: ami-abcd
|
92
|
+
disable_rollback: true,
|
93
|
+
timeout_in_minutes: 1,
|
94
|
+
notification_arns: ["NotificationARN"],
|
95
|
+
capabilities: ["CAPABILITY_IAM"], # This stack does IAM stuff
|
96
|
+
on_failure: "DO_NOTHING", # either DO_NOTHING, ROLLBACK, DELETE
|
97
|
+
stack_policy_body: "StackPolicyBody",
|
98
|
+
stack_policy_url: "StackPolicyURL",
|
99
|
+
tags:
|
100
|
+
TagKey: TagValue
|
101
|
+
# Who launched this stack
|
102
|
+
Deployer: <%= ENV['USER'] %>
|
103
|
+
# Tag production and development environments for accounting
|
104
|
+
BillingType: <%= ENV['CFN_FLOW_ENVIRONMENT'] == 'production' ? 'production' : 'development' %>
|
30
105
|
```
|
31
106
|
|
32
107
|
#### Dev mode (default)
|
data/lib/cfn-flow/cli.rb
CHANGED
@@ -54,6 +54,8 @@ module CfnFlow
|
|
54
54
|
desc 'deploy ENVIRONMENT', 'Launch a stack'
|
55
55
|
method_option :cleanup, type: :boolean, desc: 'Prompt to shutdown other stacks in ENVIRONMENT after launching'
|
56
56
|
def deploy(environment)
|
57
|
+
# Export environment as an env var so it can be interpolated in config
|
58
|
+
ENV['CFN_FLOW_ENVIRONMENT'] = environment
|
57
59
|
|
58
60
|
begin
|
59
61
|
params = CfnFlow.stack_params(environment)
|
data/lib/cfn-flow/version.rb
CHANGED
data/spec/cfn-flow/cli_spec.rb
CHANGED
@@ -117,6 +117,17 @@ describe 'CfnFlow::CLI' do
|
|
117
117
|
err.must_equal ''
|
118
118
|
end
|
119
119
|
|
120
|
+
it 'exposes the environmont as an env var' do
|
121
|
+
Aws.config[:cloudformation]= {
|
122
|
+
stub_responses: {
|
123
|
+
describe_stacks: { stacks: [ stub_stack_data(stack_name: 'cfn-flow-spec-stack') ] },
|
124
|
+
describe_stack_events: { stack_events: [ stub_event_data ] },
|
125
|
+
}
|
126
|
+
}
|
127
|
+
_ = capture_io { cli.start [:deploy, 'test-env'] }
|
128
|
+
ENV['CFN_FLOW_ENVIRONMENT'].must_equal 'test-env'
|
129
|
+
end
|
130
|
+
|
120
131
|
it 'can fail with a validation error' do
|
121
132
|
Aws.config[:cloudformation]= {
|
122
133
|
stub_responses: { create_stack: 'ValidationError' }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfn-flow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Suggs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|