Я хочу увидеть 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 Callback ?
"Real time" или "streaming" выход еще не объединен с Ansible. Первоначальный выпуск был закрыт в 2014 году, так как это не представляется возможным. Более свежее предложение не имеет значительных обновлений с февраля 2018 г.
Это не доступно для пользователей Допускаемого. Это потребует серьезного взлома и, что более важно, тестирования по команде и плагинов обратного вызова, чтобы работать в соответствии с предложенным.
Бонусный просмотр плейбука: Ваш пример команды может быть выполнен модулем 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