Я использую 2 связанных сборника игр, подробности указаны ниже.
playbook1: сбор необработанных данных с нескольких машин
- хосты: target_1
сбор_фактов: ложь
задачи:
- имя: зарегистрировать новое значение
оболочка: df -h|awk '{gsub("%","|");print $5 $6}'
зарегистрироваться: PLAY1VAR
- отладка: msg="{{PLAY1VAR.stdout}}"
- имя: зарегистрировать новое значение
оболочка: имя хоста
зарегистрироваться: PLAY2VAR
- отладка: msg="{{PLAY2VAR.stdout}}"
- имя: Зарегистрировать фиктивный хост с переменной
add_host:
имя: "DUMMY_HOST"
PLAY1VAR_NEW: " {{PLAY1VAR.stdout }}"
- имя: Зарегистрировать фиктивный хост с переменной
add_host:
имя: "DUMMY_HOST_1"
PLAY2VAR_NEW: " {{ PLAY2VAR.stdout }}"
- хосты: target_2
сбор_фактов: ложь
задачи:
- имя: зарегистрировать новое значение
playbook2: анализировать данные с помощью скрипта Python
- хосты: локальный
сбор_фактов: ложь
задачи:
- имя: эхо вывода - значение переменной PLAY1
команда: python3 /opt/diskspace_watcher/watcher.py '{{hostvars['DUMMY_HOST']['PLAY1VAR_NEW']}}' '{{hostvars['DUMMY_HOST_1']['PLAY2VAR_NEW']}}'
зарегистрироваться: PLAY2_RESULTS
- отладка: msg="{{PLAY2_RESULTS.stdout}}"
Я передаю пару переменных из первого playbook в другой, когда я запускаю это только для одного хоста, он работает, как и ожидалось, но при попытке запуска для нескольких хостов он не может передать аргументы для всех хостов, упомянутых в инвентаре. файл и просто выбирает одну переменную для конкретного хоста.
Я ищу способ выполнить это. Любая помощь/идея приветствуется!!