【问题标题】:terraform formatlist to add SSH private keyterraform formatlist 添加 SSH 私钥
【发布时间】:2020-11-26 14:59:17
【问题描述】:

我需要将私有 ssh-key 添加到 yaml 配置文件。我需要用 terraform 来做到这一点。

我需要这种格式:

              privateKey: |
                -----BEGIN OPENSSH PRIVATE KEY-----
                b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn

我用 formatlist 函数尝试了以下内容。

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("                %s\n", [data.ansiblevault_path.private_key.value])

  })
}

使用这个模板

              privateKey: |
%{ for line in PRIVATE_KEY_TEST ~}${line}%{ endfor ~}

但这仅适用于此处显示的第一行:

              privateKey: |
                -----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABFwAAAAdzc2gtcn

我怎样才能使所有行的前面都有正确的空格?

【问题讨论】:

    标签: yaml terraform


    【解决方案1】:

    我找到了一个非常简单的解决方案。这完全是关于模板文件中具有正确缩进的格式。

                  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)
      })
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 2020-03-29
      • 2020-12-27
      • 2016-12-03
      • 2019-10-11
      相关资源
      最近更新 更多