added second state file for kubectl module, corrected some outputs
+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
@@ -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 } } - @@ -1,5 +1,5 @@ terraform { - backend "azurerm" {} +# backend "azurerm" {} } provider "azurerm" { @@ -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")) @@ -3,6 +3,7 @@ variable "cluster_config" { type = object({ host = string client_key = string + client_certificate = string cluster_ca_certificate = string }) } @@ -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 +} + @@ -10,6 +10,10 @@ remote_state { container_name = "terraform-state" key = "aks/terraform.tfstate" } + generate = { + path = "backend.tf" + if_exists = "overwrite_terragrunt" + } } inputs = { @@ -2,7 +2,7 @@ terraform { required_providers { azurerm = { source = "hashicorp/azurerm" - version = "~> 3.95.0" + version = "~> 3.106.1" } } }