Содержимое за пределами пробелов в строковых значениях, переданных с использованием лишних переменных, отброшено - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь передать строку через запятую, используя флаг --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 не похож на пробелы как часть экстра-переменных?Или я что-то упускаю?Некоторые ответы будут высоко оценены!

Спасибо.

1 Ответ

0 голосов
/ 21 декабря 2018

Когда вы используете '-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 %}
...