こんにちは。株式会社アダコテックのテックリードをしておりますkackyと申します。terraform Advent Calendar 2019の5日目の記事です。12月5日の22時から書き始めているのでかなりタイムアタックになっておりますw
やりたいこと
terraformでiamユーザを作って、それをグループに所属させる。そんなことをさくっとしたいときのやり方tipsです。
@raki さんのご指摘により記述を直しました!有用なご指摘ありがとうございます☆
ユーザー管理テーブルを変数定義する
こんな感じでユーザーとグループを対で登録します。
variable "users" {
type = map(list(string))
default = {
"kacky" = ["developer"],
"tech" = ["developer"],
"adaco" = ["intern"]
]
}
iam group作成
グループとして、developer、internに分けるとします。
resource "aws_iam_group" "developer" {
name = "developer"
path = "/"
}
resource "aws_iam_group" "intern" {
name = "intern"
path = "/"
}
iamユーザーとmembershipの作成
ユーザー、グループはterraform 0.12.6で追加されたfor_each文を使うとあっさりできました。
これを使えばLocal Valuesでちまちまフィルタリングする必要がなくなりました。ナンテコッタイ/(^o^)\
resource "aws_iam_user" "users" {
for_each = var.users
user = each.key
path = "/"
}
resource "aws_iam_user_group_membership" "example" {
for_each = var.users
user = each.key
groups = each.value
depends_on = [aws_iam_user.users]
}
まとめ
terraformの最新機能を使うとiamユーザーとグループといった一対の関係を直感的に変数定義してresourceに展開できるようになりました。他にもいろんな応用が利くと思いますのでお試しください。
※焦って書いているのでtypoしてたらすみません。今週中に直しますm(_ _)m