我有一本包含多个任务的剧本。我需要 Ansible 只打印包含 STDOUT /debug 任务的任务
- hosts: "{{ v_host }}"
gather_facts: no
tasks:
- name: "Create /tmp in target in all VM's "
file:
path: /tmp
state: directory
owner: oracle
group: oinstall
mode: 0775
- copy:
src: /xxx
dest: /yyy
owner: oracle
group: oinstall
force: yes
mode: 0755
- name: "Performing {{ patch_action }} of CPU patch on {{ v_host }} "
shell: |
cd /tmp
sudo -u oracle ./patch.sh
register: out
- debug: var=out.stdout_lines
Run Code Online (Sandbox Code Playgroud)
我执行不带 -v 选项的剧本以获得更清晰的输出。输出如下所示。
ansible-playbook test.yml --extra-vars v_host=xyz.com.
TASK [Create /tmp in target in all VM's] ********************************************************************
ok: [ixyz.com]
TASK [copy] ********************************************************************
ok: [xyz.com]
TASK [Performing of CPU patch on xyz.com] ***
changed: [xyz.com]
TASK [debug] *******************************************************************
ok: [xyz.com] => {
"out.stdout_lines": [
"Patch 123456 : applied on Tue Sep 29 10:11:58 GMT 2020",
"Patch description: \"one-off\"",
"Patch 987654 : applied on Tue Sep 29 10:08:39 GMT 2020",
"Patch description: \"One-off\"",
]
}
Run Code Online (Sandbox Code Playgroud)
当我执行剧本时,是否有一个选项,它只为我提供 stdout/debug 的输出。我需要的唯一输出是
TASK [debug] *******************************************************************
ok: [xyz.com] => {
"out.stdout_lines": [
"Patch 123456 : applied on Tue Sep 29 10:11:58 GMT 2020",
"Patch description: \"one-off\"",
"Patch 987654 : applied on Tue Sep 29 10:08:39 GMT 2020",
"Patch description: \"One-off\"",
]
}
Run Code Online (Sandbox Code Playgroud)
可以使用回调actionable仅选择已更改的任务。请参阅“ansible-doc -t 回调可操作”
“当您不关心“确定”或“已跳过”时,请使用此回调。此回调会抑制任何非“失败”或“已更改”状态。”
例如,下面的剧本
shell> cat pb.yml
- hosts: localhost
tasks:
- stat:
path: /etc/passwd
register: result
- debug:
var: result.stat.mode
- debug:
msg: test message
changed_when: actionable|default(false)|bool
Run Code Online (Sandbox Code Playgroud)
给出
shell> ansible-playbook pb.yml
PLAY [localhost] ****
TASK [stat] ****
ok: [localhost]
TASK [debug] ****
ok: [localhost] => {
"result.stat.mode": "0644"
}
TASK [debug] ****
ok: [localhost] => {
"msg": "test message"
}
PLAY RECAP ****
localhost: ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Run Code Online (Sandbox Code Playgroud)
可操作的回调将抑制输出。例如
shell> ANSIBLE_STDOUT_CALLBACK=actionable ansible-playbook pb.yml
PLAY [localhost] ****
PLAY RECAP ****
localhost: ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Run Code Online (Sandbox Code Playgroud)
您可以通过控制所选任务的更改状态来启用其输出。例如
shell> ANSIBLE_STDOUT_CALLBACK=actionable ansible-playbook pb.yml -e "actionable=true"
PLAY [localhost] ****
TASK [debug] ****
changed: [localhost] => {
"msg": "test message"
}
PLAY RECAP ****
localhost: ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Run Code Online (Sandbox Code Playgroud)
问:“如何使用‘默认’而不是‘可操作’来执行我的剧本? ”
A:下面的命令给出相同的结果
shell> ANSIBLE_STDOUT_CALLBACK=default ANSIBLE_DISPLAY_SKIPPED_HOSTS=false ANSIBLE_DISPLAY_OK_HOSTS=false ansible-playbook pb.yml -e "actionable=true"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5447 次 |
| 最近记录: |