0

Using "kubectl_manifest", I am trying to add sections to a Yaml file only if a parameter exists in Terragrunt.

For example, here Im creating a yaml file and ONLY if "label" parameter exists, label's value will be added to the manifest.

resource "kubectl_manifest" "myYaml" {
  for_each = var.provisioners

  yaml_body = <<-YAML
  apiVersion: karpenter.sh/v1alpha5
  kind: Provisioner
  metadata:
    name: my-resource
  spec:
    ${try(each.value.label, "\n")}
    limits:
      resources:
        cpu: 200
        memory: 800Gi
    ttlSecondsAfterEmpty: 600
  YAML
}

In Terragrunt, label parameter looks as follows:

inputs = {   
  provisioners = {
    prov1 = {
      label = "labels: \n  newlabel: 'yes'"
    }
  }
}

I expect my Yaml resource to finally look like:

  apiVersion: karpenter.sh/v1alpha5
  kind: Provisioner
  metadata:
    name: my-resource
  spec:
    labels:
      newlabel: "yes"
    limits:
      .
      .
      .
      .

but instead I get:

  apiVersion: karpenter.sh/v1alpha5
  kind: Provisioner
  metadata:
    name: my-resource
  spec:
    newlabel: "yes"
    labels: null
    limits:
      .
      .
      .
      .

What is wrong with my logic? Is there a better way to add sections to Yaml file using "kubectl_manifest" resource?

jrz
  • 1,213
  • 4
  • 20
  • 54

0 Answers0