Как я могу зациклить массив в этой ситуации? - PullRequest
0 голосов
/ 13 марта 2019

У меня в плейбуке есть следующие переменные:

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 Ответ

1 голос
/ 13 марта 2019

Да.Возможно. строка ниже

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...