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 %}
谢谢,我没有意识到要列表的修剪和管道。谢谢,我没有意识到要列表的修剪和管道。