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すればいい。