如何从 Ansible 作业获取更清晰的输出?

如何从 Ansible 作业获取更清晰的输出?

这周我将花一些时间来熟悉 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

另外,有什么办法可以只是stdoutansible 作业,没有 Ansible工件

 host.example.com | CHANGED | rc=0 >>

Shared connection to host.example.com closed.

我可以看到输出在某些情况下是有价值的,但在其他情况下,我希望能够仅捕获stdout。目前,我正在使用headtail技巧来删除输出的第一行和最后两行,这很有效,但很累人。

$ 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 运行另一个命令,或者使用结果执行任意操作。

相关内容