← azuredeploy

use generate block instead of direct provider, add mock to the dependency

fca8a22b37aa914cbf53aa3086dec0c8029a2ac4 · ovidiucs · Jul 23, 2024 19:43

+33 −13 · 2 files changed

  • terraform/deployment/aks/kubectl/terragrunt.hcl +25 −10
  • terraform/deployment/aks/modules/kubectl/main.tf +8 −3
diff --git a/terraform/deployment/aks/kubectl/terragrunt.hcl b/terraform/deployment/aks/kubectl/terragrunt.hcl
index 8a4eb0e..b0b074d 100644
--- a/terraform/deployment/aks/kubectl/terragrunt.hcl
+++ b/terraform/deployment/aks/kubectl/terragrunt.hcl
@@ -6,14 +6,32 @@ terraform {
   source = "../modules//kubectl/"
 }
 
-# Kubernetes provider configuration
+dependency "akscluster" {
+  config_path = "../"
+  mock_outputs = {
+     host                   = "dummy-host"
+     username               = "dummy-username"
+     password               = "dummy-password"
+     client_certificate     = "dummy-cert"
+     client_key             = "dummy-key"
+     cluster_ca_certificate = "dummy-ca-cert"
+     }
+     mock_outputs_allowed_terraform_commands = ["plan", "validate"]
+}
+
+generate "provider" {
+  path      = "provider.tf"
+  if_exists = "overwrite_terragrunt"
+  contents  = <<EOF
 provider "kubernetes" {
-  host                   = dependency.aksclauster.outputs.host
-  username               = dependency.akscluster.outputs.username
-  password               = dependency.akscluster.outputs.password
-  client_certificate     = base64decode(dependency.akscluster.outputs.client_certificate)
-  client_key             = base64decode(dependency.akscluster.outputs.client_key)
-  cluster_ca_certificate = base64decode(dependency.akscluster.outputs.cluster_ca_certificate)
+  host                   = "${dependency.akscluster.outputs.host}"
+  username               = "${dependency.akscluster.outputs.username}"
+  password               = "${dependency.akscluster.outputs.password}"
+  client_certificate     = base64decode("${dependency.akscluster.outputs.client_certificate}")
+  client_key             = base64decode("${dependency.akscluster.outputs.client_key}")
+  cluster_ca_certificate = base64decode("${dependency.akscluster.outputs.cluster_ca_certificate}")
+}
+EOF
 }
 
 inputs = {
@@ -24,6 +42,3 @@ inputs = {
      }
    }
    
-dependency "akscluster" {
-  config_path = "../"
-}
diff --git a/terraform/deployment/aks/modules/kubectl/main.tf b/terraform/deployment/aks/modules/kubectl/main.tf
index cae1cdf..94867b0 100644
--- a/terraform/deployment/aks/modules/kubectl/main.tf
+++ b/terraform/deployment/aks/modules/kubectl/main.tf
@@ -9,6 +9,11 @@ terraform {
   # Provider functions require Terraform 1.8 and later.
   required_version = ">= 1.8.0"
 }
+
+variable "config_path" {
+     default = "kubectl-cfg"
+   }
+   
 /*
 provider "kubernetes" {
         #host                   = azurerm_kubernetes_cluster.cluster.kube_config.0.host
@@ -28,13 +33,13 @@ resource "kubernetes_manifest" "harness_delegate" {
 
 */
 resource "kubernetes_manifest" "clusterrolebinding" {
-  manifest = yamldecode(file("${path.module}/kubectl-cfg/clusterrolebinding.yaml"))
+  manifest = yamldecode(file("${path.module}/${var.config_path}/clusterrolebinding.yaml"))
 }
 
 resource "kubernetes_manifest" "secret" {
-  manifest = yamldecode(file("${path.module}/kubectl-cfg/secret.yaml"))
+  manifest = yamldecode(file("${path.module}/${var.config_path}/secret.yaml"))
 }
 
 resource "kubernetes_manifest" "serviceaccount" {
-  manifest = yamldecode(file("${path.module}/kubectl-cfg/serviceaccount.yaml"))
+  manifest = yamldecode(file("${path.module}/${var.config_path}/serviceaccount.yaml"))
 }