単一vpc内のオブジェクトをcloudformationテンプレートに落とし込むものです。 コピペで動かします。
aws の cloudformationは一度作ってしまえば、別のvpcにでも別のアカウントにでも、簡単に同じ構成が再現できてとても便利。 なんだけど、作るのがとてもめんどくさい。 現物 to cloudformation のコンバートスクリプトを作っていく。 「決まりごと」によってスクリプトを簡単にできるなら「決まりごと」で対応していこうとおもう。 mac osxでしか動かしていない。
- もちろん単純にバックアップ。
- ドキュメント化するのがめんどくさい時にとりあえずお茶を濁す。
- 開発と本番設置が完全に分かれていて、本番設置を人に頼まなくてはいけないような時。
- Name をcloudformation の論理名命名規則に従う。大文字で始まるキャメルケース。
- Nameは絶対に入れる。
- Nameはvpc内でかぶらないようにする。(InstanceNamae,SubnetNamae,SgNamae などと頭にタイプをつけるとかぶりにくい。)
- Nameに通し番号をつける場合は最後に直接つける。0でパディングしたりしない。(例 InstanceNamae1 , InstanceNamae2 などとする。)
- グローバルに繋がる部分は手動でやる。グローバルIP,ELB,SourceDestCheck 等 (危険防止)
- Noneという文字列は使わない。
- [Instance] ローカルIpアドレスを複数持たさない。
- 単一vpcのコンバートとする
- Name はcloudformation の論理名命名規則に準拠しておくと出来上がったcloudformationテンプレートが読みやすい。準拠していない場合は適当に処理される。
- 対象とする vpcId は BENRI_AWS_TARGET_VPC_ID を見る。export しておく。
- タグに aws:cloudformation:logical-id が入っていたら、そちらを優先して cloudformation 論理名としてつかう。<廃止するかも。
- [Instance] ローカルIpアドレスを複数持つもたない
- サブネット
- セキュリティーグループ
- ルーティングと関連付け(インスタンス向けを含まない)
- インスタンス
- ルーティングと関連付け(インスタンス向け)
- まるっと一発で全部
出来上がったテンプレートには上下関係があります。
たとえば、サブネットがなくてはインスタンスができないと言ったような。
以下に順序を示す
サブネット セキュリティーグループ <どちらが先でもよろしい
ルーティングと関連付け(インスタンス向けを含まない)
インスタンス
ルーティングと関連付け(インスタンス向け)
- コピペで貼り付けて動かす。
- できるだけPOSIXに近づけよう!(できるだけね。POSIX準拠しか使えない人が改造する時に楽にしよう)