У меня есть следующий, относительно сложный фрагмент YAML:
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: ${aws_iam_role.tf-eks-node.arn}
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
Теперь я хочу перевести это в совместимый с Terraform-Kubernetes ресурс, который состоит исключительно из String, Lists и Maps.Как мне это сделать?Я нашел пример того, как LimitRange будет выглядеть здесь с использованием дефисов для обозначения списка:
resource "kubernetes_limit_range" "example" {
metadata {
name = "terraform-example"
}
spec {
limit {
type = "Pod"
max {
cpu = "200m"
memory = "1024M"
}
}
limit {
type = "PersistentVolumeClaim"
min {
storage = "24M"
}
}
limit {
type = "Container"
default {
cpu = "50m"
memory = "24M"
}
}
}
}
Моя текущая попытка блока mapRoles выглядит следующим образом:
mapRole { rolearn = "${aws_iam_role.tf-eks-node.arn}"
username = "system:node:{{EC2PrivateDNSName}}"
groups = ["system:bootstrappers","system:nodes"]}
Это не правильно, потому что mapRoles является списком (потому что его единственный элемент является элементом списка, как показано дефисом);но если это список, и все, что после дефиса является элементом списка, каков заголовок списка?
, используя идею, упомянутую в ответе, я попытался заранее поместить блок метаданных в блок данных.:
data "template_file" "map_roles" {
template = <<EOF
- rolearn: ${var.arn}
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
EOF
vars {
arn = "${var.kube-arn}"
}
}
resource "kubernetes_config_map" "aws_auth" {
metadata {
name = "aws-auth"
namespace = "kube-system"
}
data {
mapRoles = "${data.template_file.map_roles.template}"
}
}