这周我将花一些时间来熟悉 Ansible。
尽管有:
$ ansible-config dump | grep -i ^ans.*color
ANSIBLE_FORCE_COLOR(default) = False
ANSIBLE_NOCOLOR(env: ANSIBLE_NOCOLOR) = True
我的输出中出现了 ANSI 风格的垃圾信息:
...
resizewin: timeout reading from terminal
...
Shared connection to host.example.com closed.
^[[45;160R 25.22 real 2.64 user 1.49 sys
$ 5;160R5;160R5;160R5;160R
另外,有什么办法可以只是stdout
ansible 作业,没有 Ansible工件
host.example.com | CHANGED | rc=0 >>
和
Shared connection to host.example.com closed.
我可以看到输出在某些情况下是有价值的,但在其他情况下,我希望能够仅捕获stdout
。目前,我正在使用head
和tail
技巧来删除输出的第一行和最后两行,这很有效,但很累人。
$ ansible-config dump --only-changed
ANSIBLE_NOCOLOR(/usr/local/etc/ansible/ansible.cfg) = True
DEFAULT_PRIVATE_KEY_FILE(/usr/local/etc/ansible/ansible.cfg) = /home/jim/.ssh/my-ansible-id_rsa
答案1
临时ansible
输出有时包括返回值的字典,警告会发送到 stderr。但第一行看起来像是供人类使用的东西,而不是机器。另外,您只能运行一个任务。
如果你正在解析一项任务的结果,写剧本并用 运行它ansible-playbook
。它可能很短,没关系。
- name: Do a thing
register: result
command: /bin/uptime
- name: Print result dict
debug:
var: result
Jinja 表达式可用。仅打印出您关心的变量(可能是result.stdout
),渲染模板,根据 stdout 运行另一个命令,或者使用结果执行任意操作。