Its a crux!

feat: more support for switching between terraform module sources

Signed-off-by: Jonathan Basniak <740416+gm112@users.noreply.github.com>

+101 -15
+3 -3
iac/cloud-environments/nuxt/aws-amplify/database.tf
··· 1 1 module "aws_database" { 2 2 for_each = toset(var.project_database_type == "postgresql" ? var.project_environments : []) 3 - source = "../../postgres/aws" 3 + source = var.source_terraform_modules_from_local ? "../../postgres/aws" : "git::${local.github_repository_url}/iac/cloud-environments/postgres/aws?ref=${local.github_ref}" 4 4 region = local.environment_regions[each.key] 5 5 6 6 name = "${var.project_name}-${each.key}" ··· 16 16 17 17 module "kubernetes_database" { 18 18 for_each = toset(var.project_database_type == "postgresql-k8s" ? var.project_environments : []) 19 - source = "../../postgres/kubernetes-k8s" 19 + source = var.source_terraform_modules_from_local ? "../../postgres/kubernetes-k8s" : "git::${local.github_repository_url}/iac/cloud-environments/postgres/kubernetes-k8s?ref=${local.github_ref}" 20 20 kubernetes_namespace = var.project_name 21 21 22 22 project_name = var.project_name ··· 29 29 30 30 module "supabase_database" { 31 31 for_each = toset(var.project_database_type == "supabase" ? var.project_environments : []) 32 - source = "../../postgres/supabase" 32 + source = var.source_terraform_modules_from_local ? "../../postgres/supabase" : "git::${local.github_repository_url}/iac/cloud-environments/postgres/supabase?ref=${local.github_ref}" 33 33 34 34 project_name = var.project_name 35 35
+14
iac/cloud-environments/nuxt/aws-amplify/inputs.tf
··· 64 64 error_message = "Supabase organization ID must be set." 65 65 } 66 66 } 67 + 68 + 69 + variable "source_terraform_modules_from_local" { 70 + type = bool 71 + description = "Whether to use local terraform modules." 72 + default = true 73 + } 74 + 75 + variable "github_terraform_module_repository_personal_access_token" { 76 + type = string 77 + description = "The personal access token for the github terraform module repository." 78 + sensitive = true 79 + default = env("GITHUB_ACCESS_TOKEN") ? env("GITHUB_ACCESS_TOKEN") : "" 80 + }
+4
iac/cloud-environments/nuxt/aws-amplify/locals.tf
··· 37 37 "staging" = ["us-east-1a", "us-east-1b"] 38 38 "development" = ["us-east-1a", "us-east-1b"] 39 39 } 40 + 41 + 42 + github_repository_url = "https://${length(github_terraform_module_repository_personal_access_token) > 0 ? "${github_terraform_module_repository_personal_access_token}@" : ""}github.com/gm112/cruxt.git" 43 + github_ref = "main" 40 44 }
+14
iac/cloud-environments/nuxt/cloudflare-pages/inputs.tf
··· 31 31 description = "The API token to use for authentication with the Cloudflare API." 32 32 sensitive = true 33 33 } 34 + 35 + 36 + variable "source_terraform_modules_from_local" { 37 + type = bool 38 + description = "Whether to use local terraform modules." 39 + default = true 40 + } 41 + 42 + variable "github_terraform_module_repository_personal_access_token" { 43 + type = string 44 + description = "The personal access token for the github terraform module repository." 45 + sensitive = true 46 + default = env("GITHUB_ACCESS_TOKEN") ? env("GITHUB_ACCESS_TOKEN") : "" 47 + }
+4
iac/cloud-environments/nuxt/cloudflare-pages/locals.tf
··· 1 + locals { 2 + github_repository_url = "https://${length(github_terraform_module_repository_personal_access_token) > 0 ? "${github_terraform_module_repository_personal_access_token}@" : ""}github.com/gm112/cruxt.git" 3 + github_ref = "main" 4 + }
+1 -1
iac/cloud-environments/nuxt/deno-deploy/database.tf
··· 1 1 module "database" { 2 - source = "../../postgres/supabase" 2 + source = var.source_terraform_modules_from_local ? "../../postgres/deno-deploy" : "git::${local.github_repository_url}/iac/cloud-environments/postgres/deno-deploy?ref=${local.github_ref}" 3 3 }
+14
iac/cloud-environments/nuxt/deno-deploy/inputs.tf
··· 25 25 description = "The tags to apply to the project." 26 26 default = [] 27 27 } 28 + 29 + 30 + variable "source_terraform_modules_from_local" { 31 + type = bool 32 + description = "Whether to use local terraform modules." 33 + default = true 34 + } 35 + 36 + variable "github_terraform_module_repository_personal_access_token" { 37 + type = string 38 + description = "The personal access token for the github terraform module repository." 39 + sensitive = true 40 + default = env("GITHUB_ACCESS_TOKEN") ? env("GITHUB_ACCESS_TOKEN") : "" 41 + }
+4
iac/cloud-environments/nuxt/deno-deploy/locals.tf
··· 1 + locals { 2 + github_repository_url = "https://${length(github_terraform_module_repository_personal_access_token) > 0 ? "${github_terraform_module_repository_personal_access_token}@" : ""}github.com/gm112/cruxt.git" 3 + github_ref = "main" 4 + }
+2 -2
iac/cloud-environments/nuxt/kubernetes-k8s/database.tf
··· 1 1 module "k8s_database" { 2 2 for_each = toset(var.project_database_type == "postgresql" ? var.project_environments : []) 3 - source = "../../postgres/kubernetes-k8s" 3 + source = var.source_terraform_modules_from_local ? "../../postgres/kubernetes-k8s" : "git::${local.github_repository_url}/iac/cloud-environments/postgres/kubernetes-k8s?ref=${local.github_ref}" 4 4 5 5 project_name = var.project_name 6 6 username = "postgres" ··· 12 12 13 13 module "supabase_database" { 14 14 for_each = toset(var.project_database_type == "supabase" ? var.project_environments : []) 15 - source = "../../postgres/supabase" 15 + source = var.source_terraform_modules_from_local ? "../../postgres/supabase" : "git::${local.github_repository_url}/iac/cloud-environments/postgres/supabase?ref=${local.github_ref}" 16 16 17 17 project_name = var.project_name 18 18
+14
iac/cloud-environments/nuxt/kubernetes-k8s/inputs.tf
··· 40 40 error_message = "Database type must be one of: postgresql, supabase, none." 41 41 } 42 42 } 43 + 44 + 45 + variable "source_terraform_modules_from_local" { 46 + type = bool 47 + description = "Whether to use local terraform modules." 48 + default = true 49 + } 50 + 51 + variable "github_terraform_module_repository_personal_access_token" { 52 + type = string 53 + description = "The personal access token for the github terraform module repository." 54 + sensitive = true 55 + default = env("GITHUB_ACCESS_TOKEN") ? env("GITHUB_ACCESS_TOKEN") : "" 56 + }
+4
iac/cloud-environments/nuxt/kubernetes-k8s/locals.tf
··· 1 + locals { 2 + github_repository_url = "https://${length(github_terraform_module_repository_personal_access_token) > 0 ? "${github_terraform_module_repository_personal_access_token}@" : ""}github.com/gm112/cruxt.git" 3 + github_ref = "main" 4 + }
+6 -8
iac/cloud-environments/nuxt/linode-standalone/database.tf
··· 1 1 module "standalone_database" { 2 2 for_each = toset(var.project_database_type == "postgresql" ? var.project_environments : []) 3 - #count = var.project_database_type == "postgresql" ? 1 : 0 4 - source = "../../postgres/linode" 5 - label = "${var.project_name}-${each.key}" 6 - region = local.project_environment_regions[each.key] 7 - type = "g6-nanode-1" 3 + source = var.source_terraform_modules_from_local ? "../../postgres/linode" : "git::${local.github_repository_url}/iac/cloud-environments/postgres/linode?ref=${local.github_ref}" 4 + label = "${var.project_name}-${each.key}" 5 + region = local.project_environment_regions[each.key] 6 + type = "g6-nanode-1" 8 7 } 9 8 10 9 module "supabase_database" { 11 - for_each = toset(var.project_database_type == "supabase" ? var.project_environments : []) 12 - #count = var.project_database_type == "supabase" ? 1 : 0 13 - source = "../../postgres/supabase" 10 + for_each = toset(var.project_database_type == "supabase" ? var.project_environments : []) 11 + source = var.source_terraform_modules_from_local ? "../../postgres/supabase" : "git::${local.github_repository_url}/iac/cloud-environments/postgres/supabase?ref=${local.github_ref}" 14 12 project_name = var.project_name 15 13 supabase_access_token = env("SUPABASE_ACCESS_TOKEN") 16 14 supabase_organization_id = env("SUPABASE_ORGANIZATION_ID")
+13
iac/projects/module/inputs.tf
··· 51 51 } 52 52 } 53 53 54 + variable "source_terraform_modules_from_local" { 55 + type = bool 56 + description = "Whether to use local terraform modules." 57 + default = true 58 + } 59 + 60 + variable "github_terraform_module_repository_personal_access_token" { 61 + type = string 62 + description = "The personal access token for the github terraform module repository." 63 + sensitive = true 64 + default = env("GITHUB_ACCESS_TOKEN") ? env("GITHUB_ACCESS_TOKEN") : "" 65 + } 66 + 54 67 variable "__internal__project_cloud_provider_validation__DO_NOT_SET" { 55 68 type = bool 56 69 description = "Validates the cloud provider against the database type."
+3
iac/projects/module/locals.tf
··· 46 46 } 47 47 48 48 database_is_supported_by_provider = contains(local.provider_supported_database_types[var.project_cloud_provider], var.project_database_type) 49 + 50 + github_repository_url = "https://${length(github_terraform_module_repository_personal_access_token) > 0 ? "${github_terraform_module_repository_personal_access_token}@" : ""}github.com/gm112/cruxt.git" 51 + github_ref = "main" 49 52 }
+1 -1
iac/projects/module/main.tf
··· 1 1 module "project_deployment_environment" { 2 2 for_each = toset(var.project_environments) 3 - source = "../cloud-environments/${var.project_cloud_provider}" 3 + source = var.source_terraform_modules_from_local ? "../../cloud-environments/${var.project_cloud_provider}" : "git::${locals.github_repository_url}/iac/cloud-environments/${var.project_cloud_provider}?ref=${local.github_ref}" 4 4 project_environment = each.key 5 5 project_name = var.project_name 6 6 project_repository_url = var.project_repository_url