terraform formatlist添加SSH私钥



我需要向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)
})
}

最新更新