Назад | Перейти на главную страницу

Стандартный вывод оболочки Ansible в реальном времени

Я хочу увидеть в реальном времени 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