Ansible 的 debug 模块是一个非常实用的工具,用于在任务执行过程中打印文本、变量或 Ansible 事实。它属于 ansible.builtin 集合,因此默认随 Ansible 一起提供,并且支持多种操作系统。
主要参数
msg:用于指定要打印的消息,可以是纯文本或包含变量的字符串。var:用于直接打印一个变量的值。verbosity:控制消息的显示级别,范围从 0(正常执行时不显示)到 3(调试模式下显示)。默认值为 0。
默认行为
如果没有指定任何参数,debug 模块将打印默认消息 "Hello world!"。
示例:使用 debug 模块打印文本和变量
以下是一个示例 Playbook,展示如何使用 debug 模块打印文本、变量以及如何结合使用 verbosity 参数。
---
- name: debug module demo
hosts: all
vars:
fruit: "apple"
tasks:
- name: Print default message
ansible.builtin.debug:
- name: Print custom message
ansible.builtin.debug:
msg: "This is a custom message."
- name: Print variable
ansible.builtin.debug:
var: fruit
- name: Print text and variable
ansible.builtin.debug:
msg: "Our fruit is {{ fruit }}."
- name: Print with verbosity level 2
ansible.builtin.debug:
msg: "This message will only appear with verbosity level 2."
verbosity: 2
执行结果
运行上述 Playbook 时,输出将根据任务的不同而变化:
$ ansible-playbook debug_demo.yml
PLAY [debug module demo] ***************************************************
TASK [Gathering Facts] *****************************************************
ok: [localhost]
TASK [Print default message] ***********************************************
ok: [localhost] => {
"msg": "Hello world!"
}
TASK [Print custom message] ************************************************
ok: [localhost] => {
"msg": "This is a custom message."
}
TASK [Print variable] ******************************************************
ok: [localhost] => {
"fruit": "apple"
}
TASK [Print text and variable] *********************************************
ok: [localhost] => {
"msg": "Our fruit is apple."
}
TASK [Print with verbosity level 2] ****************************************
skipping: [localhost]
PLAY RECAP *****************************************************************
localhost : ok=5 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
注意事项
- 变量引用:在
msg参数中引用变量时,必须使用双大括号{{ }}。 verbosity参数:如果设置了verbosity参数,消息的显示将取决于 Ansible 的执行级别。默认情况下,Ansible 的执行级别为 0,因此只有verbosity设置为 0 的消息才会显示。如果需要查看更详细的信息,可以在运行 Playbook 时增加-v参数(最多-vvvv)。- 调试模式:
debug模块非常适合调试 Playbook,但建议在生产环境中移除或注释掉调试任务,以避免不必要的输出。
总结
Ansible 的 debug 模块是一个强大的工具,用于在任务执行过程中打印消息和变量。通过灵活使用 msg、var 和 verbosity 参数,你可以轻松地调试 Playbook 并验证变量的值。
Ansible 的 debug 模块是一个非常实用的工具,用于在任务执行过程中打印文本、变量或 Ansible 事实。它属于 ansible.builtin 集合,因此默认随 Ansible 一起提供,并且支持多种操作系统。
主要参数
msg:用于指定要打印的消息,可以是纯文本或包含变量的字符串。var:用于直接打印一个变量的值。verbosity:控制消息的显示级别,范围从 0(正常执行时不显示)到 3(调试模式下显示)。默认值为 0。
默认行为
如果没有指定任何参数,debug 模块将打印默认消息 "Hello world!"。
示例:使用 debug 模块打印文本和变量
以下是一个示例 Playbook,展示如何使用 debug 模块打印文本、变量以及如何结合使用 verbosity 参数。
---
- name: debug module demo
hosts: all
vars:
fruit: "apple"
tasks:
- name: Print default message
ansible.builtin.debug:
- name: Print custom message
ansible.builtin.debug:
msg: "This is a custom message."
- name: Print variable
ansible.builtin.debug:
var: fruit
- name: Print text and variable
ansible.builtin.debug:
msg: "Our fruit is {{ fruit }}."
- name: Print with verbosity level 2
ansible.builtin.debug:
msg: "This message will only appear with verbosity level 2."
verbosity: 2
执行结果
运行上述 Playbook 时,输出将根据任务的不同而变化:
$ ansible-playbook debug_demo.yml
PLAY [debug module demo] ***************************************************
TASK [Gathering Facts] *****************************************************
ok: [localhost]
TASK [Print default message] ***********************************************
ok: [localhost] => {
"msg": "Hello world!"
}
TASK [Print custom message] ************************************************
ok: [localhost] => {
"msg": "This is a custom message."
}
TASK [Print variable] ******************************************************
ok: [localhost] => {
"fruit": "apple"
}
TASK [Print text and variable] *********************************************
ok: [localhost] => {
"msg": "Our fruit is apple."
}
TASK [Print with verbosity level 2] ****************************************
skipping: [localhost]
PLAY RECAP *****************************************************************
localhost : ok=5 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
注意事项
- 变量引用:在
msg参数中引用变量时,必须使用双大括号{{ }}。 verbosity参数:如果设置了verbosity参数,消息的显示将取决于 Ansible 的执行级别。默认情况下,Ansible 的执行级别为 0,因此只有verbosity设置为 0 的消息才会显示。如果需要查看更详细的信息,可以在运行 Playbook 时增加-v参数(最多-vvvv)。- 调试模式:
debug模块非常适合调试 Playbook,但建议在生产环境中移除或注释掉调试任务,以避免不必要的输出。
总结
Ansible 的 debug 模块是一个强大的工具,用于在任务执行过程中打印消息和变量。通过灵活使用 msg、var 和 verbosity 参数,你可以轻松地调试 Playbook 并验证变量的值。