GCP上のプロジェクトをTerraformで作成する #GCP #Terraform
追記
- 2017/05/12: 下記の備忘録は正確ではない可能性がある。下記の設定を実際に反映させてないのに、プロジェクトが作成できたから。
本編
GCPの備忘録を作っていこうと思う。 今までプロジェクトを2個つくり、最初は GUIでポチポチと、2個目は極力gcloud
と kubectl
だけで作成をした。今回は可能な限りTerraformをつかい、記録を残したいと思う。
というわけで、プロジェクトの作成から。
いきなりTerraformから逸脱してしまうが、ProjectをTerraformから作るにあたり"roles/resourcemanager.projectCreator"が付与されたIAM Policyが必要だ。これを個人メアドに割り当てることもできるが、冗長性や拡張性を意識しグループメアドに割り当てるのが得策だとかんがえる(システム用アカウントは極力作りたくない)。
ので、まずGsuiteでグループメアド(infra-admin@hogehoge.com)を作り、そこにインフラに携わる人間のアカウントを追加する。そして、iam_policyを作る
gcloud alpha organizations add-iam-policy-binding ${ORG_ID} \ --member='group:infra-admin@hogehoge.com' --role='oles/resourcemanager.projectCreator'
これをTerraformで記述する
data "google_iam_policy" "admin" { binding { role = "roles/resourcemanager.projectCreator" members = [ "group:infra-admin@hogehoge.com" ] } }
後は、providerとproject.tfを書けば、おk
// Configure the Google Cloud provider provider "google" { project = "${var.project_id}" region = "${var.region}" }
resource "google_project" "proj-hoge" { project_id = "${var.project_id}" org_id = "${var.org_id}" name = "${var.project_id}" }
Plan & Apply
% terraform plan % terraform apply (git)-[master] data.google_iam_policy.admin: Refreshing state... google_project.proj-hoge: Creating... name: "" => "gcp-hoge" number: "" => "<computed>" org_id: "" => "${ORG_ID}" policy_data: "" => "<computed>" policy_etag: "" => "<computed>" project_id: "" => "gcp-hoge" skip_delete: "" => "<computed>" google_project.proj-hoge: Still creating... (10s elapsed) google_project.proj-hoge: Creation complete (ID: gcp-hoge) Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
以上。