Поиск по сайту:

Модуль отладки Ansible

В этом руководстве мы обсудим что такое модуль отладки Ansible, какие параметры поддерживаются в модуле отладки и, наконец, как использовать модуль отладки с каждым параметром в сборниках сценариев Ansible с примеры в Linux.

Если вы еще не настроили Ansible, обратитесь к следующим руководствам.

  • Установка и настройка Ansible в Linux
  • Автоматическая установка Ansible Lab с Vagrant и Virtualbox в Linux

Что такое модуль отладки Ansible?

Модуль отладки Ansible используется для печати выражений и переменных при запуске книги воспроизведения. По умолчанию, когда вы запускаете книгу воспроизведения, вы не получаете выходные значения, вместо этого вы получаете статус (например, изменено, проигнорировано и т. д.). Используя модуль отладки, вы можете распечатать любые переменные или выражения. Думайте об этом как о операторе печати на любом языке программирования.

Модуль отладки поддерживает три параметра, перечисленных ниже:

  1. сообщение
  2. вар
  3. Многословие

1. Модуль отладки с параметром Msg

Ниже приведен скелет пьесы, который будет использоваться в этом руководстве. Замените хосты в соответствии с вашей средой.

- name: Working With debug module
  hosts: m2
  gather_facts: false

Я создал две задачи. В обоих случаях модуль отладки задач принимает аргументы через параметр msg. Единственная разница между обеими задачами заключается в том, что в первой задаче параметр msg присутствует в одной строке с именем модуля debug. Во втором имя модуля задачи и параметр msg выделены в отдельную строку и предназначены.

tasks:

    # Module and argument in the same line
    - name: First debug
      debug: msg="Hello OSTechnix Users"

    # Module and argument in separate line
    - name: Second debug
      debug: 
        msg: "You are looking at debug module guide"

Вы можете запустить проверку синтаксиса или запустить книгу воспроизведения, используя следующие команды.

ansible-playbook --syntax-check .yml
ansible-playbook .yml

Обе задачи выводят сообщение на консоль во время запуска книги воспроизведения, что можно проверить по следующим выводам задач.

TASK [First debug] ***********************************************************************************************************************************
ok: [rocky.anslab.com] => {
  "msg": "Hello OSTechnix Users"
}

TASK [Second debug] **********************************************************************************************************************************
ok: [rocky.anslab.com] => {
  "msg": "You are looking at debug module guide"
}

Вы также можете использовать значения списка и словаря для печати в виде сообщения. Синтаксис списка значений и сопоставления словаря будет следующим.

List Line debug messages
    - name: List debug messages
      debug:
        msg:
          - India
          - Australia
          - Japan

    # Dictionary debug messages
    - name: Dict debug messages
      debug:
        msg:
          Country: India
          State: TN

Посмотрите на результат ниже. Вы можете видеть, что выходные данные печатаются с синтаксическим представлением списка и словаря Python.

TASK [List debug messages] ***************************************************************************************************************************
ok: [rocky.anslab.com] => {
  "msg": [
      "India",
      "Australia",
      "Japan"
  ]
}

TASK [Dict debug messages] ***************************************************************************************************************************
ok: [rocky.anslab.com] => {
  "msg": {
      "Country": "India",
      "State": "TN"
  }
}

Вы также можете распечатать значения переменных, используя параметр msg. Если вы посмотрите на задачу ниже, я создал две переменные с именами UBUNTU_VERSION и RELEASE. Я печатаю оба значения переменных, используя параметр msg.

    - name: Printing variable 
      vars:
        UBUNTU_VERSION: 22.04
        RELEASE: APRIL 2022
      debug:
        # msg: {{ UBUNTU_VERSION }} Latest version of Ubuntu is {{ UBUNTU_VERSION }} and it is releasing on {{ RELEASE }}
        msg: "{{ UBUNTU_VERSION }}"

Выход:

TASK [Printing variable] *****************************************************************************************************************************
ok: [rocky.anslab.com] => {
    "msg": "Latest version of Ubuntu is 22.04 and it is releasing on APRIL 2022"
}

Важный момент, на который следует обратить внимание: если имя переменной стоит в качестве первого слова, вам следует заключить всю строку в двойные кавычки. Всегда рекомендуется использовать двойные кавычки при работе с параметром msg.

msg: {{ UBUNTU_VERSION }} is releasing on {{ RELEASE }} # WILL FAIL
msg: "{{ UBUNTU_VERSION }} is releasing on {{ RELEASE }}" # ENCLOSED IN QUOTES

2. Модуль отладки с параметром Var

Если вы хотите напечатать только переменную без каких-либо строк, как мы это делали в последнем разделе, вы можете использовать параметр var и передать имя переменной в качестве аргумента.

При использовании модуля msg вам следует использовать двойные фигурные скобки для печати значения переменной. Но с помощью параметра var вы можете просто передать имя переменной без каких-либо фигурных скобок и кавычек.

    - name: Printing variable
      vars:
        UBUNTU_VERSION: 22.04
      debug:
        var: UBUNTU_VERSION

Выход:

TASK [Using Var] *************************************************************************************************************************************
ok: [rocky.anslab.com] => {
   "UBUNTU_VERSION": 22.04
}

3. Модуль отладки с параметром детализации

Ansible поддерживает четыре уровня детализации. По умолчанию уровень детализации установлен на ноль. Чтобы распечатать сообщения, вам необходимо увеличить детализацию, используя флаг -v.

ansible all -m shell -a "uptime" -v # LEVEL 1
ansible all -m shell -a "uptime" -vv # LEVEL 2
ansible all -m shell -a "uptime" -vvv # LEVEL 3
ansible all -m shell -a "uptime" -vvvv # LEVEL 4

При запуске плейбука вы можете установить уровень детализации задачи с помощью модуля отладки. В этом случае вы не увидите вывод отладочного сообщения в терминале, если не используете флаг -v при запуске плейбука.

    - name: Printing variable
      vars:
        UBUNTU_VERSION: 22.04
        RELEASE: APRIL 2022
      debug:
        var: UBUNTU_VERSION
      verbosity: 2

В приведенной выше задаче я установил уровень детализации на два. Взгляните на выходные данные ниже: вы можете видеть, что выходные данные печатаются как «пропускающие» для этой задачи.

ansible-playbook <playbook.yml>

TASK [Printing variable] *****************************************************************************************************************************
skipping: [rocky.anslab.com]

Вы можете передать флаг -v в свою книгу воспроизведения. Он укажет причину пропуска.

ansible-playbook <playbook.yml> -v

TASK [Printing variable] *****************************************************************************************************************************
skipping: [rocky.anslab.com] => {"skipped_reason": "Verbosity threshold not met."}

Поскольку я установил уровень детализации равным двум, мне нужно использовать флаг -vv для печати сообщений. Аналогично, в зависимости от уровня детализации, который вы установили в задаче, вы должны использовать соответствующий уровень флага -v при запуске книги воспроизведения.

ansible-playbook <playbook.yml> -vv

TASK [Printing variable] *****************************************************************************************************************************
task path: /home/vagrant/ansible_lab/vagrant_lab_sync/playbooks/2_debug_module/debug_with_verbosity.yml:8
ok: [rocky.anslab.com] => {
   "msg": "Latest version of Ubuntu is 22.04 and it is releasing on APRIL 2022"
}
META: ran handlers
META: ran handlers

Заключение

В этом руководстве мы рассмотрели, что такое Модуль отладки Ansible, как он работает и как использовать модуль отладки в Ansible, с соответствующими примерами.

Статьи по данной тематике