使用多余变量传递的字符串值中超出空格的内容已删除

时间:2018-12-21 10:24:33

标签: 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 

自从Jenkins调用此剧本以来,我想确定所有无意间输入的空格都会得到妥善处理。

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是否不喜欢空白作为Extra-vars的一部分?还是我忽略了什么?一些答案将不胜感激!

谢谢。

1 个答案:

答案 0 :(得分:2)

当使用'-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 %}