Slide 1

Slide 1 text

CloudFormationで管理された システムの変更で エラー連発した話 2021/07/22(木) JAWS-UG CLI専門支部 #188R CloudFormation入門

Slide 2

Slide 2 text

目次 • 背景 • 奮闘記 • ここまで試行錯誤して • CloudFormation難点 • CloudFormationのユースケース

Slide 3

Slide 3 text

背景 好きなAWSサービスは CloudFormationです! ←私 • よくLTで聞くセリフ

Slide 4

Slide 4 text

経緯 • 前任者異動済み、システムについて何も知らない システムを利用する ユーザが変わったり 増えたりするので、 アクセス元IPの 変更をお願いします 奮闘記

Slide 5

Slide 5 text

• マネジメントコンソールからEC2にとんで~ セキュリティグループ変えよう 奮闘記

Slide 6

Slide 6 text

セキュリティグループ変えよう 実機とCFnテンプレートに 差異が出たらまずそう AWSソリューションアーキテクトアソシ エイトの勉強で「ドリフト」という単語 は知っていた (前任者の神の声) CloudFormationテンプレートが あるのでそれを変更 してください 奮闘記

Slide 7

Slide 7 text

CFnテンプレートを変更して適用 しよう • Systems Managerのパラメータを定義している yamlファイルあり • このパラメータのNWセグメントを追加・変更 すればいいんだ! 奮闘記 既に探すのが つらい

Slide 8

Slide 8 text

もちろんエラー • SSMパラメータで定義したNWセグメントがセ キュリティグループで使用されている(紐づい ている)ためエラー 192.168.10.0/24 奮闘記 ~in useなんちゃらというエラーが出ます

Slide 9

Slide 9 text

もちろんエラー • SSMパラメータで定義したNWセグメントがセ キュリティグループで使用されている(紐づい ている)ためエラー いったん変更する必要がある パラメータを使っている部分 をコメントアウトします 奮闘記 めんどくさい やり方これで あってる?

Slide 10

Slide 10 text

セキュリティルールを追加したら… • 既存のセキュリティグループのルール数が多す ぎてセキュリティルールを追加したらなんと上 限60超えた • AWSに上限緩和申請している時間がなかった • とりあえずセキュリティグループをもう一つ作 成してEC2に適用することにした (公式ドキュメント) Amazon VPC クォータ https://docs.aws.amazon.com/ja_j p/vpc/latest/userguide/amazon- vpc-limits.html 奮闘記

Slide 11

Slide 11 text

セキュリティグループを追加してEC2 のスタックを更新しようとしたら… • EC2を置換(既存EC2を削除して新しいEC2を作 ろうとする挙動)しそうになった 奮闘記 本番で動いてるインスタンス削除 したら大事故になるのでは…? またどこか紐づいてる… • 試しに検証環境でスタック更新を回したところ、 EC2のIPアドレスが別のパラメータと紐づいて いたため結局エラーで止まる

Slide 12

Slide 12 text

• セキュリティグループの紐づけだけ手動で実施 した • CFnテンプレートはドリフトしないのでこれで よしとした セキュリティグループを追加してEC2 のスタックを更新しようとしたら… 奮闘記

Slide 13

Slide 13 text

ここまで試行錯誤して • エラーを起こさないようにCFnテンプレートの 変更と環境変更を実施するには 1. 変更すべきパラメータを探し出す 2. 変更すべきパラメータに紐づいた部分を コメントアウトしスタック変更 3. パラメータを変更してスタック変更 4. コメントアウトした部分を戻してスタック変更 ↑これを初手でやるのはきつい ベストプラクティスではなさそう…

Slide 14

Slide 14 text

「ドリフト検出」 • 実環境とCFnテンプレートでリソースの差分を検出す る機能 • 手動で修正した箇所に差異がないかチェックするの に便利なツールではある • 差分を自動で修正してくれる機能はないので結局自 分で修正する必要がある • ドリフト検出サポートしていないサービスもあるら しい 使える機能 (公式ドキュメント) インポートおよびドリフト検出オペ レーションをサポートするリソース https://docs.aws.amazon.com/ja_jp/AW SCloudFormation/latest/UserGuide/reso urce-import-supported-resources.html

Slide 15

Slide 15 text

使える機能 「ロールバック設定」 • 本番環境に予期せぬ変更が加わらないようあらかじ めアラームを仕込んでおく • 一番最初にそこまで見越して作りこんでいるシステ ムに私はまだ出会っていない

Slide 16

Slide 16 text

CloudFormation難点 • 解読・修正にスキルと慣れが必要 • 追跡つらい

Slide 17

Slide 17 text

CloudFormationのユースケース ★CFnが適しているケース • 必ず実施すべきセキュリティ設定をテンプレートにしておく  「CloudTrail証跡有効化する」  「ルートアカウントのMFAを有効化しアクセスキーを削除する」 等 • ハンズオン • 本番環境の変更作業の前に検証環境を一発展開して検証  実際は本番と全く同じ環境を検証のためにデプロイできることは 少ない  検証用のSWのライセンスがない、大量インスタンスを展開すると 課金 ★CFnだとつらいケース • すべてをCFnだけで管理しようとする • いろんなパラメータがスタック間で紐づいている • 巨大なシステム

Slide 18

Slide 18 text

• よくLTで聞くセリフ おわり 好きなAWSサービスは CloudFormationです! ←私 CloudFormation 苦手です!