清除Ansible Jinja2 if语句中的尾随\n
到目前为止,我已经查看了大约10个stackoverflow帖子,但没有任何东西能够解决我的问题。我试图将变量设置为预定义值或新生成的值。为此,我使用Ansible Jinja2 if语句 我确实尝试过使用Jinja2空白控件清除Ansible Jinja2 if语句中的尾随\n,ansible,jinja2,newline,Ansible,Jinja2,Newline,到目前为止,我已经查看了大约10个stackoverflow帖子,但没有任何东西能够解决我的问题。我试图将变量设置为预定义值或新生成的值。为此,我使用Ansible Jinja2 if语句 我确实尝试过使用Jinja2空白控件({%-%}),它们对空白起作用,如前所述|修剪也不起作用。尾随的\n仍然存在 问题:当使用Ansible Jinja2if时,它会不断向字符串添加“\n” 示例: --- - name: Example Playbook hosts: localhost
({%-%})
,它们对空白起作用,如前所述<代码>|修剪也不起作用。尾随的\n
仍然存在
问题:当使用Ansible Jinja2if
时,它会不断向字符串添加“\n”
示例:
---
- name: Example Playbook
hosts: localhost
tasks:
- name: Set password
set_fact:
password: "Testing"
# Supposed to go route {{ password }}
- name: Set Password 1
set_fact:
password1: >
{% if password is defined -%}
{{ password }}
{%- else -%}
{{ lookup('password', '/dev/null length=10 chars=ascii_letters,digits') }}
{%- endif %}
# Supposed to go route {{ lookup... }}
- name: Set Password 2
set_fact:
password2: >
{% if notexist is defined -%}
{{ password }}
{%- else -%}
{{ lookup('password', '/dev/null length=10 chars=ascii_letters,digits') }}
{%- endif %}
# Directly setting password3 via {{ lookup... }}
- name: Set Password 3
set_fact:
password3: "{{ lookup('password', '/dev/null length=10 chars=ascii_letters,digits') }}"
- name: Output Passwords
debug:
msg: "Password1: '{{ password1 }}', Password2: '{{ password2 }}', Password3: '{{ password3 }}'"
...
TASK [Output Passwords] ****************************************************************************************************************
ok: [localhost] => {
"msg": "Password1: 'Testing\n', Password2: 'DawDj7sXEb\n', Password3: 'F9rHw3StT6'"
}
输出:
---
- name: Example Playbook
hosts: localhost
tasks:
- name: Set password
set_fact:
password: "Testing"
# Supposed to go route {{ password }}
- name: Set Password 1
set_fact:
password1: >
{% if password is defined -%}
{{ password }}
{%- else -%}
{{ lookup('password', '/dev/null length=10 chars=ascii_letters,digits') }}
{%- endif %}
# Supposed to go route {{ lookup... }}
- name: Set Password 2
set_fact:
password2: >
{% if notexist is defined -%}
{{ password }}
{%- else -%}
{{ lookup('password', '/dev/null length=10 chars=ascii_letters,digits') }}
{%- endif %}
# Directly setting password3 via {{ lookup... }}
- name: Set Password 3
set_fact:
password3: "{{ lookup('password', '/dev/null length=10 chars=ascii_letters,digits') }}"
- name: Output Passwords
debug:
msg: "Password1: '{{ password1 }}', Password2: '{{ password2 }}', Password3: '{{ password3 }}'"
...
TASK [Output Passwords] ****************************************************************************************************************
ok: [localhost] => {
"msg": "Password1: 'Testing\n', Password2: 'DawDj7sXEb\n', Password3: 'F9rHw3StT6'"
}
将-
添加到if语句会删除空白,但不会删除'\n'
。我需要不带换行符的字符串
谢谢你的帮助 好了,问题解决了
这不是由Jinja2引起的,而是YAML多行处理
。我只是在
中添加了一个-
,结果-
而\n
就消失了
见: