https://developer.hashicorp.com/terraform/language/meta-arguments/for_each
https://developer.hashicorp.com/terraform/language/values/locals
https://developer.hashicorp.com/terraform/language/functions/flatten
https://registry.terraform.io/providers/jianyuan/sentry/latest/docs/resources/team
https://registry.terraform.io/providers/jianyuan/sentry/latest/docs/resources/organization_member
https://registry.terraform.io/providers/jianyuan/sentry/latest/docs/resources/team_member
- team_member.tf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
locals { teams = [ "hoge", "hogee", ] members = [ { email = "hoge@hoge.com" teams = ["hoge","hogeee"] role = "owner" }, ] member_team_combinations = flatten([ for member in local.members : [ for team in member.teams : { member_email = member.email team_name = team } ] ]) } resource "sentry_team" "teams" { for_each = toset(local.teams) organization = sentry_organization.hoge.id name = each.key slug = each.key } resource "sentry_organization_member" "hoge_member" { for_each = { for m in local.members : m.email => m } organization = sentry_organization.hoge.id email = each.value.email role = each.value.role } resource "sentry_team_member" "hoge_member" { for_each = { for combo in local.member_team_combinations : "${combo.member_email}-${combo.team_name}" => combo } organization = sentry_organization.hoge.id team = sentry_team.teams[each.value.team_name].id member_id = sentry_organization_member.hoge_member[each.value.member_email].internal_id } |
- import
1 2 3 |
$ terraform import 'sentry_team_member.hoge_member["hoge@hoge.com-hoge]' hoge/hoge/xxxxxxxxx $ terraform import 'sentry_team_member.hoge_member["hoge@hoge.com-hogeee]' hoge/hogee/xxxxxxxxx |
sentry_team_memberではteamの指定が一つしかできないため、複数指定したい場合はfor_each(ループ)、locals(変数)、flatten(配列の入れ子構造の平坦化)を利用して別リソース名として定義すれば可能。
ProjectsのTerraform化は以下。
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。