Я хочу увидеть в реальном времени shell
stdout вместо register
в переменную, а затем отобразить после ее завершения.
Пример пособия - test.yml
- name: Testing RUN Shell Command
hosts: localhost
connection: local
tasks:
- name: Runnig Update
shell: apt update
Выход по умолчанию
$ ansible-playbook test.yml
PLAY [Testing RUN Shell Command] ******************************************************************************************************
TASK [Gathering Facts] ****************************************************************************************************************
ok: [localhost]
TASK [Runnig Update] ******************************************************************************************************************
changed: [localhost]
PLAY RECAP ****************************************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0
Но я хочу посмотреть, что происходит, когда мы запускаем apt update
в терминале
$ sudo apt update
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 http://dl.google.com/linux/chrome/deb stable Release
Hit:3 http://ppa.launchpad.net/brightbox/ruby-ng/ubuntu bionic InRelease
Get:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:6 http://in.archive.ubuntu.com/ubuntu bionic InRelease
Hit:7 http://ppa.launchpad.net/canonical-chromium-builds/stage/ubuntu bionic InRelease
------OUTPUT REMOVED----------
Я вижу, что уже идет обсуждение на проблема с github и похоже, что это невозможно.
Есть ли какой-нибудь трюк, чтобы получить стандартный вывод реального времени с помощью доступный обратный вызов?
Вывод «в реальном времени» или «потоковый» еще не был объединен с Ansible. В оригинальный выпуск был закрыт в 2014 году как нецелесообразный. А более новое предложение не имеет серьезных обновлений с февраля 2018 года.
Это недоступно для пользователей Ansible. Это потребует серьезного взлома и, что более важно, тестирования плагинов команд и обратного вызова, чтобы они работали, как предлагается.
Бонусный обзор плейбука: ваш пример команды может быть выполнен модулем apt. У этого больше возможностей, чем у самостоятельного вызова командной строки apt.
- name: Only run "apt-get update" if the last one is more than 3600 seconds ago
apt:
update_cache: yes
cache_valid_time: 3600