Временно заменить переменную для включения

У меня есть такая задача:

- include: tasks/install_nginx_vhost.yml
  vars:
    domain_name: learn.{{ domain_name }}

- include: tasks/install_nginx_vhost.yml
  vars:
    domain_name: author.{{ domain_name }}

Но я получаю эту ошибку:

recursive loop detected in template string

Можно ли временно (только для включения) переопределить такую ​​​​переменную? Потому что я не хочу создавать дополнительные переменные.


person warvariuc    schedule 27.03.2015    source источник
comment
PS: Не могу не упомянуть, что это явная глупость со стороны ansible, сообщающая о такой ошибке, учитывая, что она делает только один проход при оценке выражений: stackoverflow .com/questions/29276198/   -  person Kashyap    schedule 27.03.2015


Ответы (1)


Не совсем.

- set_fact:
    learn_domain_name:  "learn.{{ domain_name }}"
    author_domain_name: "author.{{ domain_name }}"

- include: tasks/install_nginx_vhost.yml
  vars:
    domain_name: "{{ learn_domain_name }}"

- include: tasks/install_nginx_vhost.yml
  vars:
    domain_name: "{{ author_domain_name }}"

или более целесообразно, если это возможно, переименовать исходный domain_name, скажем, в domain_name_suffix. Затем:

- include: tasks/install_nginx_vhost.yml
  vars:
    domain_name: learn.{{ domain_name_suffix }}

- include: tasks/install_nginx_vhost.yml
  vars:
    domain_name: author.{{ domain_name_suffix }}
person Kashyap    schedule 27.03.2015