Currently I have:
terraform {
required_providers {
kubectl = {
source = "gavinbunney/kubectl"
}
}
}
locals {
karpenter_manifests = toset([
"https://raw.githubusercontent.com/aws/karpenter/main/pkg/apis/crds/karpenter.k8s.aws_awsnodetemplates.yaml",
"https://raw.githubusercontent.com/aws/karpenter/main/pkg/apis/crds/karpenter.k8s.aws_ec2nodeclasses.yaml",
"https://raw.githubusercontent.com/aws/karpenter/main/pkg/apis/crds/karpenter.sh_machines.yaml",
"https://raw.githubusercontent.com/aws/karpenter/main/pkg/apis/crds/karpenter.sh_nodeclaims.yaml",
"https://raw.githubusercontent.com/aws/karpenter/main/pkg/apis/crds/karpenter.sh_nodepools.yaml",
"https://raw.githubusercontent.com/aws/karpenter/main/pkg/apis/crds/karpenter.sh_provisioners.yaml",
])
}
data "http" "karpenter_crd_raw" {
for_each = local.karpenter_manifests
url = each.key
}
data "kubectl_file_documents" "karpenter_crd_doc" {
for_each = data.http.karpenter_crd_raw
content = each.value.response_body
}
resource "kubectl_manifest" "karpenter_crd" {
for_each = data.kubectl_file_documents.karpenter_crd_doc.manifests
yaml_body = each.value
}
but that errors:
│ Because data.kubectl_file_documents.karpenter_crd_doc has "for_each" set, its attributes must be accessed on specific instances.
│
│ For example, to correlate with indices of a referring resource, use:
│ data.kubectl_file_documents.karpenter_crd_doc[each.key]