cfndk 0.0.7 → 0.1.2
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 +5 -5
- data/.circleci/config.yml +79 -0
- data/.gitignore +1 -1
- data/.rspec +2 -0
- data/.rspec_parallel +6 -0
- data/.simplecov +9 -0
- data/Gemfile +11 -1
- data/Gemfile.lock +815 -0
- data/README.md +269 -76
- data/bin/cfndk +3 -18
- data/cfndk.gemspec +15 -6
- data/docker/Dockerfile +8 -0
- data/docker/build.sh +3 -0
- data/docker/cfndk.sh +14 -0
- data/lib/cfndk.rb +36 -0
- data/lib/cfndk/change_set_command.rb +103 -0
- data/lib/cfndk/command.rb +125 -119
- data/lib/cfndk/config_file_loadable.rb +13 -0
- data/lib/cfndk/credential_provider_chain.rb +12 -42
- data/lib/cfndk/credential_resolvable.rb +10 -0
- data/lib/cfndk/diff.rb +38 -0
- data/lib/cfndk/global_config.rb +46 -0
- data/lib/cfndk/key_pair.rb +66 -14
- data/lib/cfndk/key_pair_command.rb +60 -0
- data/lib/cfndk/key_pairs.rb +22 -5
- data/lib/cfndk/logger.rb +12 -3
- data/lib/cfndk/stack.rb +427 -126
- data/lib/cfndk/stack_command.rb +128 -0
- data/lib/cfndk/stacks.rb +48 -22
- data/lib/cfndk/subcommand_help_returnable.rb +16 -0
- data/lib/cfndk/template_packager.rb +210 -0
- data/lib/cfndk/uuid.rb +10 -0
- data/lib/cfndk/version.rb +1 -1
- data/skel/cfndk.yml +4 -0
- data/spec/.gitignore +1 -0
- data/spec/cfndk_change_set_create_spec.rb +436 -0
- data/spec/cfndk_change_set_destroy_spec.rb +160 -0
- data/spec/cfndk_change_set_execute_spec.rb +179 -0
- data/spec/cfndk_change_set_report_spec.rb +107 -0
- data/spec/cfndk_change_set_spec.rb +37 -0
- data/spec/cfndk_create_spec.rb +504 -0
- data/spec/cfndk_destroy_spec.rb +148 -0
- data/spec/cfndk_keypiar_spec.rb +397 -0
- data/spec/cfndk_report_spec.rb +164 -0
- data/spec/cfndk_spec.rb +103 -0
- data/spec/cfndk_stack_create_spec.rb +814 -0
- data/spec/cfndk_stack_destroy_spec.rb +225 -0
- data/spec/cfndk_stack_report_spec.rb +181 -0
- data/spec/cfndk_stack_spec.rb +133 -0
- data/spec/cfndk_stack_update_spec.rb +553 -0
- data/spec/fixtures/big_vpc.yaml +533 -0
- data/spec/fixtures/empty_resource.yaml +2 -0
- data/spec/fixtures/iam.json +8 -0
- data/spec/fixtures/iam.yaml +38 -0
- data/spec/fixtures/iam_different.json +8 -0
- data/spec/fixtures/invalid_vpc.yaml +21 -0
- data/spec/fixtures/lambda_function/index.js +4 -0
- data/spec/fixtures/lambda_function/lambda_function.json +4 -0
- data/spec/fixtures/lambda_function/lambda_function.yaml +28 -0
- data/spec/fixtures/nested_stack.json +35 -0
- data/spec/fixtures/nested_stack.yaml +20 -0
- data/spec/fixtures/serverless_function/index.js +4 -0
- data/spec/fixtures/serverless_function/serverless_function.json +4 -0
- data/spec/fixtures/serverless_function/serverless_function.yaml +21 -0
- data/spec/fixtures/sg.json +8 -0
- data/spec/fixtures/sg.yaml +27 -0
- data/spec/fixtures/sg_different.yaml +22 -0
- data/spec/fixtures/stack.json +8 -0
- data/spec/fixtures/stack.template.json +39 -0
- data/spec/fixtures/stack.yaml +22 -0
- data/spec/fixtures/vpc.json +8 -0
- data/spec/fixtures/vpc.template.json +40 -0
- data/spec/fixtures/vpc.yaml +21 -0
- data/spec/fixtures/vpc_different.yaml +21 -0
- data/spec/spec_helper.rb +14 -0
- data/spec/support/aruba.rb +6 -0
- data/vagrant/Vagrantfile +89 -0
- metadata +259 -31
data/README.md
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
# AWS CloudFormation Development Kit
|
2
2
|
|
3
3
|
This is easy operation/integration support tool for AWS CloudFormation.
|
4
|
+
This tool drives DevOps and Infrastructure as Code.
|
5
|
+
|
6
|
+
[](https://circleci.com/gh/Amakata/cfndk/tree/master)
|
4
7
|
|
5
8
|
このツールは、AWS CloudFromationのための簡単な運用/構築サポートツールです。
|
6
9
|
|
7
10
|
kumogata, SparkleFormation, CoffeeFormation など、CloudFormationのテンプレートを書かずにDSLで表現するツールには様々な物があります。
|
8
11
|
しかし、これらのツールはサードパーティツールであるため、CloudFormationの対応への追従に不安がのこります。
|
9
|
-
本ツールは、標準のCloudFromation
|
10
|
-
|
12
|
+
本ツールは、標準のCloudFromationテンプレートの枠組みを変えずに、その利用を支援するツールをを目指しています。
|
13
|
+
最悪の場合、このツールが使えなくなっても僅かなコストで標準のAWS CLIを使いオペレーションを続行することが可能です
|
11
14
|
|
12
15
|
## ハイライト
|
13
16
|
|
@@ -15,14 +18,20 @@ kumogata, SparkleFormation, CoffeeFormation など、CloudFormationのテンプ
|
|
15
18
|
* 複数のスタックの依存関係を考慮した操作
|
16
19
|
* CloudFormationでバージョンコントロールシステムと連動した継続的インテグレーションのための基盤対応
|
17
20
|
* Keypairの作成/削除
|
21
|
+
* コマンド、サブコマンド、冪統性を考慮したコマンドライン体系、オプションの整理、ヘルプの追加
|
22
|
+
* チェンジセットの作成/実行/削除/レポート
|
23
|
+
* Keypair/スタック毎のregionのサポート
|
24
|
+
* 512000バイト以上の大きなテンプレートファイルの場合に自動的にS3にテンプレートファイルをアップロードして処理する機能
|
25
|
+
* aws cloudformation package相当の機能(nested templateやlambda functionの自動アップロード) (experimental)
|
26
|
+
* cfndk全体での共通設定
|
18
27
|
|
19
|
-
##
|
28
|
+
## Install
|
20
29
|
|
21
30
|
```
|
22
31
|
$ gem install cfndk
|
23
32
|
```
|
24
33
|
|
25
|
-
##
|
34
|
+
## Usage
|
26
35
|
|
27
36
|
```
|
28
37
|
$ mkdir cfn-project
|
@@ -31,11 +40,11 @@ $ cfndk init
|
|
31
40
|
$ export AWS_REGION=ap-northeast-1
|
32
41
|
$ export AWS_PROFILE=default
|
33
42
|
$ cfndk create
|
34
|
-
$ cfndk report
|
43
|
+
$ cfndk report
|
35
44
|
$ cfndk destroy -f
|
36
45
|
```
|
37
46
|
|
38
|
-
## Credentials
|
47
|
+
## Credentials configuration
|
39
48
|
|
40
49
|
次の順番でCredentialsを評価して最初に有効なCredentialsを使用します。
|
41
50
|
|
@@ -50,57 +59,32 @@ $ cfndk destroy -f
|
|
50
59
|
4. EC2/ECS Instance ProfileによるCredentials
|
51
60
|
* AWS_CONTAINER_CREDENTIALS_RELATIVE_URI環境変数が設定された場合のみECSが使われます。
|
52
61
|
|
53
|
-
##
|
54
|
-
|
55
|
-
```
|
56
|
-
cfndk [cmd] [options]
|
57
|
-
```
|
62
|
+
## Command
|
58
63
|
|
59
|
-
###
|
64
|
+
### ```init```
|
60
65
|
|
61
|
-
|
62
|
-
|
63
|
-
カレントディレクトリにcfndk.yamlのひな形を作成します。
|
66
|
+
カレントディレクトリにcfndk.ymlのひな形を作成します。
|
64
67
|
|
65
68
|
```
|
66
|
-
cfndk init
|
69
|
+
cfndk init
|
67
70
|
```
|
68
71
|
|
69
|
-
|
70
|
-
|
71
|
-
cfndk.yamlで定義されているスタックを作成します。
|
72
|
-
|
73
|
-
```
|
74
|
-
cfndk create [option]
|
75
|
-
```
|
72
|
+
### ```create```
|
76
73
|
|
77
|
-
|
74
|
+
cfndk.ymlで定義されているキーペアとスタックを作成します。
|
78
75
|
|
79
|
-
cfndk
|
76
|
+
```cfndk create [option]```
|
80
77
|
|
81
|
-
```
|
82
|
-
cfndk update [option]
|
83
|
-
```
|
84
78
|
|
85
|
-
|
79
|
+
### ```destroy```
|
86
80
|
|
87
|
-
cfndk.
|
88
|
-
チェンジセットの実行は行いません。
|
89
|
-
コマンドを実行後に手動で実行する必要があります。
|
90
|
-
|
91
|
-
```
|
92
|
-
cfndk create-or-changeset [option]
|
93
|
-
```
|
94
|
-
|
95
|
-
#### ```destroy```
|
96
|
-
|
97
|
-
cfndk.yamlで定義されているスタックを削除します。
|
81
|
+
cfndk.ymlで定義されているるキーペアとスタックを削除します。
|
98
82
|
|
99
83
|
```
|
100
84
|
cfndk destroy [option]
|
101
85
|
```
|
102
86
|
|
103
|
-
|
87
|
+
### ```generate-uuid```
|
104
88
|
|
105
89
|
UUIDを生成して標準出力に出力します。
|
106
90
|
|
@@ -117,67 +101,96 @@ cfndk destroy
|
|
117
101
|
unset CFNDK_UUID
|
118
102
|
```
|
119
103
|
|
120
|
-
|
104
|
+
### ```report```
|
121
105
|
|
122
|
-
cfndk.
|
106
|
+
cfndk.ymlで定義されているスタックについてレポートします。
|
123
107
|
|
124
|
-
|
108
|
+
```
|
109
|
+
cfndk report [option]
|
110
|
+
```
|
111
|
+
### ```keypair```
|
125
112
|
|
126
|
-
cfndk.
|
113
|
+
cfndk.ymlで定義されているキーペアの作成/削除を行うサブコマンドです。
|
114
|
+
|
115
|
+
詳細は
|
127
116
|
|
128
117
|
```
|
129
|
-
cfndk
|
118
|
+
cfndk keypair help
|
130
119
|
```
|
131
120
|
|
132
|
-
|
121
|
+
で確認できます。
|
122
|
+
|
123
|
+
### ```stack```
|
124
|
+
|
125
|
+
cfndk.ymlで定義されているスタックの作成/更新/削除/レポート/テンプレート検証を行うサブコマンドです。
|
133
126
|
|
134
|
-
|
127
|
+
詳細は
|
135
128
|
|
136
129
|
```
|
137
|
-
cfndk
|
130
|
+
cfndk stack help
|
138
131
|
```
|
139
132
|
|
140
|
-
|
133
|
+
で確認できます。
|
141
134
|
|
142
|
-
|
135
|
+
|
136
|
+
### ```changeset``` (experimental)
|
137
|
+
|
138
|
+
cfndk.ymlで定義されているスタックのチェンジセットの作成/実行/削除/レポートを行うサブコマンドです。
|
139
|
+
|
140
|
+
詳細は
|
143
141
|
|
144
142
|
```
|
145
|
-
cfndk
|
143
|
+
cfndk changeset help
|
146
144
|
```
|
147
145
|
|
148
|
-
|
146
|
+
で確認できます。
|
147
|
+
|
148
|
+
### option
|
149
149
|
|
150
150
|
#### ```-v --verbose```
|
151
151
|
|
152
152
|
実行時に詳細な情報を表示します。
|
153
153
|
|
154
|
-
#### ```-c, --
|
154
|
+
#### ```-c, --config-path=cfndk.yml```
|
155
155
|
|
156
156
|
カレントディレクトリのcfndi.ymlの代わりに、ファイルを指定します。
|
157
157
|
|
158
|
-
#### ```-p, --properties
|
158
|
+
#### ```-p, --properties=name:value```
|
159
159
|
|
160
160
|
プロパティを追加します。
|
161
161
|
cfndi.ymlのparametersのerb内で値で参照することができます。
|
162
162
|
|
163
|
-
####
|
163
|
+
#### ```-u, --uuid uuid```
|
164
164
|
|
165
|
-
UUID
|
166
|
-
UUID
|
165
|
+
スタック名、チェンジセット名に指定されたUUIDを使用します。
|
166
|
+
UUIDが指定されるとスタック名、チェンジセット名に付加されます。
|
167
167
|
またcfndi.ymlのparametersの値で参照することができます。
|
168
|
-
```-a```と```-u```は最後に指定されたものが有効になります。
|
169
168
|
|
170
|
-
|
169
|
+
スタック名は下記のようになります。
|
170
|
+
何も指定されない場合はcfndk.ymlで定義されたスタック名がそのまま使われます。
|
171
171
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
172
|
+
```[Stack Original Name]-[Stack's UUID]```
|
173
|
+
|
174
|
+
#### ```--change-set-uuid uuid```
|
175
|
+
|
176
|
+
チェンジセット名に指定されたUUIDを使用します。
|
177
|
+
UUIDが指定されるとチェンジセット名に付加されます。
|
178
|
+
|
179
|
+
このオプションが指定された場合チェンジセット名は下記のようになります。
|
180
|
+
何も指定されない場合はチェンジセット名にはスタック名がそのまま使われます。
|
176
181
|
|
177
|
-
|
182
|
+
```[Stack Name]-[Changeset's UUID]```
|
183
|
+
|
184
|
+
|
185
|
+
#### ```--stack-names=name1 name2```
|
178
186
|
|
179
187
|
指定されたスタック名のみを操作します。
|
180
188
|
|
189
|
+
#### ```--keypair-names=name1 name2```
|
190
|
+
|
191
|
+
指定されたキーペア名のみを操作します。
|
192
|
+
|
193
|
+
|
181
194
|
#### ```--no-color```
|
182
195
|
|
183
196
|
メッセージ出力でカラーを抑制します。
|
@@ -186,29 +199,45 @@ UUIDが指定されるとスタック名に付加されます。
|
|
186
199
|
|
187
200
|
動作の確認メッセージと入力をスキップします。
|
188
201
|
|
189
|
-
|
202
|
+
他にもオプションはあります。
|
203
|
+
詳細はコマンドヘルプを参照してください。
|
204
|
+
|
205
|
+
## Environment Variables
|
190
206
|
|
191
207
|
### ```CFNDK_UUID```
|
192
208
|
|
193
209
|
この環境変数が指定されている場合、```--uuid $CFNDK_UUID```が指定されたものとして動作します。
|
194
|
-
|
210
|
+
```--uuid```のほうが優先されます。
|
211
|
+
|
212
|
+
### ```CFNDK_CHANGE_SET_UUID```
|
195
213
|
|
214
|
+
この環境変数が指定されている場合、```--change-set-uuid $CFNDK_CHANGE_SET_UUID```が指定されたものとして動作します。
|
196
215
|
|
197
|
-
## cfndk.
|
216
|
+
## cfndk.yml
|
198
217
|
|
199
218
|
* example
|
200
219
|
|
201
220
|
```
|
221
|
+
global:
|
222
|
+
region: ap-northeast-1
|
223
|
+
s3_template_bucket: cfndk-templates
|
224
|
+
timeout_in_minutes: 10
|
225
|
+
role_arn: arn:aws:iam::XXXXXXXXXXX:role/XXXXXXXXXXXXX
|
226
|
+
package: true
|
227
|
+
default_profile: profile_name
|
202
228
|
keypairs:
|
203
229
|
Key1:
|
230
|
+
region: us-east-1
|
204
231
|
Key2:
|
205
232
|
key_file: key/key2<%= append_uuid %>.pem
|
206
233
|
stacks:
|
207
234
|
Stack1:
|
235
|
+
region: us-east-1
|
208
236
|
template_file: stack1/stack1.yaml
|
209
237
|
parameter_input: stack1/env.json
|
210
238
|
parameters:
|
211
239
|
VpcName: Prod<%= append_uuid %>
|
240
|
+
package: true
|
212
241
|
Stack2:
|
213
242
|
template_file: stack2/stack2.yaml
|
214
243
|
parameter_input: stack2/env.json
|
@@ -218,16 +247,29 @@ stacks:
|
|
218
247
|
- CAPABILITY_IAM
|
219
248
|
- CAPABILITY_NAMED_IAM
|
220
249
|
depends:
|
221
|
-
- Stack1
|
250
|
+
- Stack1
|
222
251
|
timeout_in_minutes: 10
|
223
252
|
```
|
224
253
|
|
225
254
|
```
|
255
|
+
global:
|
256
|
+
region: [String]
|
257
|
+
s3_template_bucket: [String]
|
258
|
+
timeout_in_minutes: [Integer]
|
259
|
+
package: [Boolean]
|
260
|
+
default_profile: [String]
|
261
|
+
pre_command: [String]
|
262
|
+
post_command: [String]
|
226
263
|
keypairs:
|
227
264
|
[String]:
|
265
|
+
region: [String]
|
228
266
|
key_file: [String]
|
267
|
+
enabled: [Boolean]
|
268
|
+
pre_command: [String]
|
269
|
+
post_command: [String]
|
229
270
|
stacks:
|
230
271
|
[String]:
|
272
|
+
region: [String]
|
231
273
|
template_file: [String]
|
232
274
|
parameter_input: [String]
|
233
275
|
parameters:
|
@@ -239,8 +281,74 @@ stacks:
|
|
239
281
|
timeout_in_minutes: [Integer]
|
240
282
|
depends:
|
241
283
|
- [String]
|
242
|
-
- [String]
|
284
|
+
- [String]
|
285
|
+
package: [Boolean]
|
286
|
+
enabled: [Boolean]
|
287
|
+
pre_command: [String]
|
288
|
+
post_command: [String]
|
289
|
+
```
|
290
|
+
|
291
|
+
### ```global:```
|
292
|
+
|
293
|
+
全体設定を定義します。
|
294
|
+
|
295
|
+
#### region (デフォルト: us-east-1)
|
296
|
+
|
297
|
+
全体で利用するリージョンを指定します。
|
298
|
+
指定されない場合は、AWS_REGION環境変数の値をリージョンとして使用します。
|
299
|
+
AWS_REGIONも指定されない場合はus-east-1を利用します。
|
300
|
+
|
301
|
+
#### timeout_in_minutes (デフォルト: 1)
|
302
|
+
|
303
|
+
全体で利用するタイムアウト時間を分で指定します。
|
304
|
+
|
305
|
+
#### role_arn
|
306
|
+
|
307
|
+
利用するロールのARN
|
308
|
+
|
309
|
+
#### s3_template_bucket (デフォルト: cfndk-templates)
|
310
|
+
|
311
|
+
スタックのCloudFormationテンプレートファイルをアップロードするS3のバケット名を指定します。
|
312
|
+
|
313
|
+
実際のバケット名は
|
314
|
+
```
|
315
|
+
[region]-[s3_template_bucket]
|
243
316
|
```
|
317
|
+
が使用されます。
|
318
|
+
regionはスタック毎で指定されたものを利用します。
|
319
|
+
|
320
|
+
S3バケットは一日で自動的に中身のオブジェクトが削除されるように設定されます。
|
321
|
+
|
322
|
+
#### package (デフォルト: false)
|
323
|
+
|
324
|
+
trueを指定した場合に、
|
325
|
+
スタックのテンプレートで、ネステッドスタックや、CloudFormationのコードがローカルパス形式で指定されている場合に
|
326
|
+
```aws cloudformation package```
|
327
|
+
相当の処理を行います。
|
328
|
+
|
329
|
+
yaml、jsonの意図しない加工がされる可能性があるためデフォルトではfalseとなっています。
|
330
|
+
|
331
|
+
例えば、```package: true```を指定して下記の様に記述すると、 ```./lambda_function``` フォルダをzipアーカイブしてS3にアップロードし、Codeを適切なS3のパスに更新します。
|
332
|
+
|
333
|
+
```
|
334
|
+
LambdaFunction:
|
335
|
+
Type: AWS::Lambda::Function
|
336
|
+
Properties:
|
337
|
+
Code: ./lambda_function
|
338
|
+
```
|
339
|
+
|
340
|
+
#### default_profile
|
341
|
+
|
342
|
+
default_profileで指定されたAWSプロファイルを利用してスタックを作成します。
|
343
|
+
AWS_PROFILE環境変数が指定された場合にはAWS_PROFILE環境変数が優先して使用されます。
|
344
|
+
|
345
|
+
#### pre_command
|
346
|
+
|
347
|
+
スタックのcreate、updateやチェンジセットのcreateで、処理の開始前に実施するコマンドを指定します。
|
348
|
+
|
349
|
+
#### post_command
|
350
|
+
|
351
|
+
スタックのcreate、updateやチェンジセットのcreateで、処理の完了後に実施するコマンドを指定します。
|
244
352
|
|
245
353
|
### ```keypairs:```
|
246
354
|
|
@@ -254,6 +362,11 @@ cfndkで管理するキーペアを定義します。
|
|
254
362
|
通常は、キーペアを作成するとこの名称が利用されます。
|
255
363
|
UUIDを利用すると、```[Keypair Original Name]-[UUID]```のような形式のキーペア名が利用されます。
|
256
364
|
|
365
|
+
#### region
|
366
|
+
|
367
|
+
キーペアのリージョンを指定します。
|
368
|
+
globalのregionより優先されます。
|
369
|
+
|
257
370
|
#### key_file
|
258
371
|
|
259
372
|
キーペア作成時にキーペアのファイルを指定された相対パスに作成します。
|
@@ -265,6 +378,17 @@ erbの記法が利用できます。
|
|
265
378
|
key_file: key/key<%= append_uuid %>.pem
|
266
379
|
```
|
267
380
|
|
381
|
+
#### enabled (デフォルト: true)
|
382
|
+
|
383
|
+
falseを指定した場合、そのkey pairを無視します
|
384
|
+
|
385
|
+
#### pre_command
|
386
|
+
|
387
|
+
ker pairのcreateの処理の開始前に実施するコマンドを指定します。
|
388
|
+
|
389
|
+
#### post_command
|
390
|
+
|
391
|
+
key pairのcreateの処理の完了後に実施するコマンドを指定します。
|
268
392
|
|
269
393
|
### ```stacks:```
|
270
394
|
|
@@ -278,13 +402,18 @@ stacksの配下には、管理するスタックのオリジナル名を定義
|
|
278
402
|
通常は、stackを作成するとこの名称が利用されます。
|
279
403
|
UUIDを利用すると、```[Stack Original Name]-[UUID]```のような形式のスタック名が利用されます。
|
280
404
|
|
405
|
+
#### region
|
406
|
+
|
407
|
+
スタックのリージョンを指定します。
|
408
|
+
globalのregionより優先されます。
|
409
|
+
|
281
410
|
#### template_file
|
282
411
|
|
283
|
-
必須。CloudFormationテンプレートファイルのパスをcfndk.
|
412
|
+
必須。CloudFormationテンプレートファイルのパスをcfndk.ymlからの相対パスで指定します。
|
284
413
|
|
285
414
|
#### parameter_input
|
286
415
|
|
287
|
-
必須。CloudFormationのパラメータJSONファイルをcfndk.
|
416
|
+
必須。CloudFormationのパラメータJSONファイルをcfndk.ymlからの相対パスで指定します。
|
288
417
|
|
289
418
|
#### parameters
|
290
419
|
|
@@ -327,7 +456,7 @@ Parameter Valueではerbの記法が利用できます。
|
|
327
456
|
スタックに依存している別のスタックを指定します。
|
328
457
|
複数指定することができます。
|
329
458
|
dependsを指定すると、create,update,create-or-changeset,destoryのコマンドを実行する際に、依存関係に従ってスタックを処理します。
|
330
|
-
dependsが循環するような指定をすることはできません。
|
459
|
+
存在しないタスタックやdependsが循環するような指定をすることはできません。
|
331
460
|
|
332
461
|
```
|
333
462
|
depends:
|
@@ -335,7 +464,29 @@ dependsが循環するような指定をすることはできません。
|
|
335
464
|
- Stack2
|
336
465
|
```
|
337
466
|
|
338
|
-
####
|
467
|
+
#### package (デフォルト: false)
|
468
|
+
|
469
|
+
trueを指定した場合に、
|
470
|
+
スタックのテンプレートで、ネステッドスタックや、CloudFormationのコードがローカルパス形式で指定されている場合に
|
471
|
+
```aws cloudformation package```
|
472
|
+
相当の処理を行います。
|
473
|
+
|
474
|
+
yaml、jsonの意図しない加工がされる可能性があるためデフォルトではfalseとなっています。
|
475
|
+
|
476
|
+
例えば、```package: true```を指定して下記の様に記述すると、 ```./lambda_function``` フォルダをzipアーカイブしてS3にアップロードし、Codeを適切なS3のパスに更新します。
|
477
|
+
|
478
|
+
```
|
479
|
+
LambdaFunction:
|
480
|
+
Type: AWS::Lambda::Function
|
481
|
+
Properties:
|
482
|
+
Code: ./lambda_function
|
483
|
+
```
|
484
|
+
|
485
|
+
#### enabled (デフォルト: true)
|
486
|
+
|
487
|
+
falseを指定した場合、そのスタックを無視します
|
488
|
+
|
489
|
+
#### timeout_in_minutes
|
339
490
|
|
340
491
|
スタックを作成する際などのタイムアウト時間を分で指定します。
|
341
492
|
|
@@ -343,20 +494,62 @@ dependsが循環するような指定をすることはできません。
|
|
343
494
|
timeout_in_minutes: 5
|
344
495
|
```
|
345
496
|
|
497
|
+
#### pre_command
|
498
|
+
|
499
|
+
スタックのcreate、updateやチェンジセットのcreateで、処理の開始前に実施するコマンドを指定します。
|
500
|
+
|
501
|
+
#### post_command
|
502
|
+
|
503
|
+
スタックのcreate、updateやチェンジセットのcreateで、処理の完了後に実施するコマンドを指定します。
|
504
|
+
|
346
505
|
|
347
506
|
### erbで使用できるメソッド
|
348
507
|
|
349
508
|
* ```append_uuid(glue='-')```
|
350
509
|
|
351
|
-
UUIDガ指定されている場合、```[glueの文字列] + [UUID]```を返します。
|
510
|
+
スタックのUUIDガ指定されている場合、```[glueの文字列] + [Stack's UUID]```を返します。
|
352
511
|
UUIDが指定されてい無い場合は空文字が返ります。
|
353
512
|
glueで接続文字を置き換えることができます。
|
354
513
|
|
355
514
|
* ```uuid```
|
356
515
|
|
357
|
-
UUIDを返します。
|
516
|
+
スタックのUUIDを返します。
|
358
517
|
UUIDが指定されてい無い場合は空文字が返ります。
|
359
518
|
|
360
519
|
* ```properties(key)```
|
361
520
|
|
362
521
|
オプション```--properties```で指定したキーに対応する値を参照することができます。
|
522
|
+
|
523
|
+
## Execution Environment
|
524
|
+
|
525
|
+
### Vagrant
|
526
|
+
|
527
|
+
Vagrantを利用してLinux環境とcfndkのインストールを行うリファレンス環境を用意しました。
|
528
|
+
|
529
|
+
```
|
530
|
+
cd vagrant
|
531
|
+
vagrant up
|
532
|
+
vagrant ssh
|
533
|
+
```
|
534
|
+
|
535
|
+
### Docker
|
536
|
+
|
537
|
+
gemで直接インストールする代わりに、Dockerコンテナを利用して、cfndkコマンドを実行できるようにします。
|
538
|
+
|
539
|
+
```
|
540
|
+
cp docker/cfndk.sh /usr/local/bin/cfndk.sh
|
541
|
+
chmod +x /usr/local/bin/cfndk.sh
|
542
|
+
AWS_PROFILE=default cfndk.sh help
|
543
|
+
```
|
544
|
+
|
545
|
+
## Test
|
546
|
+
|
547
|
+
cfndkコマンドのテストを行うことができます。
|
548
|
+
CFNDK_COVERAGE環境変数に1を設定することで、カバレッジを取ることができます。
|
549
|
+
|
550
|
+
```
|
551
|
+
export AWS_REGION=ap-northeast-1
|
552
|
+
export AWS_PROFILE=default
|
553
|
+
export CFNDK_COVERAGE=1
|
554
|
+
bundle exec rspec
|
555
|
+
```
|