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 }}"
我正在尝试在 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 }}"