Я пытаюсь передать сертификат в качестве метаданных в свой проект, чтобы каждый вновь созданный экземпляр имел к нему доступ. Я пытаюсь достичь этого с помощью терраформного ресурса "google_compute_project_metadata". Я пытаюсь передать это:
resource "google_compute_project_metadata" "cert" {
metadata {
${var.cluster_prefix}crt-etcd="${var.cert_path}/cert.pem"
${var.cluster_prefix}key-etcd="${var.cert_path}/cert-key.pem"
}
depends_on = ["null_resource.generate_cert"]
}
Но это не срабатывает
Error loading modules: module cert: Error parsing .terraform/modules/b47b15a6431fda040235ee9e28b0836d/cert.tf: At 14:5: illegal char
Насколько я понимаю, ему не нравится использовать переменную в качестве ключа. Но если я его пропущу, это приведет к беспорядку в метаданных проекта. Есть обходные пути? Спасибо!
Динамические ключи не поддерживаются при использовании синтаксиса блока, подобного этому, но поскольку metadata
является атрибутом карты (в отличие от структурированного дочернего блока), вы можете назначить его, используя выражение, которое создает динамическую карту, например:
resource "google_compute_project_metadata" "cert" {
metadata = "${map("${var.cluster_prefix}crt-etcd", "${var.cert_path}/cert.pem", "${var.cluster_prefix}key-etcd", "${var.cert_path}/cert-key.pem")}"
depends_on = ["null_resource.generate_cert"]
}
Для получения дополнительной информации о том, как это работает, обратитесь к документы для map
функция.