Ansible剧本中的多行变量没有换行符(空格)

Multiline variable in Ansible playbook without newlines (spaces)

我正在尝试在 Ansible 中定义一个“复杂的”(带引号)多行变量。由于多行设置,我不想要 spaces。每行末尾的“换行符”被翻译成 space。我曾尝试使用“”转义换行符,如互联网上许多 questions/answers 所示,但 Ansible 似乎忽略了“”。

代码示例:

      set_fact: 
        test: >-
          "v=DKIM1; k=rsa;" "p=MIIBIjANBgkqhkwetuwweeTYRjEFAAOCAQ8AMIIBCgKCA\
          QEAtJltC/t70wayxq0Rws5R7t+Q2GZ2llnY0nSHDkVnP9kDaYBTyHCk+OoiCehHjUr\
          9/60Rp7v5xDiS9ta5w8c4pyqgWCIvj7iCPVfVzEtSfOp0iwmvGvKeBMhY62+7BYyQ5\
          zOt45pJHVqQt78/L2S75AZY2RUVv85AXXUlx8Os54dBz8DsdnWilH+o0Ce+ZAor70i\
          z0TkEVCnuom" "3xv/bLbOyFI7EoxbhU2NVIer3uanPbl6HUr4B2P3y695yh4fi+oq\
          oOAM8Ah0rx0iruqcgoEPhNriEJ1PxW6ZDwFFnDgmR3hCaULQl4OtkWGwhG87ISBxC3\
          66xBjT+rTLys1yT0uu3QIDAQAB""

这导致 spaces 到处都是换行符(在行尾)。例如:

"v=DKIM1; k=rsa;" "p=MIIBIjANBgkqhkwetuwweeTYRjEFAAOCAQ8AMIIBCgKCA (space!!!) QEAtJltC/t70wayxq0Rws5R7t+Q2GZ2llnY0nSHDkVnP9kDaYBTyHCk+OoiCehHjUr...

如何解决这个问题?

试试这个:

set_fact:
  test: 'a\
    b\
    c'

如果使用变量,可以使用:

set_fact:
  my_var: abc

set_fact:
  test: >-
    {{ my_var -}}
    def
    {{- my_var }}

这将导致 'abcdefabc'。

使用folded style并拆分行。然后加入他们。例如,给定简化数据

    test: |-
       "v=DKIM1; k=rsa;" "p=MIIB
       QEAtJltC/t70wayxq0Rws5R7"

调试任务

    - debug:
        msg: "{{ test|split('\n')|join }}"

给予

  msg: '"v=DKIM1; k=rsa;" "p=MIIBQEAtJltC/t70wayxq0Rws5R7"'

对于低于 2.11 的 Ansible,使用 split 作为方法

    - debug:
        msg: "{{ test.split('\n')|join }}"