cfndk 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: ab06c175fb5cdccfc94b9687d885d18b1876d6fd
4
+ data.tar.gz: a29b07a06036df653836de1b16f310e8d02c5c88
5
+ SHA512:
6
+ metadata.gz: 5e73ca3a44aeaf1d912c0fe06bc7a3c9c7b072ff1c8d6cda247f6ebd83db38ed149fb0bc3f4df7fffad9f6528c8d0a984cb5dbcf50281c7add88607c19cd6326
7
+ data.tar.gz: 4d22614faac17bfb1fce63b406d8da6b87c64ac5d2e011b4434aa7881f28eb6cbdc89610ec1f026fabee2fc6267956f642001f420e59da576a42429a3314ff38
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.rubocop.yml ADDED
@@ -0,0 +1,23 @@
1
+ AsciiComments:
2
+ Enabled: false
3
+
4
+ Metrics/LineLength:
5
+ Max: 160
6
+
7
+ Metrics/AbcSize:
8
+ Max: 30
9
+
10
+ Metrics/ClassLength:
11
+ Max: 102
12
+
13
+ Style/MethodLength:
14
+ Max: 30
15
+
16
+ Style/Documentation:
17
+ Enabled: false
18
+
19
+ AllCops:
20
+ Exclude:
21
+ - 'cookbooks/**'
22
+ - '.chef/**'
23
+ - '.bundle/**'
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in xpub.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2019 Yoshihisa AMAKATA all rights reserved.
2
+
3
+ licensed under the apache license, version 2.0 (the "license");
4
+ you may not use this file except in compliance with the license.
5
+ you may obtain a copy of the license at
6
+
7
+ http://www.apache.org/licenses/license-2.0
8
+
9
+ unless required by applicable law or agreed to in writing, software
10
+ distributed under the license is distributed on an "as is" basis,
11
+ without warranties or conditions of any kind, either express or implied.
12
+ see the license for the specific language governing permissions and
13
+ limitations under the license.
data/README-ja.md ADDED
@@ -0,0 +1,282 @@
1
+ # AWS CloudFormation Development Kit
2
+
3
+ このツールは、AWS CloudFromationのための簡単な運用/構築サポートツールです。
4
+
5
+ ## インストール
6
+
7
+ ```
8
+ $ gem install cfndk
9
+ ```
10
+
11
+ ## Credentials設定
12
+
13
+ 次の順番でCredentialsを評価して最初に有効なCredentialsを使用します。
14
+
15
+ 1. access key、secret access key、session token環境変数よるCredentials
16
+ * ACCESS_KEYで利用される環境変数名: AWS_ACCESS_KEY_ID AMAZON_ACCESS_KEY_ID AWS_ACCESS_KEY
17
+ * SECRET_ACCESS_KEYで利用される環境変数名: AWS_SECRET_ACCESS_KEY AMAZON_SECRET_ACCESS_KEY AWS_SECRET_KEY
18
+ * SESSION_TOKEで利用される環境変数名: AWS_SESSION_TOKEN AMAZON_SESSION_TOKEN
19
+ 2. AWS_PROFILE環境変数によるProfileのaccess key、secret access key、session tokenによるCredentials
20
+ * 環境変数が指定されない場合は、defaultが利用されます。
21
+ 3. AWS_PROFILE環境変数によるProfileのcredential_processによるCredentials
22
+ * 環境変数が指定されない場合は、defaultが利用されます。
23
+ 4. EC2/ECS Instance ProfileによるCredentials
24
+ * AWS_CONTAINER_CREDENTIALS_RELATIVE_URI環境変数が設定された場合のみECSが使われます。
25
+
26
+ ## コマンド
27
+
28
+ ```
29
+ cfndk [cmd] [options]
30
+ ```
31
+
32
+ ### [cmd]
33
+
34
+ #### 初期化
35
+
36
+ カレントディレクトリにcfndk.yamlのひな形を作成します。
37
+
38
+ ```
39
+ cfndk init [option]
40
+ ```
41
+
42
+ #### スタックの作成
43
+
44
+ cfndk.yamlで定義されているスタックを作成します。
45
+
46
+ ```
47
+ cfndk create [option]
48
+ ```
49
+
50
+ #### スタック更新
51
+
52
+ cfndk.yamlで定義されているスタックを更新します。
53
+
54
+ ```
55
+ cfndk update [option]
56
+ ```
57
+
58
+ #### スタックの作成、changeset作成
59
+
60
+ cfndk.yamlで定義されているスタックが存在しない場合は作成を、存在する場合はチェンジセットを作成します。
61
+ チェンジセットの実行は行いません。
62
+ コマンドを実行後に手動で実行する必要があります。
63
+
64
+ ```
65
+ cfndk create-or-changeset [option]
66
+ ```
67
+
68
+ #### スタックの破壊
69
+
70
+ cfndk.yamlで定義されているスタックを削除します。
71
+
72
+ ```
73
+ cfndk destroy [option]
74
+ ```
75
+
76
+ #### UUIDの生成
77
+
78
+ UUIDを生成して標準出力に出力します。
79
+
80
+ ```
81
+ cfndk generate-uuid
82
+ ```
83
+
84
+ 例えば次のような使い方をします。
85
+
86
+ ```
87
+ export CFNDK_UUID=`cfndk generate-uuid`
88
+ cfndk create
89
+ cfndk destroy
90
+ ```
91
+
92
+ #### スタックのイベントのレポート
93
+
94
+ cfndk.yamlで定義されているスタックのイベント情報をレポートします。
95
+
96
+ ```
97
+ cfndk report-event [option]
98
+ ```
99
+
100
+ #### スタックのスタックのレポート
101
+
102
+ cfndk.yamlで定義されているスタックの情報をレポートします。
103
+
104
+ ```
105
+ cfndk report-stack [option]
106
+ ```
107
+
108
+ #### スタックのスタックリソースのレポート
109
+
110
+ cfndk.yamlで定義されているスタックのリソース情報をレポートします。
111
+
112
+ ```
113
+ cfndk report-stack-resource [option]
114
+ ```
115
+
116
+ ### [option]
117
+
118
+ #### -v --verbose
119
+
120
+ 実行時に詳細な情報を表示します。
121
+
122
+ #### -c, --config_path <cfndi.yml>
123
+
124
+ カレントディレクトリのcfndi.ymlの代わりに、ファイルを指定します。
125
+
126
+ #### -p, --properties <name>=<value>
127
+
128
+ プロパティを追加します。
129
+ cfndi.ymlのparametersの値で参照することができます。
130
+
131
+ #### -a, --auto-uuid
132
+
133
+ UUIDを自動生成し使用します。
134
+ UUIDが指定されるとスタック名に付加されます。
135
+ またcfndi.ymlのparametersの値で参照することができます。
136
+ ```-a```と```-u```は最後に指定されたものが有効になります。
137
+
138
+ #### -u, --uuid <uuid>
139
+
140
+ 指定されたUUIDを使用します。
141
+ UUIDが指定されるとスタック名に付加されます。
142
+ またcfndi.ymlのparametersの値で参照することができます。
143
+ ```-a```と```-u```は最後に指定されたものが有効になります。
144
+
145
+
146
+ ## 環境変数
147
+
148
+ ### CFNDK_UUID
149
+
150
+ この環境変数が指定されている場合、```--uuid $CFNDK_UUID```が指定されたものとして動作します。
151
+ ```-a```や```-u```のほうが優先されます。
152
+
153
+
154
+ ## cfndk.yaml
155
+
156
+ * example
157
+
158
+ ```
159
+ stacks:
160
+ Stack2:
161
+ template_file: stack2/stack2.yaml
162
+ parameter_input: stacn2/env.json
163
+ parameters:
164
+ VpcName: Prod<%= append_uuid %>
165
+ capabilities:
166
+ - CAPABILITY_IAM
167
+ - CAPABILITY_NAMED_IAM
168
+ depends:
169
+ - Stack1
170
+ timeout_in_minutes: 10
171
+ ```
172
+
173
+ ```
174
+ stacks:
175
+ [String]:
176
+ template_file: [String]
177
+ parameter_input: [String]
178
+ parameters:
179
+ [String]: [String]
180
+ [String]: [String]
181
+ capabilities:
182
+ - [String]
183
+ - [String]
184
+ timeout_in_minutes: [Integer]
185
+ depends:
186
+ - [String]
187
+ - [String]
188
+ ```
189
+
190
+ ### ```stacks:```
191
+
192
+ ```
193
+ stacks:
194
+ [Stack Original Name]:
195
+ ```
196
+
197
+ cfndkで管理するスタックを定義します。
198
+ stacksの配下には、管理するスタックのオリジナル名を定義します。
199
+ 通常は、stackを作成するとこの名称が利用されます。
200
+ UUIDを利用すると、```[Stack Original Name]-[UUID]```のような形式のスタック名が利用されます。
201
+
202
+ #### template_file
203
+
204
+ 必須。CloudFormationテンプレートファイルのパスをcfndk.yamlからの相対パスで指定します。
205
+
206
+ #### parameter_input
207
+
208
+ 必須。CloudFormationのパラメータJSONをcfndk.yamlからの相対パスで指定します。
209
+
210
+ #### parameters
211
+
212
+ parameter_inputのJSONの値を上書きした場合に指定します。
213
+ 複数指定することができます。
214
+
215
+ ```
216
+ parameters:
217
+ [Parameter Key1]: [Parameter Value1]
218
+ [Parameter Key2]: [Parameter Value2]
219
+ ```
220
+
221
+ Parameter Valueではerbの記法が利用できます。
222
+
223
+ ```
224
+ parameters:
225
+ VpcName: Prod<%= append_uuid %>
226
+ ```
227
+
228
+ ##### parametrsのerbで使用できるメソッド
229
+
230
+ * ```append_uuid(glue='-')```
231
+
232
+ UUIDガ指定されている場合、```[glueの文字列] + [UUID]```を返します。
233
+ UUIDが指定されてい無い場合は空文字が返ります。
234
+ glueで接続文字を置き換えることができます。
235
+
236
+ * ```uuid```
237
+
238
+ UUIDを返します。
239
+ UUIDが指定されてい無い場合は空文字が返ります。
240
+
241
+ * ```properties(key)```
242
+
243
+ オプション```--properties```で指定したキーに対応する値を参照することができます。
244
+
245
+ #### capabilities
246
+
247
+ スタックを操作するcapabilitiesを指定します。
248
+ 複数指定することができます。
249
+
250
+ ```
251
+ capabilities:
252
+ - CAPABILITY_IAM
253
+ - CAPABILITY_NAMED_IAM
254
+ ```
255
+
256
+ 以下の値を指定することができます。
257
+
258
+ * CAPABILITY_IAM
259
+ * CAPABILITY_NAMED_IAM
260
+ * CAPABILITY_AUTO_EXPAND
261
+
262
+
263
+ #### depends
264
+
265
+ スタックに依存している別のスタックを指定します。
266
+ 複数指定することができます。
267
+ dependsを指定すると、create,update,create-or-changeset,destoryのコマンドを実行する際に、依存関係に従ってスタックを処理します。
268
+ dependsが循環するような指定をすることはできません。
269
+
270
+ ```
271
+ depends:
272
+ - Stack1
273
+ - Stack2
274
+ ```
275
+
276
+ #### timeout_in_minutes (デフォルト: 1)
277
+
278
+ スタックを作成する際などのタイムアウト時間を分で指定します。
279
+
280
+ ```
281
+ timeout_in_minutes: 5
282
+ ```
data/README.md ADDED
@@ -0,0 +1,288 @@
1
+ # AWS CloudFormation Development Kit
2
+
3
+ This is easy operation/integration support tool for AWS CloudFormation.
4
+ このツールは、AWS CloudFromationのための簡単な運用/構築サポートツールです。
5
+
6
+ ## インストール
7
+
8
+ ```
9
+ $ gem install cfndk
10
+ ```
11
+
12
+ ## Credentials設定
13
+
14
+ 次の順番でCredentialsを評価して最初に有効なCredentialsを使用します。
15
+
16
+ 1. access key、secret access key、session token環境変数よるCredentials
17
+ * ACCESS_KEYで利用される環境変数名: AWS_ACCESS_KEY_ID AMAZON_ACCESS_KEY_ID AWS_ACCESS_KEY
18
+ * SECRET_ACCESS_KEYで利用される環境変数名: AWS_SECRET_ACCESS_KEY AMAZON_SECRET_ACCESS_KEY AWS_SECRET_KEY
19
+ * SESSION_TOKEで利用される環境変数名: AWS_SESSION_TOKEN AMAZON_SESSION_TOKEN
20
+ 2. AWS_PROFILE環境変数によるProfileのaccess key、secret access key、session tokenによるCredentials
21
+ * 環境変数が指定されない場合は、defaultが利用されます。
22
+ 3. AWS_PROFILE環境変数によるProfileのcredential_processによるCredentials
23
+ * 環境変数が指定されない場合は、defaultが利用されます。
24
+ 4. EC2/ECS Instance ProfileによるCredentials
25
+ * AWS_CONTAINER_CREDENTIALS_RELATIVE_URI環境変数が設定された場合のみECSが使われます。
26
+
27
+ ## コマンド
28
+
29
+ ```
30
+ cfndk [cmd] [options]
31
+ ```
32
+
33
+ ### [cmd]
34
+
35
+ #### 初期化
36
+
37
+ カレントディレクトリにcfndk.yamlのひな形を作成します。
38
+
39
+ ```
40
+ cfndk init [option]
41
+ ```
42
+
43
+ #### スタックの作成
44
+
45
+ cfndk.yamlで定義されているスタックを作成します。
46
+
47
+ ```
48
+ cfndk create [option]
49
+ ```
50
+
51
+ #### スタック更新
52
+
53
+ cfndk.yamlで定義されているスタックを更新します。
54
+
55
+ ```
56
+ cfndk update [option]
57
+ ```
58
+
59
+ #### スタックの作成、changeset作成
60
+
61
+ cfndk.yamlで定義されているスタックが存在しない場合は作成を、存在する場合はチェンジセットを作成します。
62
+ チェンジセットの実行は行いません。
63
+ コマンドを実行後に手動で実行する必要があります。
64
+
65
+ ```
66
+ cfndk create-or-changeset [option]
67
+ ```
68
+
69
+ #### スタックの破壊
70
+
71
+ cfndk.yamlで定義されているスタックを削除します。
72
+
73
+ ```
74
+ cfndk destroy [option]
75
+ ```
76
+
77
+ #### UUIDの生成
78
+
79
+ UUIDを生成して標準出力に出力します。
80
+
81
+ ```
82
+ cfndk generate-uuid
83
+ ```
84
+
85
+ 例えば次のような使い方をします。
86
+
87
+ ```
88
+ export CFNDK_UUID=`cfndk generate-uuid`
89
+ cfndk create
90
+ cfndk destroy
91
+ ```
92
+
93
+ #### スタックのイベントのレポート
94
+
95
+ cfndk.yamlで定義されているスタックのイベント情報をレポートします。
96
+
97
+ ```
98
+ cfndk report-event [option]
99
+ ```
100
+
101
+ #### スタックのスタックのレポート
102
+
103
+ cfndk.yamlで定義されているスタックの情報をレポートします。
104
+
105
+ ```
106
+ cfndk report-stack [option]
107
+ ```
108
+
109
+ #### スタックのスタックリソースのレポート
110
+
111
+ cfndk.yamlで定義されているスタックのリソース情報をレポートします。
112
+
113
+ ```
114
+ cfndk report-stack-resource [option]
115
+ ```
116
+
117
+ ### [option]
118
+
119
+ #### -v --verbose
120
+
121
+ 実行時に詳細な情報を表示します。
122
+
123
+ #### -c, --config_path <cfndi.yml>
124
+
125
+ カレントディレクトリのcfndi.ymlの代わりに、ファイルを指定します。
126
+
127
+ #### -p, --properties <name>=<value>
128
+
129
+ プロパティを追加します。
130
+ cfndi.ymlのparametersの値で参照することができます。
131
+
132
+ #### -a, --auto-uuid
133
+
134
+ UUIDを自動生成し使用します。
135
+ UUIDが指定されるとスタック名に付加されます。
136
+ またcfndi.ymlのparametersの値で参照することができます。
137
+ ```-a```と```-u```は最後に指定されたものが有効になります。
138
+
139
+ #### -u, --uuid <uuid>
140
+
141
+ 指定されたUUIDを使用します。
142
+ UUIDが指定されるとスタック名に付加されます。
143
+ またcfndi.ymlのparametersの値で参照することができます。
144
+ ```-a```と```-u```は最後に指定されたものが有効になります。
145
+
146
+
147
+ ## 環境変数
148
+
149
+ ### CFNDK_UUID
150
+
151
+ この環境変数が指定されている場合、```--uuid $CFNDK_UUID```が指定されたものとして動作します。
152
+ ```-a```や```-u```のほうが優先されます。
153
+
154
+
155
+ ## cfndk.yaml
156
+
157
+ * example
158
+
159
+ ```
160
+ stacks:
161
+ Stack2:
162
+ template_file: stack2/stack2.yaml
163
+ parameter_input: stacn2/env.json
164
+ parameters:
165
+ VpcName: Prod<%= append_uuid %>
166
+ capabilities:
167
+ - CAPABILITY_IAM
168
+ - CAPABILITY_NAMED_IAM
169
+ depends:
170
+ - Stack1
171
+ timeout_in_minutes: 10
172
+ ```
173
+
174
+ ```
175
+ stacks:
176
+ [String]:
177
+ template_file: [String]
178
+ parameter_input: [String]
179
+ parameters:
180
+ [String]: [String]
181
+ [String]: [String]
182
+ capabilities:
183
+ - [String]
184
+ - [String]
185
+ timeout_in_minutes: [Integer]
186
+ depends:
187
+ - [String]
188
+ - [String]
189
+ ```
190
+
191
+ ### ```stacks:```
192
+
193
+ ```
194
+ stacks:
195
+ [Stack Original Name]:
196
+ ```
197
+
198
+ cfndkで管理するスタックを定義します。
199
+ stacksの配下には、管理するスタックのオリジナル名を定義します。
200
+ 通常は、stackを作成するとこの名称が利用されます。
201
+ UUIDを利用すると、```[Stack Original Name]-[UUID]```のような形式のスタック名が利用されます。
202
+
203
+ #### template_file
204
+
205
+ 必須。CloudFormationテンプレートファイルのパスをcfndk.yamlからの相対パスで指定します。
206
+
207
+ #### parameter_input
208
+
209
+ 必須。CloudFormationのパラメータJSONをcfndk.yamlからの相対パスで指定します。
210
+
211
+ #### parameters
212
+
213
+ parameter_inputのJSONの値を上書きした場合に指定します。
214
+ 複数指定することができます。
215
+
216
+ ```
217
+ parameters:
218
+ [Parameter Key1]: [Parameter Value1]
219
+ [Parameter Key2]: [Parameter Value2]
220
+ ```
221
+
222
+ Parameter Valueではerbの記法が利用できます。
223
+
224
+ ```
225
+ parameters:
226
+ VpcName: Prod<%= append_uuid %>
227
+ ```
228
+
229
+ ##### parametrsのerbで使用できるメソッド
230
+
231
+ * ```append_uuid(glue='-')```
232
+
233
+ UUIDガ指定されている場合、```[glueの文字列] + [UUID]```を返します。
234
+ UUIDが指定されてい無い場合は空文字が返ります。
235
+ glueで接続文字を置き換えることができます。
236
+
237
+ * ```uuid```
238
+
239
+ UUIDを返します。
240
+ UUIDが指定されてい無い場合は空文字が返ります。
241
+
242
+ * ```properties(key)```
243
+
244
+ オプション```--properties```で指定したキーに対応する値を参照することができます。
245
+
246
+ #### capabilities
247
+
248
+ スタックを操作するcapabilitiesを指定します。
249
+ 複数指定することができます。
250
+
251
+ ```
252
+ capabilities:
253
+ - CAPABILITY_IAM
254
+ - CAPABILITY_NAMED_IAM
255
+ ```
256
+
257
+ 以下の値を指定することができます。
258
+
259
+ * CAPABILITY_IAM
260
+ * CAPABILITY_NAMED_IAM
261
+ * CAPABILITY_AUTO_EXPAND
262
+
263
+
264
+ #### depends
265
+
266
+ スタックに依存している別のスタックを指定します。
267
+ 複数指定することができます。
268
+ dependsを指定すると、create,update,create-or-changeset,destoryのコマンドを実行する際に、依存関係に従ってスタックを処理します。
269
+ dependsが循環するような指定をすることはできません。
270
+
271
+ ```
272
+ depends:
273
+ - Stack1
274
+ - Stack2
275
+ ```
276
+
277
+ #### timeout_in_minutes (デフォルト: 1)
278
+
279
+ スタックを作成する際などのタイムアウト時間を分で指定します。
280
+
281
+ ```
282
+ timeout_in_minutes: 5
283
+ ```
284
+
285
+
286
+
287
+
288
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'