我想看到实时的shell
标准输出,而不是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 回调?
答案1
“实时”或“流式”输出尚未合并到 Ansible。原始问题2014 年因不可行而关闭。最新提案自 2018 年 2 月以来没有重大更新。
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