use generate block instead of direct provider, add mock to the dependency
+33 −13 · 2 files changed
-
terraform/deployment/aks/kubectl/terragrunt.hcl+25 −10 -
terraform/deployment/aks/modules/kubectl/main.tf+8 −3
@@ -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 = "../" -} @@ -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")) }