release/terraform/main.tf (171 lines of code) (raw):
terraform {
backend "gcs" {
prefix = "terraform/state"
}
}
provider "google" {
project = var.project
}
resource "google_storage_bucket" "regional_bucket" {
for_each = toset(var.bq_regions)
name = "${var.project}-lib-${each.value}"
uniform_bucket_level_access = true
public_access_prevention = var.project == "bqutil" ? "inherited" : "enforced"
location = each.key
force_destroy = false
}
resource "google_storage_bucket_iam_member" "member" {
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
bucket = "${var.project}-lib-${each.value}"
role = "roles/storage.objectViewer"
member = "allAuthenticatedUsers"
}
resource "google_cloudbuild_trigger" "regional_trigger" {
depends_on = [
google_storage_bucket.regional_bucket
]
for_each = toset(var.bq_regions)
name = "udf-regional-trigger-${each.value}"
filename = "cloudbuild.yaml"
github {
owner = "GoogleCloudPlatform"
name = "bigquery-utils"
dynamic "pull_request" {
for_each = var.project == "bqutil-test" ? [1] : []
content {
branch = "^master$"
comment_control = "COMMENTS_ENABLED"
}
}
dynamic "push" {
for_each = var.project == "bqutil" ? [1] : []
content {
branch = "^master$"
}
}
}
included_files = ["udfs/**", "stored_procedures/**"]
ignored_files = ["**/*.md"]
include_build_logs = "INCLUDE_BUILD_LOGS_WITH_STATUS"
substitutions = {
_BQ_LOCATION = "${each.value}"
_JS_BUCKET = "gs://${var.project}-lib-${each.value}"
}
}
resource "google_cloudbuild_trigger" "datasketches_regional_trigger" {
depends_on = [
google_storage_bucket.regional_bucket
]
for_each = toset(var.bq_regions)
name = "datasketches-udf-regional-trigger-${each.value}"
filename = "udfs/datasketches/cloudbuild.yaml"
github {
owner = "GoogleCloudPlatform"
name = "bigquery-utils"
dynamic "pull_request" {
for_each = var.project == "bqutil-test" ? [1] : []
content {
branch = "^master$"
comment_control = "COMMENTS_ENABLED"
}
}
dynamic "push" {
for_each = var.project == "bqutil" ? [1] : []
content {
branch = "^master$"
}
}
}
included_files = ["udfs/datasketches/**"]
ignored_files = ["**/*.md"]
include_build_logs = "INCLUDE_BUILD_LOGS_WITH_STATUS"
substitutions = {
_BQ_LOCATION = "${each.value}"
_JS_BUCKET = "gs://${var.project}-lib-${each.value}/datasketches"
}
}
resource "google_project_iam_member" "bigquery_connection_grant_vertex_ai_user_role" {
project = var.project
role = "roles/aiplatform.user"
for_each = { for k, v in google_bigquery_connection.connection : k => v.cloud_resource[0].service_account_id }
member = "serviceAccount:${each.value}"
}
resource "google_bigquery_connection" "connection" {
for_each = toset(var.bq_regions)
connection_id = "procedure"
location = each.value
project = var.project
cloud_resource {}
}
resource "google_bigquery_dataset_iam_member" "procedure_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "procedure_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
/* Uncomment below whenever the first contribution to netezza dataset occurs
resource "google_bigquery_dataset_iam_member" "nz_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "nz_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
*/
resource "google_bigquery_dataset_iam_member" "or_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "or_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
resource "google_bigquery_dataset_iam_member" "rs_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "rs_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
resource "google_bigquery_dataset_iam_member" "sf_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "sf_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
resource "google_bigquery_dataset_iam_member" "ss_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "ss_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
resource "google_bigquery_dataset_iam_member" "td_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "td_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
resource "google_bigquery_dataset_iam_member" "ve_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "ve_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
resource "google_bigquery_dataset_iam_member" "fn_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "fn_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}
resource "google_bigquery_dataset_iam_member" "datasketches_public_viewers" {
project = var.project
for_each = var.project == "bqutil" ? toset(var.bq_regions) : []
dataset_id = "datasketches_${replace(each.value, "-", "_")}"
role = "roles/bigquery.dataViewer"
member = "allAuthenticatedUsers"
}