#loops #ansible
#циклы #ansible
Вопрос:
У меня есть следующие переменные в моем сборнике воспроизведения:
frontends:
- domain01.fr
- domain02.fr
- domain03.fr
- domain04.fr
Мне нужно иметь возможность записать следующее в файл с помощью шага Ansible playbook:
tcp://domain01.fr:11211,tcp://domain02.fr:11211,tcp://domain03.fr:11211,tcp://domain04.fr:11211
Я придумал следующее решение, но оно мне не нравится.
- name: Setting up Apache (2/2)
lineinfile:
path: /etc/opt/rh/rh-php56/php.ini
regexp: '^session.save_path ='
line: "session.save_path = 'tcp://{{ frontends | join(':11211,tcp://') }}'"
Я не могу жестко записать домены внутри lineinfile
метода, потому что это сильно зависит, плюс бывают ситуации, когда у меня есть только 2 домена вместо 4.
Возможно ли иметь что-то вроде следующего:
- name: Setting up Apache (2/2)
lineinfile:
path: /etc/opt/rh/rh-php56/php.ini
regexp: '^session.save_path ='
line: "session.save_path = '{% for frontend in frontends %} tcp://{% frontend %}:11211,{% endfor %}'"
Заранее благодарю вас
Ответ №1:
ДА. Это возможно. Строка ниже
regexp: '^session.save_path ='
line: >-
session.save_path ={% for frontend in frontends %}
tcp://{{ frontend }}:11211{% if not loop.last %},{% endif %}{% endfor %}
дает
session.save_path = tcp://domain01.fr:11211, tcp://domain02.fr:11211, tcp://domain03.fr:11211, tcp://domain04.fr:11211