← azuredeploy

added second state file for kubectl module, corrected some outputs

753765719bee7293ace53c8a57d5df9c6a37013a · ovidiucs · Jul 27, 2024 01:13

+94 −31 · 7 files changed

  • terraform/deployment/aks/kubectl/terragrunt.hcl +23 −24
  • terraform/deployment/aks/main.tf +1 −1
  • terraform/deployment/aks/modules/kubectl/main.tf +27 −5
  • terraform/deployment/aks/modules/kubectl/variables.tf +1 −0
  • terraform/deployment/aks/outputs.tf +37 −0
  • terraform/deployment/aks/terragrunt.hcl +4 −0
  • terraform/deployment/aks/versions.tf +1 −1
diff --git a/terraform/deployment/aks/kubectl/terragrunt.hcl b/terraform/deployment/aks/kubectl/terragrunt.hcl
index b0b074d..bc61e38 100644
--- a/terraform/deployment/aks/kubectl/terragrunt.hcl
+++ b/terraform/deployment/aks/kubectl/terragrunt.hcl
@@ -1,44 +1,43 @@
-include "root" {
-  path = find_in_parent_folders("terragrunt.hcl")
+terraform {
+  source = "../modules/kubectl"
 }
 
-terraform {
-  source = "../modules//kubectl/"
+include {
+  path = find_in_parent_folders()
 }
 
+remote_state {
+  backend = "azurerm"
+  config = {
+    resource_group_name  = "AZ-Resource-GRP"
+    storage_account_name = "terragruntstorageaccount"
+    container_name       = "terraform-state"
+    key                  = "kubectl/terraform.tfstate"
+  }
+    generate = {
+    path      = "backend.tf"
+    if_exists = "overwrite_terragrunt"
+  }
+}
+
+
 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"
+     client_certificate     = "dGVzdAo="
+     client_key             = "dGVzdAo="
+     cluster_ca_certificate = "dGVzdAo="
      }
      mock_outputs_allowed_terraform_commands = ["plan", "validate"]
 }
-
-generate "provider" {
-  path      = "provider.tf"
-  if_exists = "overwrite_terragrunt"
-  contents  = <<EOF
-provider "kubernetes" {
-  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 = {
      cluster_config = {
        host                   = dependency.akscluster.outputs.host
+       client_certificate     = dependency.akscluster.outputs.client_certificate
        client_key             = dependency.akscluster.outputs.client_key
        cluster_ca_certificate = dependency.akscluster.outputs.cluster_ca_certificate
      }
    }
-   
diff --git a/terraform/deployment/aks/main.tf b/terraform/deployment/aks/main.tf
index 463dd2d..27cdcab 100644
--- a/terraform/deployment/aks/main.tf
+++ b/terraform/deployment/aks/main.tf
@@ -1,5 +1,5 @@
 terraform {
-  backend "azurerm" {}
+#  backend "azurerm" {}
 }
 
 provider "azurerm" {
diff --git a/terraform/deployment/aks/modules/kubectl/main.tf b/terraform/deployment/aks/modules/kubectl/main.tf
index 94867b0..ecc690d 100644
--- a/terraform/deployment/aks/modules/kubectl/main.tf
+++ b/terraform/deployment/aks/modules/kubectl/main.tf
@@ -14,18 +14,40 @@ variable "config_path" {
      default = "kubectl-cfg"
    }
    
+
 /*
+data "terraform_remote_state" "aks" {
+  backend = "azurerm" # Match your root module's backend
+  config = {
+    resource_group_name  = "AZ-Resource-GRP"
+    storage_account_name = "terragruntstorageaccount"
+    container_name       = "terraform-state"
+    key                  = "aks/terraform.tfstate" # Path to your root state
+  }
+}
+*/
+provider "azurerm" {
+  features {}
+}
 provider "kubernetes" {
-        #host                   = azurerm_kubernetes_cluster.cluster.kube_config.0.host
+#        username                = var.cluster_config.username
+#        password                = var.cluster_config.password
         host                    = var.cluster_config.host
-        #client_certificate     = base64decode(azurerm_kubernetes_cluster.cluster.kube_config.0.client_certificate)
-        #client_key             = base64decode(azurerm_kubernetes_cluster.cluster.kube_config.0.client_key)
+        client_certificate      = base64decode(var.cluster_config.client_certificate)
         client_key              = base64decode(var.cluster_config.client_key)
-        #cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.cluster.kube_config.0.cluster_ca_certificate)
         cluster_ca_certificate  = base64decode(var.cluster_config.cluster_ca_certificate)
 }
-# Multi decode YAML, iterate over the object
 
+/*
+provider "kubernetes" {
+       host                   = data.terraform_remote_state.aks.outputs.cluster_config.host
+       client_certificate     = base64decode(data.terraform_remote_state.aks.outputs.cluster_config.client_certificate)
+       client_key             = base64decode(data.terraform_remote_state.aks.outputs.cluster_config.client_key)
+       cluster_ca_certificate = base64decode(data.terraform_remote_state.aks.outputs.cluster_config.cluster_ca_certificate)
+     }
+*/
+# Multi decode YAML, iterate over the object
+/*
 resource "kubernetes_manifest" "harness_delegate" {
   value = provider::kubernetes::manifest_decode_multi(file("manifest.yaml"))
   manifest = yamldecode(file("harness-delegate.yml"))
diff --git a/terraform/deployment/aks/modules/kubectl/variables.tf b/terraform/deployment/aks/modules/kubectl/variables.tf
index ce9b6c3..b58e944 100644
--- a/terraform/deployment/aks/modules/kubectl/variables.tf
+++ b/terraform/deployment/aks/modules/kubectl/variables.tf
@@ -3,6 +3,7 @@ variable "cluster_config" {
   type        = object({
     host      = string
     client_key = string
+    client_certificate = string
     cluster_ca_certificate = string
   })
 }
diff --git a/terraform/deployment/aks/outputs.tf b/terraform/deployment/aks/outputs.tf
index dbf3e92..fd94634 100644
--- a/terraform/deployment/aks/outputs.tf
+++ b/terraform/deployment/aks/outputs.tf
@@ -7,3 +7,40 @@ output "aks_cluster_id" {
   description = "The ID of the AKS cluster"
   value       = module.aks.aks_id
 }
+
+output "host" {
+  description = "The host of the AKS cluster"
+  value       = module.aks.host
+  sensitive   = true
+}
+
+output "username" {
+  description = "The username of the AKS cluster"
+  value       = module.aks.username
+  sensitive   = true
+}
+
+output "password" {
+  description = "The password of the AKS cluster"
+  value       = module.aks.password
+  sensitive   = true
+}
+
+output "client_certificate" {
+  description = "The client certificate of the AKS cluster"
+  value       = module.aks.client_certificate
+  sensitive   = true
+}
+
+output "client_key" {
+  description = "The client key of the AKS cluster"
+  value       = module.aks.client_key
+  sensitive   = true
+}
+
+output "cluster_ca_certificate" {
+  description = "The cluster ca certificate of the AKS cluster"
+  value       = module.aks.cluster_ca_certificate
+  sensitive   = true
+}
+
diff --git a/terraform/deployment/aks/terragrunt.hcl b/terraform/deployment/aks/terragrunt.hcl
index e68a1f7..b4eea11 100644
--- a/terraform/deployment/aks/terragrunt.hcl
+++ b/terraform/deployment/aks/terragrunt.hcl
@@ -10,6 +10,10 @@ remote_state {
     container_name       = "terraform-state"
     key                  = "aks/terraform.tfstate"
   }
+    generate = {
+    path      = "backend.tf"
+    if_exists = "overwrite_terragrunt"
+  }
 }
 
 inputs = {
diff --git a/terraform/deployment/aks/versions.tf b/terraform/deployment/aks/versions.tf
index 4b02eaa..db49d29 100644
--- a/terraform/deployment/aks/versions.tf
+++ b/terraform/deployment/aks/versions.tf
@@ -2,7 +2,7 @@ terraform {
   required_providers {
     azurerm = {
       source  = "hashicorp/azurerm"
-      version = "~> 3.95.0"
+      version = "~> 3.106.1"
     }
   }
 }