kumo_keisei 5.0.0 → 5.1.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 +14 -82
- data/VERSION +1 -1
- data/lib/kumo_keisei/cloud_formation_stack.rb +0 -2
- data/lib/kumo_keisei/stack.rb +0 -1
- data/spec/lib/kumo_keisei/cloud_formation_stack_spec.rb +0 -12
- data/spec/lib/kumo_keisei/stack_spec.rb +0 -11
- 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: 7cd6cb846e9cbaad89a734ed34dd90123fc0c4b5
|
4
|
+
data.tar.gz: f3f9617c67b0d4161ccb7c80c1bab2a7e5d093fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c759fbfdf680d1116d917704570013ba0b5480be4fc721c8a3d0dae82bba19a26b8fcc8cef6ad344c1e3c764a69356b7ee06dc538de04b220e3ea7ff125f8a2c
|
7
|
+
data.tar.gz: aef536766cff0008bd1141bae4b798905387f7b76ec4810680cdcc1d452157edd278f511cf7d80e01949f27fd80c405be3585fc65025d6682c20640f76b9d0bf
|
data/README.md
CHANGED
@@ -4,8 +4,6 @@ A collection of utilities wrapping the libraries for dealing with AWS Cloud Form
|
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
This gem is automatically installed in the rbdevtools container, so any `apply-env` or `deploy` scripts have access to it.
|
8
|
-
|
9
7
|
Add this line to your application's Gemfile:
|
10
8
|
|
11
9
|
```ruby
|
@@ -24,7 +22,7 @@ Or install it yourself as:
|
|
24
22
|
|
25
23
|
### Basic Usage
|
26
24
|
|
27
|
-
The basic usage will give you a CloudFormation stack named `{application}-{environment}`.
|
25
|
+
The basic usage will give you a CloudFormation stack named `{application}-{environment}`.
|
28
26
|
|
29
27
|
```ruby
|
30
28
|
application_name = "myapp"
|
@@ -41,11 +39,7 @@ my_stack.apply! stack_config
|
|
41
39
|
|
42
40
|
### Stack Naming
|
43
41
|
|
44
|
-
We are using APPNAME-ENVNAME (e.g `redbubble-staging`) as our naming convention
|
45
|
-
|
46
|
-
0. Login into the AWS console and find out what your stack is named.
|
47
|
-
0. Update your app name (see Basic Usage above) in the apply-env script to match your existing stack name's app name part (which is everything before the environment name, e.g `redbubble-nodes` in `redbubble-nodes-staging`)
|
48
|
-
|
42
|
+
We are using APPNAME-ENVNAME (e.g `redbubble-staging`) as our naming convention for cloudformation stacks.
|
49
43
|
|
50
44
|
### Timeouts
|
51
45
|
|
@@ -96,93 +90,31 @@ stack_config = {
|
|
96
90
|
stack.apply!(stack_config)
|
97
91
|
```
|
98
92
|
|
99
|
-
### Getting the configuration and secrets without an `apply!`
|
100
|
-
|
101
|
-
If you need to inspect the configuration without applying a stack, call `config`:
|
102
|
-
```ruby
|
103
|
-
stack_config = {
|
104
|
-
config_path: File.join('/app', 'env', 'config'),
|
105
|
-
template_path: File.join('/app', 'env', 'cloudformation', 'myapp.json'),
|
106
|
-
injected_config: {
|
107
|
-
'Seed' => random_seed,
|
108
|
-
}
|
109
|
-
}
|
110
|
-
marshalled_config = stack.config(stack_config)
|
111
|
-
marshalled_secrets = stack.plain_text_secrets(stack_config)
|
112
|
-
|
113
|
-
if marshalled_config['DB_HOST'].start_with? '192.' then
|
114
|
-
passwd = marshalled_secrets['DB_PASS']
|
115
|
-
...
|
116
|
-
end
|
117
|
-
```
|
118
|
-
|
119
93
|
## Upgrading from `KumoKeisei::CloudFormationStack` to `KumoKeisei::Stack`
|
120
94
|
|
121
|
-
`KumoKeisei::CloudFormationStack` is deprecated and should be replaced with a `KumoKeisei::Stack` which
|
95
|
+
`KumoKeisei::CloudFormationStack` is deprecated and should be replaced with a `KumoKeisei::Stack` which has an environment object (`KumoConfig::EnvironmentConfig`).
|
122
96
|
|
123
|
-
Previously you would
|
97
|
+
Previously you would pass through cloudformation template and json parameter files directly.
|
124
98
|
|
125
|
-
E.g
|
99
|
+
E.g.:
|
126
100
|
```ruby
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
stack = CloudFormationStack.new(environment_name)
|
132
|
-
stack.apply
|
133
|
-
```
|
134
|
-
and `cloudformation_stack.rb`:
|
135
|
-
```ruby
|
136
|
-
require 'kumo_keisei'
|
137
|
-
|
138
|
-
class CloudFormationStack
|
139
|
-
|
140
|
-
APP_NAME = "fooapp"
|
141
|
-
|
142
|
-
attr_reader :env_name
|
143
|
-
|
144
|
-
def initialize(env_name)
|
145
|
-
@stacks = {}
|
146
|
-
@env_name = env_name
|
147
|
-
end
|
148
|
-
|
149
|
-
def env_vars
|
150
|
-
{}
|
151
|
-
end
|
152
|
-
|
153
|
-
def apply
|
154
|
-
# Inject the VPC and Subnets into the application's environment config
|
155
|
-
foo_config = KumoKeisei::EnvironmentConfig.new(
|
156
|
-
env_name: env_name,
|
157
|
-
config_dir_path: File.expand_path(File.join("..", "..", "env", "config"), __FILE__)
|
158
|
-
)
|
159
|
-
|
160
|
-
foo_stack = create_stack(:foo, foo_config)
|
161
|
-
foo_stack.apply!
|
162
|
-
end
|
163
|
-
...
|
164
|
-
def create_stack(stack_name, environment_config)
|
165
|
-
raise "Stack '#{ stack_name }' already exists!" if @stacks[stack_name]
|
166
|
-
params_template_erb = params_template(stack_name)
|
167
|
-
stack_values = cf_params_json(get_stack_params(params_template_erb, environment_config))
|
168
|
-
write_stack_params_file(stack_values, stack_name)
|
169
|
-
@stacks[stack_name] = KumoKeisei::CloudFormationStack.new(stack_names[stack_name], "./env/cloudformation/#{stack_name}.json", stack_file_params_file_path(stack_name))
|
170
|
-
end
|
171
|
-
...
|
101
|
+
app_name = "foo"
|
102
|
+
environment_name = "staging"
|
103
|
+
stack = KumoKeisei::CloudFormationStack.new("#{app_name}-#{environment_name}", "./cloudformation/#{app_name}.json", "./cloudformation/#{environment_name}.json")
|
104
|
+
stack.apply!
|
172
105
|
```
|
173
106
|
|
174
|
-
With the new `Stack` object,
|
107
|
+
With the new `Stack` object, you need to pass in the location of the template and config:
|
175
108
|
```ruby
|
176
|
-
|
177
|
-
|
178
|
-
environment_name = ARGV.fetch(0) rescue raise("Error! No environment name given!")
|
109
|
+
app_name = "foo"
|
110
|
+
environment_name = "staging"
|
179
111
|
|
180
112
|
stack_config = {
|
181
113
|
config_path: File.join('/app', 'env', 'config'),
|
182
|
-
template_path: File.join('/app', 'env', 'cloudformation', '
|
114
|
+
template_path: File.join('/app', 'env', 'cloudformation', '#{app_name}.json'),
|
183
115
|
}
|
184
116
|
|
185
|
-
stack = KumoKeisei::Stack.new(
|
117
|
+
stack = KumoKeisei::Stack.new(app_name, environment_name)
|
186
118
|
stack.apply!(stack_config)
|
187
119
|
```
|
188
120
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.
|
1
|
+
5.1.0
|
@@ -115,8 +115,6 @@ module KumoKeisei
|
|
115
115
|
end
|
116
116
|
|
117
117
|
def create!(dynamic_params)
|
118
|
-
raise StackValidationError.new("The stack name needs to be 32 characters or shorter") if @stack_name.length > 32
|
119
|
-
|
120
118
|
cloudformation_params = ParameterBuilder.new(dynamic_params, @stack_params_filepath).params
|
121
119
|
cloudformation.create_stack(
|
122
120
|
stack_name: @stack_name,
|
data/lib/kumo_keisei/stack.rb
CHANGED
@@ -195,18 +195,6 @@ describe KumoKeisei::CloudFormationStack do
|
|
195
195
|
|
196
196
|
subject.apply!
|
197
197
|
end
|
198
|
-
|
199
|
-
context "a stack name that is too long" do
|
200
|
-
let(:stack_name) { "long-stack-name-that-will-make-aws-barf" }
|
201
|
-
|
202
|
-
it "blows up since the ELB names have to be 32 or shorter" do
|
203
|
-
allow(cloudformation).to receive(:wait_until).with(:stack_update_complete, stack_name: stack_name)
|
204
|
-
allow(cloudformation).to receive(:update_stack)
|
205
|
-
allow(subject).to receive(:updatable?).and_return(false)
|
206
|
-
|
207
|
-
expect { subject.apply! }.to raise_error(KumoKeisei::StackValidationError, "The stack name needs to be 32 characters or shorter")
|
208
|
-
end
|
209
|
-
end
|
210
198
|
end
|
211
199
|
|
212
200
|
describe "#outputs" do
|
@@ -232,17 +232,6 @@ describe KumoKeisei::Stack do
|
|
232
232
|
subject.apply!(stack_config)
|
233
233
|
end
|
234
234
|
|
235
|
-
context "a stack name that is too long" do
|
236
|
-
let(:app_name) { "this-will-create-a-very-long-stack-name-that-will-break-aws" }
|
237
|
-
|
238
|
-
it "blows up since the ELB names have to be 32 or shorter" do
|
239
|
-
allow(cloudformation).to receive(:wait_until).with(:stack_update_complete, stack_name: stack_name)
|
240
|
-
allow(cloudformation).to receive(:update_stack)
|
241
|
-
allow(subject).to receive(:updatable?).and_return(false)
|
242
|
-
|
243
|
-
expect { subject.apply!(stack_config) }.to raise_error(KumoKeisei::StackValidationError, "The stack name needs to be 32 characters or shorter")
|
244
|
-
end
|
245
|
-
end
|
246
235
|
end
|
247
236
|
|
248
237
|
describe "#outputs" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kumo_keisei
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Redbubble
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|