Рейтинг:0

Предоставление значения хостов для Ansible playbook через условия Jinja

флаг cn

У меня есть роль Ansible, которую я хочу выполнять на определенных хостах на основе определенных условий.

Я хочу заполнить хозяева из опроса Ansible Tower.Вот моя книга игр:

- имя: Автоматизация развертывания ответа HTTP
  hosts: "{% if geo == 'LHR' %}'dblhr002' {% elif geo == 'SJC' %}'dbsjc003' {% endif %}"
  собрать_факты: правда
  роли:
    - http-ответ-развернуть

Я получаю следующую ошибку при выборе LHR:

 [ПРЕДУПРЕЖДЕНИЕ]: не удалось сопоставить предоставленный шаблон хоста, игнорируя: «dblhr002».

Обратите внимание, что это не работает, когда я решаю опустить кавычки вокруг имен хостов.

TLDR; необходимо достичь условий от Ansible, как показано ниже:

если гео == "LHR": 
   хосты: dblhr002
если гео == "SJC":
   хосты: dbsjc003
Рейтинг:1
флаг th

То, что вы предоставили, работает нормально, пока дблхр002 числится в инвентаре. Шаблоны хостов соответствуют только существующим хостам, они не добавляют новые хосты в реестр.

ec2-user@pandora ~ $ cat test.yml 
- hosts: "{% if geo == 'LHR' %}'dblhr002' {% elif geo == 'SJC' %}'dbsjc003' {% endif %}"
  сбор_фактов: ложь
  задачи:
    - отладка:
ec2-user@pandora ~ $ ANSIBLE_INVENTORY_ENABLED=host_list ansible-playbook ~/test.yml -e geo=LHR -i dblhr002,

ИГРАТЬ [dblhr002] **************************************************** ******************

ЗАДАЧА [отладка] **************************************************** *********************
хорошо: [dblhr002] => {
    "msg": "Привет, мир!"
}

ОБЗОР ИГРЫ ******************************************************* *********************
dblhr002 : ok=1 изменено=0 недостижимо=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0   

Если вам нужно динамически добавить хост, используйте add_host задание в отдельной пьесе.

- хосты: локальный
  сбор_фактов: ложь
  задачи:
    - добавить_хост:
        имя: "{{ host_map[гео] }}"
        группы: target_host
      вары:
        host_map:
          ЛЧ: dblhr002
          SJC: dbsjc003

- хосты: целевой_хост
  сбор_фактов: ложь
  задачи:
    - отладка:
systrigger avatar
флаг cn
Благодарность! второй кажется более идеальным

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.