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?