Skip to content

Altus Project Modules Documentation

This document explains the Terraform code responsible for managing Altus ingest, curated, and transformation projects within Google Cloud Platform.

Overview

The code snippet consists of three distinct modules that handle the creation of projects under filtered folders for ingest, curated, and transformation. Each module uses the Google Project Factory module and filters out specific folders by name.

Local Variables

The code starts by defining local variables that filter out folders based on their names.

locals {
  filtered_ingest_folders  = { for k, v in module.ingest_folders.id : k => v if k != "Altus-Ingest" }
  filtered_curated_folders = { for k, v in module.curated_folders.id : k => v if k != "Altus-Cur" }
  filtered_trans_folders   = { for k, v in module.trans_folders.id : k => v if k != "Altus-Trans" }
}

Altus Ingest Projects Module

This module handles the creation of ingest projects using the filtered ingest folders.

module "altus_ingest_projects" {
  for_each                 = local.filtered_ingest_folders
  source                   = "terraform-google-modules/project-factory/google"
  version                  = "14.2.0"
  ...
  labels = {
    terraform_managed = true
  }
}

Altus Curated Projects Module

Similar to the ingest module, this module creates curated projects based on the filtered curated folders.

module "altus_curated_projects" {
  for_each                 = local.filtered_curated_folders
  ...
  labels = {
    terraform_managed = true
  }
}

Altus Transformation Projects Module

This module is responsible for the transformation projects, created under the filtered transformation folders.

module "altus_trans_projects" {
  for_each                 = local.filtered_trans_folders
  ...
  labels = {
    terraform_managed = true
  }
}

Usage

Apply this code to manage Altus ingest, curated, and transformation projects within your Google Cloud Platform organization.

Info

From this point on the document is autogenerated, don't modify it directly

Code

The code is creating three local variables, each containing a map of folder IDs from different modules (projecta_folders, projectbated_folders, projectc_folders), excluding the folders whose keys match with the owner's project (i.e., "${var.owner}-projecta", "${var.owner}-projectb", and "${var.owner}-projectc"). Only the child folders represent projects, the parent is just a unit for IAM

locals {
  filtered_projecta_folders     = { for k, v in module.projecta_folders.id : k => v if k != "${var.owner}-projecta" }
  filtered_projectbated_folders = { for k, v in module.projectbated_folders.id : k => v if k != "${var.owner}-projectb" }
  filtered_projectc_folders     = { for k, v in module.projectc_folders.id : k => v if k != "${var.owner}-projectc" }
}

Bussines Unit Projects: Project A

The code is creating a Terraform module named "owner_projecta_projects" for each entry in local.filtered_projecta_folders, using the Google Project Factory module, with a random project ID of length 3, specific organization and billing account IDs, folder ID from the filtered list, host project ID from a shared VPC host project module, activation of certain APIs, and a label for billing purposes

module "owner_projecta_projects" {
  for_each                 = local.filtered_projecta_folders
  source                   = "terraform-google-modules/project-factory/google"
  version                  = "14.2.0"
  name                     = each.key
  random_project_id        = true
  random_project_id_length = 3
  org_id                   = var.org_id
  billing_account          = var.billing_account
  folder_id                = each.value
  svpc_host_project_id     = module.shared_vpc_host_project.project_id
  activate_apis            = var.activate_apis["projecta"]
  labels = {
    env = "prod"
  }
}

Bussines Unit Projects: Project B

The code is creating a Terraform module named "owner_projecta_projects" for each entry in local.filtered_projecta_folders, using the Google Project Factory module, with a random project ID of length 3, specific organization and billing account IDs, folder ID from the filtered list, host project ID from a shared VPC host project module, activation of certain APIs, and a label for billing purposes

module "owner_projectbated_projects" {
  for_each                 = local.filtered_projectbated_folders
  source                   = "terraform-google-modules/project-factory/google"
  version                  = "14.2.0"
  name                     = each.key
  random_project_id        = true
  random_project_id_length = 3
  org_id                   = var.org_id
  billing_account          = var.billing_account
  folder_id                = each.value
  svpc_host_project_id     = module.shared_vpc_host_project.project_id
  activate_apis            = var.activate_apis["projectb"]
  labels = {
    env = "prod"
  }
}

Bussines Unit Projects: Project C

The code is creating a Terraform module named "owner_projecta_projects" for each entry in local.filtered_projecta_folders, using the Google Project Factory module, with a random project ID of length 3, specific organization and billing account IDs, folder ID from the filtered list, host project ID from a shared VPC host project module, activation of certain APIs, and a label for billing purposes

module "owner_projectc_projects" {
  for_each                 = local.filtered_projectc_folders
  source                   = "terraform-google-modules/project-factory/google"
  version                  = "14.2.0"
  name                     = each.key
  random_project_id        = true
  random_project_id_length = 3
  org_id                   = var.org_id
  billing_account          = var.billing_account
  folder_id                = each.value
  svpc_host_project_id     = module.shared_vpc_host_project.project_id
  activate_apis            = var.activate_apis["projectc"]
  labels = {
    env = "prod"
  }
}