iamユーザポリシーをterraformingをつかってterraform管理にする
iamユーザポリシーをterraformingをつかってterraform管理にする
aws上に環境を移したのはいいんでですが、ベンダさんや、保守者をいれると膨大な数のAIMユーザが出来てきます。まぁ膨大といっても200かそこらですけどね。
それぞれのユーザは有効期限がついてたり、ソースアドレスを制限していたりします。特に有効期限は一斉に変更しないといけないのですが、ちまちまとコンソールで変更とかやってられない。そこでterraform管理下へ移します。
terraformingでtfstateファイルを作成する
適当なディレクトリを作成してtfstateファイルを作成。今回はAIMのユーザポリシーを変更するのでaimupを出力。
$ terraforming iamup --tfstate> terraform.tfstate
terraformingでIAMユーザポリシーを作成
ユーザポリシーを吐き出させる。で、initする。当然のようにエラー。
$ terraforming aimup > main.tf $ terraform init (エラーいっぱい) Template interpolation doesn't expect a colon at this location. Did you intend this to be a literal sequence to be processed as part of another language? If so, you can escape it by starting with "$${" instead of just "${".
なんか"${"は使えないみたいなので、"$${"にしろっていってます。ってことでエディタで変換。再度initをかけてみる。
こんどは違うエラー
Error: Invalid legacy provider address │ │ This configuration or its associated state refers to the unqualified provider "aws". │ │ You must complete the Terraform 0.13 upgrade process before upgrading to later versions. ╵
なんじゃ?
プロバイダが違うらしい
バージョンの違いでプロバイダがちがうらしい。以下のコマンドを叩く。
$ terraform state replace-provider registry.terraform.io/-/aws registry.terraform.io/hashicorp/aws
これ実際には空のtfファイルでinit実行したあとにplanででてきたエラーで探しました。
planをかけてみる
$ terraforrm plan
OK!
あとは変更したいところを編集してapplyすればいい。