Ansible 删除使用额外变量传递的字符串值中超出空格的内容

Ansible 删除使用额外变量传递的字符串值中超出空格的内容,ansible,jinja2,Ansible,Jinja2,我试图使用--extra vars标志传递逗号分隔的字符串。这样做就像预期的那样,我可以拆分,上的字符串,并在jinja模板中迭代结果列表: ansible-playbook test_before_role.yml \ -e DNS_SERVER="153.64.251.202,153.64.251.201" \ --inventory=qa_vm_inventory.yml 因为这个剧本是从詹金斯那里调用的,所以我想确定任何无意中输入的空白都会得到妥善处理 ansible-playboo

我试图使用
--extra vars
标志传递逗号分隔的字符串。这样做就像预期的那样,我可以拆分
上的字符串,并在jinja模板中迭代结果列表:

ansible-playbook test_before_role.yml \
-e DNS_SERVER="153.64.251.202,153.64.251.201" \
--inventory=qa_vm_inventory.yml 
因为这个剧本是从詹金斯那里调用的,所以我想确定任何无意中输入的空白都会得到妥善处理

ansible-playbook test_before_role.yml \
-e DNS_SERVER="153.64.251.202, 153.64.251.201 " \
--inventory=qa_vm_inventory.yml
下面是我的jinja模板

{% for host in DNS_SERVER.split(',') %}
nameserver {{ host }}
{% endfor %}
ansible不喜欢将空格作为额外变量的一部分吗?还是我忽略了什么?一些答案将不胜感激


谢谢。

当使用“-e”时,您确实需要引用字符串(虽然它可能在某种程度上适用于一个变量,但如果您想要传递多个变量,您肯定需要引用),因此将其更改为此,它应该可以工作:

ansible-playbook test_before_role.yml \
  -e "DNS_SERVER='153.64.251.202, 153.64.251.201 '" \
  --inventory=qa_vm_inventory.yml
然后可以修剪拆分的图元:

{% for host in ( DNS_SERVER.split(',') | map('trim') | list ) %}
nameserver {{ host }}
{% endfor %}

当使用“-e”时,您确实需要引用字符串(虽然它可能在某种程度上适用于一个变量,但如果您想要传递多个变量,您肯定需要引用),因此将其更改为此,它应该可以工作:

ansible-playbook test_before_role.yml \
  -e "DNS_SERVER='153.64.251.202, 153.64.251.201 '" \
  --inventory=qa_vm_inventory.yml
然后可以修剪拆分的图元:

{% for host in ( DNS_SERVER.split(',') | map('trim') | list ) %}
nameserver {{ host }}
{% endfor %}

谢谢,我没有意识到要列表的修剪和管道。谢谢,我没有意识到要列表的修剪和管道。