ANSIBLE set_fact Ошибка if-else - PullRequest
       4

ANSIBLE set_fact Ошибка if-else

0 голосов
/ 12 февраля 2019

Я пытаюсь установить значение set_fact в соответствии с условием if-else. Ниже приведен синтаксис, который я использую для условия if-else.

- name: set the server details
  set_fact:
    ad_server: "{{ '{{ server.westeurope }}' if ('{{ ansible_local.vdc.location }}' == 'westeurope') else '{{ server.eastus2 }}' }}"
    ad_server_ip: "{% if'{{ ansible_local.vdc.location }}'=='westeurope' %}{{ server_ip.westeurope }}{% else %}{{ server_ip.eastus2 }}{% endif %}"

- debug:
    msg: "{{ ansible_local.vdc.location }},{{ ansible_local.vdc.binaryrepo_url }},{{ ad_server }},{{ ad_server_ip }}"

Я уже объявил мой раздел переменных с деталями, как указано ниже:

server:
  westeurope: WIN030123
  eastus2: WIN100270
server_ip:
  westeurope: 10.x.x.x
  eastus2: 10.x.x.x

мое условие if-else не может получить значение оператора if и всегда получает значениеиз условия else .. Может ли кто-нибудь предоставить мне правильный синтаксис для этой ситуации.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Используя Jinja2, существуют разные типы разметки для определения логики и раскрытия переменных и: дополнительная информация на странице Jinja2 Ansible .

Так что, если вы хотите выполнять логику (разветвление) и расширение переменных в одной строке, как при первой установке факта, которая будет:

    ad_server: "{% if ansible_local.vdc.location == 'westeurope' %}{{ server.westeurope }}{% else %}{{ server.eastus2 }}{% endif %}"

Пожалуйста, попробуйте.

0 голосов
/ 12 февраля 2019

Используйте Jinja2 , если выражение :

- name: set the server details
  set_fact:
    ad_server: "{{ server.westeurope if ansible_local.vdc.location == 'westeurope' else server.eastus2 }}"
    ad_server_ip: "{{ server_ip.westeurope if ansible_local.vdc.location == 'westeurope' else server_ip.eastus2 }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...