github.com/filecoin-project/bacalhau@v0.3.23-0.20230228154132-45c989550ace/ops/service-accounts/weave-flux/main.tf (about) 1 provider "google" { 2 project = var.gcp_project 3 region = var.region 4 zone = var.zone 5 } 6 7 terraform { 8 backend "gcs" { 9 # this bucket lives in the bacalhau-cicd google project 10 # https://console.cloud.google.com/storage/browser/bacalhau-global-storage;tab=objects?project=bacalhau-cicd 11 bucket = "bacalhau-global-storage" 12 prefix = "terraform/state" 13 } 14 } 15 16 resource "google_service_account" "sa" { 17 account_id = var.service_account_name 18 display_name = "Service Account For Weave Flux - ${terraform.workspace}" 19 } 20 21 resource "google_service_account_key" "sak" { 22 service_account_id = google_service_account.sa.name 23 } 24 25 resource "google_project_iam_binding" "compute_role" { 26 project = var.gcp_project 27 role = "roles/compute.admin" 28 29 members = [ 30 "serviceAccount:${google_service_account.sa.email}", 31 ] 32 } 33 34 resource "google_project_iam_member" "terraform_state_role" { 35 project = "bacalhau-cicd" 36 role = "roles/storage.admin" 37 member = "serviceAccount:${google_service_account.sa.email}" 38 } 39 40 resource "local_file" "key_file" { 41 content = base64decode(google_service_account_key.sak.private_key) 42 filename = "${path.module}/${var.service_account_name}-${terraform.workspace}.json" 43 }