terraform/datamigration/redshift/gcc/main.tf (44 lines of code) (raw):
#
#Copyright 2021 Google LLC.
#This software is provided as-is, without warranty or representation for any use or purpose.
#Your use of it is subject to your agreement with Google.
#/************************* REDSHIFT TO GOOGLE BIGQUERY END TO END MIGRATION INFRASTRUCTURE*************************
/******************************************
Cloud Composer V2 Deployment
*****************************************/
data "google_composer_environment" "composer_env" {
name = "${var.composer_env_name}-${var.customer_name}"
project = var.project_id
region = var.location
}
data "google_project" "project" {
project_id = var.project_id
}
/* Provide Object Admin authorization for Service Account to the created GCS buckets */
resource "google_storage_bucket_iam_member" "storage_object_admin" {
for_each = toset(var.bucket_names)
bucket = "${each.value}-${var.customer_name}"
role = "roles/storage.objectAdmin"
member = "serviceAccount:${var.service_account_gcc}@${var.project_id}.iam.gserviceaccount.com"
}
/* Copy Redshift data migration DAGs to Composer bucket */
resource "null_resource" "upload_redshift_datamigration_dags" {
depends_on = [google_storage_bucket_iam_member.storage_object_admin]
triggers = {
datamigration_td_dag_hashes = jsonencode({
for fn in fileset(var.datamigration_redshift_dag_source_path, "**") :
fn => filesha256("${var.datamigration_redshift_dag_source_path}/${fn}")
})
}
provisioner "local-exec" {
command = "gsutil -m cp -r ${var.datamigration_redshift_dag_source_path}/* ${data.google_composer_environment.composer_env.config.0.dag_gcs_prefix}/"
}
}
/* Copy datamigration_utils/ to Composer bucket */
resource "null_resource" "upload_datamigration_utils" {
depends_on = [google_storage_bucket_iam_member.storage_object_admin]
triggers = {
datamigration_util_hashes = jsonencode({
for fn in fileset(var.datamigration_utils, "**") :
fn => filesha256("${var.datamigration_utils}/${fn}")
})
}
provisioner "local-exec" {
command = "gsutil -m cp -r ${var.datamigration_utils} ${data.google_composer_environment.composer_env.config.0.dag_gcs_prefix}/"
}
}