Ansible:模块的详细输出
Ansible: Verbose output for modules
我正在寻找一种方法来从 Ansible 模块中获取更详细的输出,以便 成功执行 ,但似乎已实现的唯一示例是 shell 模块,它允许注册并稍后打印 stdout 和 stderr。
虽然这是一种解决方法,但如果存在内置的 Ansible 模块,则突破 shell 并不是一个好的做法。
举个例子,模块的更详细的输出会很有用:
- name: upgrade all packages
yum: name=* state=latest
这会更新所有使用 yum 模块的软件包。但是,它没有显示更新了什么(如果有的话)。
可以在其他模块中观察到类似的行为。所以实际的问题是:是否有任何 Ansible switch/setting 可以为剧本中的 单个任务 强制输出更详细的输出? (我想挑选我得到冗长输出的地方并避免来自其他一切的噪音。)
一个想法是让另一个任务在成功时打印上一个任务的输出。我没有测试,但像这样的东西可能有用:
- name: upgrade all packages
yum: name=* state=latest
register: result
- name: Show output
when: result|succeeded
debug: msg="{{ result.stdout_lines }}"
好的,感谢@xeroqu,我现在可以自己回答了:
- name: upgrade all packages
yum: name=* state=latest
register: result
- name: Show output
when: result|succeeded
debug: msg="{{ result.results }}"
关键在 {{result.results}}
而不是 {{result.stdout_lines}}
。更准确地说,模块出现在 return 一本包含(至少?)以下内容的字典中:
ok: [localhost] => {
"msg": {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"Nothing to do here, all packages are up to date"
]
}
}
这绝对给了我想要的冗长,可以根据具体情况应用。
我正在寻找一种方法来从 Ansible 模块中获取更详细的输出,以便 成功执行 ,但似乎已实现的唯一示例是 shell 模块,它允许注册并稍后打印 stdout 和 stderr。 虽然这是一种解决方法,但如果存在内置的 Ansible 模块,则突破 shell 并不是一个好的做法。
举个例子,模块的更详细的输出会很有用:
- name: upgrade all packages
yum: name=* state=latest
这会更新所有使用 yum 模块的软件包。但是,它没有显示更新了什么(如果有的话)。
可以在其他模块中观察到类似的行为。所以实际的问题是:是否有任何 Ansible switch/setting 可以为剧本中的 单个任务 强制输出更详细的输出? (我想挑选我得到冗长输出的地方并避免来自其他一切的噪音。)
一个想法是让另一个任务在成功时打印上一个任务的输出。我没有测试,但像这样的东西可能有用:
- name: upgrade all packages
yum: name=* state=latest
register: result
- name: Show output
when: result|succeeded
debug: msg="{{ result.stdout_lines }}"
好的,感谢@xeroqu,我现在可以自己回答了:
- name: upgrade all packages
yum: name=* state=latest
register: result
- name: Show output
when: result|succeeded
debug: msg="{{ result.results }}"
关键在 {{result.results}}
而不是 {{result.stdout_lines}}
。更准确地说,模块出现在 return 一本包含(至少?)以下内容的字典中:
ok: [localhost] => {
"msg": {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"Nothing to do here, all packages are up to date"
]
}
}
这绝对给了我想要的冗长,可以根据具体情况应用。