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

注意事项

  1. 变量引用:在 msg 参数中引用变量时,必须使用双大括号 {{ }}。
  2. verbosity 参数:如果设置了 verbosity 参数,消息的显示将取决于 Ansible 的执行级别。默认情况下,Ansible 的执行级别为 0,因此只有 verbosity 设置为 0 的消息才会显示。如果需要查看更详细的信息,可以在运行 Playbook 时增加 -v 参数(最多 -vvvv)。
  3. 调试模式: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

注意事项

  1. 变量引用:在 msg 参数中引用变量时,必须使用双大括号 {{ }}。
  2. verbosity 参数:如果设置了 verbosity 参数,消息的显示将取决于 Ansible 的执行级别。默认情况下,Ansible 的执行级别为 0,因此只有 verbosity 设置为 0 的消息才会显示。如果需要查看更详细的信息,可以在运行 Playbook 时增加 -v 参数(最多 -vvvv)。
  3. 调试模式:debug 模块非常适合调试 Playbook,但建议在生产环境中移除或注释掉调试任务,以避免不必要的输出。

总结

Ansible 的 debug 模块是一个强大的工具,用于在任务执行过程中打印消息和变量。通过灵活使用 msg、var 和 verbosity 参数,你可以轻松地调试 Playbook 并验证变量的值。