Spec-Zone.ru › Ansible 2.4

Отладчик Playbook

  • Доступные команды
    • p task/vars/host/result
    • task.args[key] = value
    • vars[key] = value
    • r(edo)
    • c(ontinue)
    • q(uit)

В версии 2.1 мы добавили стратегию debug. Эта стратегия позволяет вызывать отладчик, когда задача завершилась ошибкой. У вас есть доступ ко всем функциям отладчика в контексте завершившейся ошибкой задачи. Затем вы можете, например, проверить или установить значение переменных, обновить аргументы модуля и повторно выполнить не удавшуюся задачу с новыми переменными и аргументами, чтобы помочь определить причину ошибки.

Чтобы использовать стратегию debug, измените атрибут strategy следующим образом:

- hosts: test
  strategy: debug
  tasks:
  ...

Например, запустите playbook ниже:

- hosts: test
  strategy: debug
  gather_facts: no
  vars:
    var1: value1
  tasks:
    - name: wrong variable
      ping: data={{ wrong_var }}

Отладчик вызывается, так как переменная wrong_var не определена.

Давайте изменим аргументы модуля и снова запустим задачу

PLAY ***************************************************************************

TASK [wrong variable] **********************************************************
fatal: [192.0.2.10]: FAILED! => {"failed": true, "msg": "ERROR! 'wrong_var' is undefined"}
Debugger invoked
(debug) p result
{'msg': u"ERROR! 'wrong_var' is undefined", 'failed': True}
(debug) p task.args
{u'data': u'{{ wrong_var }}'}
(debug) task.args['data'] = '{{ var1 }}'
(debug) p task.args
{u'data': '{{ var1 }}'}
(debug) redo
ok: [192.0.2.10]

PLAY RECAP *********************************************************************
192.0.2.10               : ok=1    changed=0    unreachable=0    failed=0

На этот раз задача выполняется успешно!

Доступные команды

p task/vars/host/result

Вывод значений, используемых для выполнения модуля:

(debug) p task
TASK: install package
(debug) p task.args
{u'name': u'{{ pkg_name }}'}
(debug) p vars
{u'ansible_all_ipv4_addresses': [u'192.0.2.10'],
 u'ansible_architecture': u'x86_64',
 ...
}
(debug) p vars['pkg_name']
u'bash'
(debug) p host
192.0.2.10
(debug) p result
{'_ansible_no_log': False,
 'changed': False,
 u'failed': True,
 ...
 u'msg': u"No package matching 'not_exist' is available"}

task.args[key] = value

Обновление аргумента модуля.

Если вы запустите playbook так:

- hosts: test
  strategy: debug
  gather_facts: yes
  vars:
    pkg_name: not_exist
  tasks:
    - name: install package
      apt: name={{ pkg_name }}

Отладчик вызван из-за неправильного имени пакета, поэтому давайте исправим аргументы модуля:

(debug) p task.args
{u'name': u'{{ pkg_name }}'}
(debug) task.args['name'] = 'bash'
(debug) p task.args
{u'name': 'bash'}
(debug) redo

Затем задача выполняется снова с новыми аргументами.

vars[key] = value

Обновление переменных.

Давайте используем тот же playbook, что и выше, но исправим переменные вместо аргументов:

(debug) p vars['pkg_name']
u'not_exist'
(debug) vars['pkg_name'] = 'bash'
(debug) p vars['pkg_name']
'bash'
(debug) redo

Затем задача выполняется снова с новыми переменными.

r(edo)

Повторное выполнение задачи.

c(ontinue)

Просто продолжить.

q(uit)

Выход из отладчика. Выполнение playbook прерывается.

См. также

Playbooks
Введение в playbooks
Список рассылки пользователей
Есть вопрос? Загляните в группу Google!
irc.freenode.net
#ansible IRC чат-канал

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/playbooks_debugger.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API