From f0191169fbe72be7a48be5f95eaf6bd520a4cf95 Mon Sep 17 00:00:00 2001 From: "Matthew C. Morgan" Date: Thu, 6 Feb 2025 20:46:36 -0500 Subject: [PATCH] conditional the provider DATA --- lab/_envcommon/helm-provider.hcl | 47 +++++++------------ lab/_envcommon/kube-provider.hcl | 45 +++++++----------- .../{terragrunt.hcl => terragrunt.hcl.off} | 19 +------- .../{terragrunt.hcl => terragrunt.hcl.off} | 6 ++- .../{terragrunt.hcl => terragrunt.hcl.off} | 6 +++ .../{terragrunt.hcl => terragrunt.hcl.off} | 2 +- .../eks-karpenter/terragrunt.hcl | 23 +-------- .../{terragrunt.hcl => terragrunt.hcl.off} | 22 --------- lab/root.hcl | 20 +++++++- 9 files changed, 65 insertions(+), 125 deletions(-) rename lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-cert-manager/{terragrunt.hcl => terragrunt.hcl.off} (72%) rename lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-config/{terragrunt.hcl => terragrunt.hcl.off} (95%) rename lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-dns/{terragrunt.hcl => terragrunt.hcl.off} (92%) rename lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-istio/{terragrunt.hcl => terragrunt.hcl.off} (95%) rename lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-metrics-server/{terragrunt.hcl => terragrunt.hcl.off} (56%) diff --git a/lab/_envcommon/helm-provider.hcl b/lab/_envcommon/helm-provider.hcl index d72924f..094e4b4 100644 --- a/lab/_envcommon/helm-provider.hcl +++ b/lab/_envcommon/helm-provider.hcl @@ -1,34 +1,21 @@ -dependency "eks" { - config_path = "${get_original_terragrunt_dir()}/../eks" - # mock_outputs_allowed_terraform_commands = ["plan", "validate"] - mock_outputs = { - cluster_name = "a-cluster-name" - } +%{if cluster_name != "a-cluster-name"~} +data "aws_eks_cluster" "helm" { + name = "${cluster_name}" } - -inputs = { - cluster_name = dependency.eks.outputs.cluster_name +data "aws_eks_cluster_auth" "helm" { + name = "${cluster_name}" } - -# Generate a k8s provider block -generate "helm_provider" { - path = "helm-provider.tf" - if_exists = "overwrite_terragrunt" - contents = <<-EOF -%{if "${dependency.eks.outputs.cluster_name}" != "a-cluster-name" ~} - data "aws_eks_cluster" "helm" { - name = "${dependency.eks.outputs.cluster_name}" - } - data "aws_eks_cluster_auth" "helm" { - name = "${dependency.eks.outputs.cluster_name}" - } - provider "helm" { - kubernetes { - host = data.aws_eks_cluster.helm.endpoint - cluster_ca_certificate = base64decode(data.aws_eks_cluster.helm.certificate_authority[0].data) - token = data.aws_eks_cluster_auth.helm.token - } +%{endif~} +provider "helm" { + kubernetes { + %{if cluster_name != "a-cluster-name"~} + host = data.aws_eks_cluster.helm.endpoint + cluster_ca_certificate = base64decode(data.aws_eks_cluster.helm.certificate_authority[0].data) + token = data.aws_eks_cluster_auth.helm.token + %{else~} + host = "" + cluster_ca_certificate = "" + token = "" + %{endif~} } -%{ endif ~} -EOF } diff --git a/lab/_envcommon/kube-provider.hcl b/lab/_envcommon/kube-provider.hcl index 17f7665..8ed08bb 100644 --- a/lab/_envcommon/kube-provider.hcl +++ b/lab/_envcommon/kube-provider.hcl @@ -1,32 +1,19 @@ -dependency "eks" { - config_path = "${get_original_terragrunt_dir()}/../eks" - # mock_outputs_allowed_terraform_commands = ["plan", "validate"] - mock_outputs = { - cluster_name = "a-cluster-name" - } +%{if cluster_name != "a-cluster-name"~} +data "aws_eks_cluster" "kube" { + name = "${cluster_name}" } - -inputs = { - cluster_name = dependency.eks.outputs.cluster_name +data "aws_eks_cluster_auth" "kube" { + name = "${cluster_name}" } - -# Generate a k8s provider block -generate "kube_provider" { - path = "kube-provider.tf" - if_exists = "overwrite_terragrunt" - contents = <<-EOF -%{if "${dependency.eks.outputs.cluster_name}" != "a-cluster-name" ~} - data "aws_eks_cluster" "kube" { - name = "${dependency.eks.outputs.cluster_name}" - } - data "aws_eks_cluster_auth" "kube" { - name = "${dependency.eks.outputs.cluster_name}" - } - provider "kubernetes" { - host = data.aws_eks_cluster.kube.endpoint - cluster_ca_certificate = base64decode(data.aws_eks_cluster.kube.certificate_authority[0].data) - token = data.aws_eks_cluster_auth.kube.token - } -%{ endif ~} -EOF +%{endif~} +provider "kubernetes" { + %{if cluster_name != "a-cluster-name"~} + host = data.aws_eks_cluster.kube.endpoint + cluster_ca_certificate = base64decode(data.aws_eks_cluster.kube.certificate_authority[0].data) + token = data.aws_eks_cluster_auth.kube.token + %{else~} + host = "" + cluster_ca_certificate = "" + token = "" + %{endif~} } diff --git a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-cert-manager/terragrunt.hcl b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-cert-manager/terragrunt.hcl.off similarity index 72% rename from lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-cert-manager/terragrunt.hcl rename to lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-cert-manager/terragrunt.hcl.off index 0c899ed..407d973 100644 --- a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-cert-manager/terragrunt.hcl +++ b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-cert-manager/terragrunt.hcl.off @@ -16,24 +16,7 @@ dependency "eks" { } dependencies { - paths = ["../eks-config"] -} - -locals { - helm = read_terragrunt_config(find_in_parent_folders("./_envcommon/helm-provider.hcl")) - kube = read_terragrunt_config(find_in_parent_folders("./_envcommon/kube-provider.hcl")) -} - -generate "helm" { - path = local.helm.generate.helm_provider.path - if_exists = local.helm.generate.helm_provider.if_exists - contents = local.helm.generate.helm_provider.contents -} - -generate "kube" { - path = local.kube.generate.kube_provider.path - if_exists = local.kube.generate.kube_provider.if_exists - contents = local.kube.generate.kube_provider.contents + paths = ["../eks", "../eks-config"] } inputs = { diff --git a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-config/terragrunt.hcl b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-config/terragrunt.hcl.off similarity index 95% rename from lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-config/terragrunt.hcl rename to lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-config/terragrunt.hcl.off index fc6cead..f44dbe4 100644 --- a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-config/terragrunt.hcl +++ b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-config/terragrunt.hcl.off @@ -10,7 +10,7 @@ terraform { dependency "eks" { config_path = "../eks" - # mock_outputs_allowed_terraform_commands = ["plan", "validate"] + mock_outputs_allowed_terraform_commands = ["plan", "validate"] mock_outputs = { cluster_certificate_authority_data = [{ data = "THISISAVERYLONGCERTSTRINGTHATGOESHEREFORSURENODYEP" }] cluster_endpoint = "https://12345ABCDEE42BF9C24D4C362D1DC.sk1.us-gov-east-1.eks.amazonaws.com" @@ -24,6 +24,10 @@ dependency "eks" { } } +dependencies { + paths = ["../eks", "../eks-karpenter"] +} + locals { helm = read_terragrunt_config(find_in_parent_folders("./_envcommon/helm-provider.hcl")) kube = read_terragrunt_config(find_in_parent_folders("./_envcommon/kube-provider.hcl")) diff --git a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-dns/terragrunt.hcl b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-dns/terragrunt.hcl.off similarity index 92% rename from lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-dns/terragrunt.hcl rename to lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-dns/terragrunt.hcl.off index 21be985..cd51906 100644 --- a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-dns/terragrunt.hcl +++ b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-dns/terragrunt.hcl.off @@ -17,6 +17,7 @@ dependency "eks" { dependency "istio" { config_path = "../eks-istio" + mock_outputs_allowed_terraform_commands = ["plan", "validate"] mock_outputs = { istio_ingress_lb = { dns_name = "a1111111111111111111111111111111-2bbbbbbbbbbbbbbb.elb.us-gov-east-1.amazonaws.com" @@ -25,6 +26,11 @@ dependency "istio" { } } +dependencies { + paths = ["../eks", "../eks-config", "../eks-istio"] +} + + locals { helm = read_terragrunt_config(find_in_parent_folders("./_envcommon/helm-provider.hcl")) kube = read_terragrunt_config(find_in_parent_folders("./_envcommon/kube-provider.hcl")) diff --git a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-istio/terragrunt.hcl b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-istio/terragrunt.hcl.off similarity index 95% rename from lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-istio/terragrunt.hcl rename to lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-istio/terragrunt.hcl.off index 6d4b5a0..3c8bcca 100644 --- a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-istio/terragrunt.hcl +++ b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-istio/terragrunt.hcl.off @@ -15,7 +15,7 @@ dependency "eks" { } dependencies { - paths = ["../eks-karpenter"] + paths = ["../eks", "../eks-karpenter", "../eks-config"] } locals { diff --git a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-karpenter/terragrunt.hcl b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-karpenter/terragrunt.hcl index 2627422..42fa586 100644 --- a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-karpenter/terragrunt.hcl +++ b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-karpenter/terragrunt.hcl @@ -8,7 +8,7 @@ terraform { } dependency "eks" { - config_path = "../eks" + config_path = "../eks" mock_outputs_allowed_terraform_commands = ["plan", "validate"] mock_outputs = { cluster_endpoint = "https://0000000000000000AAAAAAAAAAAAAAAA.sk1.us-gov-east-1.eks.amazonaws.com" @@ -19,27 +19,6 @@ dependency "eks" { } } -dependencies { - paths = ["../eks-config"] -} - -locals { - helm = read_terragrunt_config(find_in_parent_folders("./_envcommon/helm-provider.hcl")) - kube = read_terragrunt_config(find_in_parent_folders("./_envcommon/kube-provider.hcl")) -} - -generate "helm" { - path = local.helm.generate.helm_provider.path - if_exists = local.helm.generate.helm_provider.if_exists - contents = local.helm.generate.helm_provider.contents -} - -generate "kube" { - path = local.kube.generate.kube_provider.path - if_exists = local.kube.generate.kube_provider.if_exists - contents = local.kube.generate.kube_provider.contents -} - inputs = { cluster_endpoint = dependency.eks.outputs.cluster_endpoint cluster_name = dependency.eks.outputs.cluster_name diff --git a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-metrics-server/terragrunt.hcl b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-metrics-server/terragrunt.hcl.off similarity index 56% rename from lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-metrics-server/terragrunt.hcl rename to lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-metrics-server/terragrunt.hcl.off index d6eb0ca..d4d19fc 100644 --- a/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-metrics-server/terragrunt.hcl +++ b/lab/development/us-gov-east-1/vpc/platform-eng-eks-mcm/eks-metrics-server/terragrunt.hcl.off @@ -19,28 +19,6 @@ dependency "eks" { } } -dependency "eks_config" { - config_path = "../eks-config" - skip_outputs = true -} - -locals { - helm = read_terragrunt_config(find_in_parent_folders("./_envcommon/helm-provider.hcl")) - kube = read_terragrunt_config(find_in_parent_folders("./_envcommon/kube-provider.hcl")) -} - -generate "helm" { - path = local.helm.generate.helm_provider.path - if_exists = local.helm.generate.helm_provider.if_exists - contents = local.helm.generate.helm_provider.contents -} - -generate "kube" { - path = local.kube.generate.kube_provider.path - if_exists = local.kube.generate.kube_provider.if_exists - contents = local.kube.generate.kube_provider.contents -} - inputs = { profile = include.root.inputs.aws_profile cluster_name = dependency.eks.outputs.cluster_name diff --git a/lab/root.hcl b/lab/root.hcl index cd31a43..7400266 100644 --- a/lab/root.hcl +++ b/lab/root.hcl @@ -40,7 +40,7 @@ locals { state_table_name = local.common_vars.locals.state_table_name terraform = local.cluster_vars.locals.terraform terragrunt = local.cluster_vars.locals.terragrunt - module_name = get_terragrunt_dir() + module_name = trimprefix(replace(run_cmd("realpath", get_original_terragrunt_dir()), dirname(get_repo_root()), ""), "/") } # Configure Terragrunt to automatically store tfstate files in an S3 bucket @@ -76,7 +76,7 @@ provider "aws" { profile = "${local.aws_profile}" default_tags { tags = { - clsuter_name = "${local.cluster_name}" + cluster_name = "${local.cluster_name}" module_name = "${local.module_name}" created_by = "${local.creator}" created_for = "${local.creator}" @@ -97,6 +97,22 @@ provider "aws" { EOF } +generate "helm_provider" { + path = "helm-provider.tf" + if_exists = "overwrite_terragrunt" + contents = templatefile("${get_repo_root()}/lab/_envcommon/helm-provider.hcl", { + cluster_name = local.cluster_name + }) +} + +generate "kube_provider" { + path = "kube-provider.tf" + if_exists = "overwrite_terragrunt" + contents = templatefile("${get_repo_root()}/lab/_envcommon/kube-provider.hcl", { + cluster_name = local.cluster_name + }) +} + # --------------------------------------------------------------------------------------------------------------------- # GLOBAL PARAMETERS # These variables apply to all configurations in this subfolder. These are automatically merged into the child