Рейтинг:0

Ансибль | условные операторы не должны включать шаблоны jinja2 | когда переменная group_name

флаг cn

У меня есть простой файл main_task.yml, который зацикливается на main.yml.

инвентарь.ini

[порт_22]
192.168.0.189
192.168.0.199
[порт_222]
192.168.0.199
[порт_888]
192.168.0.200 

main_task.yml

---
- name: "запустить это на {{ item }} хостах"
  отладка: msg= "это работает только на хостах p{{ item }}"
  когда: "{{ item }} в group_names"
  #когда: имена групп | выберите ("элемент | строка") | список | количество > 0

main.yml

- хосты: порт_22, порт_222
  подключение: местное
  вары:
    порты:
      - 22
      - 222

  задачи:
    - название: Проверка
      include_tasks: main_task.yml
      цикл: "{{порты}}"

Его жалобы

[ВНИМАНИЕ]: условные операторы не должны включать шаблонные разделители jinja2, такие как {{ }} или {% %}. Найдено: {{ item }} в group_names

при удалении шаблона jinja2 получаю следующее:

пропуск: [192.168.0.189]

Как я могу этого добиться?

Обновлять:

Модифицированный main.yml

- хосты: host_22, host_222
  #соединение: локальное
  вары:
    порты:
      - 22
  задачи:
    - имя: развернуть файлы с сетевым адресом в них
      include_tasks: main_task.yml
      цикл: "{{порты}}"

Модифицированный main_task.yml


- name: "запустить это на {{ item }} хостах"
  отладка: msg= "это работает только на хостах p{{ item }}"
  когда: элемент в group_names
  #когда: имена групп | выберите ("элемент | строка") | список | количество > 0

- имя: мое имя хоста
  оболочка: имя хоста; имя хоста -я
  когда: элемент в group_names
  регистрация: hostname_result

- отладка:
    переменная: hostname_result.stdout_lines

Вывод:

   ansible-playbook main.yaml -i inventory.ini -u корень

ИГРАТЬ [host_22, host_222] **************************************************** ******************************************************* ******************************************************* ******************************************************* ******************************************************* *****

ЗАДАНИЕ [Сбор фактов] *************************************************** ******************************************************* ******************************************************* ******************************************************* ******************************************************* ******
хорошо: [192.168.0.189]
хорошо: [192.168.0.199]

ЗАДАНИЕ [Проверка] **************************************************** ******************************************************* ******************************************************* ******************************************************* *******************************
включено: /home/ubuntu/ansible/test/testing_loo/main_task.yml для 192.168.0.199, 192.168.0.189 => (item=22)

ЗАДАЧА [запустить это на 22 хостах] ************************************************ ******************************************************* ******************************************************* ******************************************************* ******************************************************* ****
пропуск: [192.168.0.199]
пропуск: [192.168.0.189]

ЗАДАЧА [мое имя хоста] *************************************************** ******************************************************* ******************************************************* ******************************************************* ******************************************************* **********
пропуск: [192.168.0.199]
пропуск: [192.168.0.189]

ЗАДАЧА [отладка] **************************************************** ******************************************************* ******************************************************* ******************************************************* ******************************************************* ***************
хорошо: [192.168.0.199] => {
    "hostname_result.stdout_lines": "ПЕРЕМЕННАЯ НЕ ОПРЕДЕЛЕНА!"
}
хорошо: [192.168.0.189] => {
    "hostname_result.stdout_lines": "ПЕРЕМЕННАЯ НЕ ОПРЕДЕЛЕНА!"
}
Рейтинг:1
флаг cn
  когда: элемент в group_names

когда ключевые слова уже неявно присутствуют в выражении Jinja, удалите в них {{ }}.

Однако в вашей игре все еще есть проблемы.

Что касается задачи «Проверка» в task.yml, отладка только печатает данные, на самом деле она не выполняет проверку, как это делает задача «Утверждение». Кроме того, вы петля:ing и работают на нескольких хостах, который работает 2 * 2 = 4 раз и, вероятно, не то, что вы хотите, что приводит к дополнительным пропускам.

Я не понимаю, как задача отладки имеет значение, и полностью ее удалила бы. Существуют и другие способы просмотра содержимого групп, например ansible-inventory инструмент командной строки.

Выражение в названии задачи не сработает, как можно было ожидать. Я думаю, что это будет отражать только первый хост или что-то в этом роде.

- хозяева: все
  подключение: местное

Не используйте несколько хостов с локальным подключением. Он будет запускать что-то несколько раз, но нигде не ssh, что, вероятно, не то, что вам нужно. Плагины действий, такие как отладка, уже изначально запускаются на локальном хосте. Или вы можете указать localhost как шаблон хоста. Так:

  1. Удалить подключение: местное на игровом уровне.
  2. Используйте шаблон hosts более конкретно, чем все. хосты: порт_22,порт_222 будет работать в обеих группах, и будет более понятно, что вы намереваетесь.
divyashree kumar avatar
флаг cn
Как вы предложили, я изменил условие «когда: элемент в именах групп», удалил «соединение: локальное» и добавил шаблон узла «hosts: port_22,port_222» и вставил вывод. Но выполнение на удаленных хостах происходит неправильно, и вывод идет пустым, поскольку он «пропускает» хосты.

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

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