首页 > 解决方案 > Consul-Termplate - 将变量插入“带秘密”证书调用的语法是什么

问题描述

我正在尝试使用 vault-agent 的模板功能将服务器特定的证书和密钥从 vault 下载到我的每个领事服务器。

推荐的方法是将通用名称和 SAN 设置为 HOSTNAME.DATACENTER.DOMAIN。我正在使用模板变量来构建特定于模板中节点的 CN,但我无法获得正确的语法以在“with secret”调用中正确使用该变量

模板现在看起来像这样

{{ with node }}
  {{ $CN := {{ .Node.Node }}.{{ .Node.Datacenter }}.paradigm }}
  {{ with secret "pki/issue/certs" "common_name=$CN" "alt_names=localhost $CN" "ip_sans=127.0.0.1" "ttl=72h" }}
    {{- .Data.certificate -}}
  {{ end }}
{{ end }}

当我在 with secret 调用中手动键入所需的 CN 时,它可以正常工作并写出证书,因此我的 Vault 访问正常工作。但是,当使用变量方法时,这会失败并显示“$CN 不是此角色允许的通用名称”。这似乎表明模板正在将“$CN”作为文字文本读取,而不是将其解析为设置值。

这对我来说似乎是一个语法错误,但在过去 2 天里尝试了多个选项,我希望有人能给我一个关于正确语法的指针(或者让我摆脱痛苦并告诉我我正在尝试不可能完成的任务)

在此先感谢您的帮助

标签: templateshashicorp-vaultconsul-templatetemplate-variables

解决方案


推荐阅读