我需要向yaml配置文件添加一个专用ssh密钥。我需要用地形来做这个。
我需要这种格式:
privateKey: |
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
我尝试了以下格式化列表函数。
resource "local_file" "jenkins_yaml" {
filename = "${path.cwd}/${path.module}/jenkins.yaml"
content = templatefile("${path.cwd}/${path.module}/templates/jenkins.yaml.tpl", {
PRIVATE_KEY_TEST = formatlist(" %sn", [data.ansiblevault_path.private_key.value])
})
}
使用此模板
privateKey: |
%{ for line in PRIVATE_KEY_TEST ~}${line}%{ endfor ~}
但这只适用于这里显示的第一行:
privateKey: |
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn
我如何才能获得前面有正确空间的所有线条?
我找到了一个非常简单的解决方案。这一切都是关于在模板文件中使用正确缩进进行格式化。
privateKey: |
%{ for line in PRIVATE_KEY_TEST ~}
${line}
%{ endfor ~}
当然,在terraform文件中,我们需要在每一行换行后分割行。
resource "local_file" "jenkins_yaml" {
filename = "${path.cwd}/${path.module}/jenkins.yaml"
content = templatefile("${path.cwd}/${path.module}/templates/jenkins.yaml.tpl", {
PRIVATE_KEY_TEST = split("n", data.ansiblevault_path.private_key.value)
})
}