Ansible использование переменных. Предупреждение Jinja2 об использовании разделителя - PullRequest
0 голосов
/ 18 июня 2020

Я знаю, что это похоже на повторяющийся вопрос об этом конкретном предупреждении, однако мой вариант использования использует переменную таким образом, чтобы она интерпретировалась как буквальная строка при удалении {{скобок}}

ansible 2.8.1

У меня есть следующий РАБОЧИЙ Ansible фрагмент, обратите внимание на предложение when:

- name: Set DNS for data host 1
  route53:
    command: create
    zone: "{{ dns_domain_name }}"
    record: "elasticsearch-{{ env }}-01"
    type: A
    ttl: 300
    value: "{{ ec2_private_ip_address }}"
    wait: no
    private_zone: True
    overwrite: yes
  when: tag_name is match("xhost-{{ env }}01")

I ' m получает следующее предупреждение:

[WARNING]: conditional statements should not include jinja2 templating
delimiters such as {{ }} or {% %}. Found: tag_name is
match("xhost-{{ env }}01")

Если я удалю разделитель:

  when: tag_name is match("xhost-env01")

Не будет работать, поскольку он является частью строки запроса match(). Я не получаю ошибок, но запрос на совпадение не работает.

Как я могу справиться с этим, не получая надоедливых предупреждений?

Спасибо!

1 Ответ

2 голосов
/ 18 июня 2020

Вы можете создать дополнительную переменную, а затем использовать ее в match ().

- name: Set DNS for data host 1
  route53:
    command: create
    zone: "{{ dns_domain_name }}"
    record: "elasticsearch-{{ env }}-01"
    type: A
    ttl: 300
    value: "{{ ec2_private_ip_address }}"
    wait: no
    private_zone: True
    overwrite: yes
  when: tag_name is match(matcher)
  vars:
    matcher: "xhost-{{ env }}01"
...