cfndk 0.0.1

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 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'