Отображение стандартного вывода оболочки реального времени в реальном времени

Я хочу увидеть 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 ?

1
задан 24 June 2019 в 12:17
1 ответ

"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
2
ответ дан 3 December 2019 в 20:07

Теги

Похожие вопросы