Рейтинг:0

Как зарегистрировать переменную в одной роли и использовать ее в другой в Ansible?

флаг np

Я пытаюсь зарегистрировать переменную в роли, а затем использовать ее в другой.

Вот разные файлы, которые я использую:

playbook.yml

---
- хосты: hostsgroup1
  [...]
  роли:
    - роль1
- хосты: 127.0.0.1
  подключение: местное
  роли:
    - роль2

роль1/задачи/main.yml

- имя: Пример 1
  [...]
- имя: Пример 2
  ракушка:
    агент qm {{ VM_id }} network-get-interfaces |grep ip-адрес |grep '172.20' |grep -oE '((1?[0-9][0-9]?|2[0-4][ 0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5 ])'
  регистр: var_role1

роль2/задачи/main.yml

- название: Добавление сервера в бастион
  доступный.встроенный.отладка:
    сообщение: Тест {{var_role1.stdout}}

Для информации, команда агента qm дает мне IP-адрес, и я хочу использовать его во второй роли. Но, очевидно, на данный момент он отображает ошибку, когда я запускаю playbook:

фатальный: [127.0.0.1]: НЕУДАЧА! => {"msg": "Задача включает параметр с неопределенной переменной. Ошибка: \"hostvars['proxmoxhosts']\" is undefined\n\nПохоже, ошибка находится в '/root/ansible/roles /bastion_add/tasks/main.yml': строка 3, столбец 3, но может быть\nв другом месте файла в зависимости от конкретной проблемы с синтаксисом.\n\nСбойная строка выглядит так:\n\n# файл задач для bastion_add \n- имя: Добавление сервера в бастион\n ^ здесь\n"}

Подводя итог, я хочу использовать var_role1, зарегистрированную в роли1, в роли2.

Рейтинг:1
флаг in

set_fact должен сделать трюк.

- имя: Пример 2
  ракушка:
    агент qm {{ VM_id }} network-get-interfaces |grep ip-адрес |grep '172.20' |grep -oE '((1?[0-9][0-9]?|2[0-4][ 0-9]|25[0-5])\.){3}(1?[0-9][0-9]?|2[0-4][0-9]|25[0-5 ])'
  регистр: var_role1
- set_fact:
    var_role1: "{{ var_role1.stdout }}"
Milos Vé avatar
флаг np
Должен ли я называть переменную иначе, чем "{{ var_role1.stdout }}" во второй роли? Потому что это все еще не работает с вашими советами
флаг in
TBH Я действительно не проверял это. `var_role1`, конечно, был неправильным, `var_role1.stdout` должен быть правильным.

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

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