4
2

More than 3 years have passed since last update.

IAM resource を Terraformで管理する

Posted at

背景

IAM userをTerraformで管理し始めて、 policyを importして、Roleを。。とやっていたが、policy attachmentや group memberなどもTerraform化しなくてはいけなくなってかなり大変になった。

要件

以下の要件くらいは満たしてほしい

  • Userの追加・削除
  • User削除時に関連する グループに所属する、UserPolicyAttachmentなどの削除が可能
  • Groupの作成と同時にUserの追加
  • Policyの作成と同時にUser/Role/GroupへのAttachment
  • Role/Group/Userの作成とPolicyのAttachment

材料

terraform import

利点:
1. officialで既存のリソースのImportができる
難点:
1. tfstateはimportできるがtfファイルは準備しないといけない。 → すでに大量のリソースがあると大変

terraforming

利点:
1. ほとんどのリソースカバーされてる
2. tf と tfstate既存が既存リソースに対して生成できる

難点:
1. プロジェクトがActiveではないのでPRとか出したがマージされたり更新されることはなさそう
1. ResourceごとにImportするので、上記の異なるResource間のDependencyを解決できない

解決策

とりあえずあるもの使って自分で作ればいいかという感じになったので、勉強がてら作った

基本は 「terraformingがどうやってるか理解」+「リソース間の依存までを自分で実現する」

出来たもの

iamterraformer

使ったもの:
1. terraforming
2. pratice_terraforming <- terraformingの勉強しつつ、自分の必要なリソースでterraformingになかったものを作った
3. shell (汚くstateを移動したり、無理くりやってるのは愛嬌w)

とりあえず2ステップだけでできるようになった

  1. 生のtfとtfstateのimport

    ./import.sh
    
  2. インポートしたやつの依存関係を考えたModule構造に変換する

    ./convert.sh
    
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2