年中アイス

いろいろつらつら

terraformのplan差分確認時の注意

本格的にterraformを使い始めて*1、速攻でやらかしたのでメモ。terraform planで差分を確認していましたが、見事に見逃して認識できてない差分を適用してしまいました。

terraform planで差分が見れるのですが、+ -の行だけを見ていて、->で表示されている同一行内の差分を見事に見逃しました。IAMのresourceが複数あり、その差分が+-でいくつか出ていて、その上でしれっとactionが->で変更されていて、適用後に動かなくなってしまいました。

差分抜粋

~ {
   ~ Action    = "sts:AssumeRole" -> "sts:AssumeRoleWithWebIdentity"
   ~ Principal = {
       ~ AWS = [
           + "arn:aws:iam::<xxxxxxxxxxxxx>:role/role-A",
             "arn:aws:iam::<xxxxxxxxxxxxx>:role/role-C",
           - "arn:aws:iam::<xxxxxxxxxxxxx>:role/role-A",
             "arn:aws:iam::<xxxxxxxxxxxxx>:role/role-D",
           - "arn:aws:iam::<xxxxxxxxxxxxx>:role/role-B",
           + "arn:aws:iam::<xxxxxxxxxxxxx>:role/role-B",
         ]
     }
     # (2 unchanged elements hidden)
 },

実際問題、手でいじった部分をterraformで追いつこうとしたがために、tfファイルの編集認識とずれてたこともありますが、gitやansibleなどと同じく+-のみしか見てなかったので、見事に見逃しました。コードなどの差分と異なり、構造データ内の差分が表示されるので、気をつけて見ないといけないですね。

action単体だったら気づいたかもしれませんが、resourceも変えていてその差分が目立ったために見逃してしまいました。幸い開発中の話なので大事には至りませんでしたが、早いタイミングでやらかしたので、もう見逃さないと思います。ただ、差分ではなく変更による影響まで認識できないとこういうミスが防げないので厄介ですね。

*1:AWS歴がわりと長く、Codenize系のツールやCloudFormation、rnzoo+ansibleなどを使っており、なかなかterraformの部分導入はやってなかったのです。