Содержание

Отладка в ansible

Самое очевидное что приходит на ум это использование вспомогательного отладочного вывода. Тут нам на помощь приходит встроенный модуль debug. Все просто как 3 копейки - дебаг позволяет вывести сообщение или значение переменной.

debug - отладочный вывод в процессе сборки

Для того что бы увидеть отладочный вывод нужно добавить свойства register и debug

---
- name: user
  hosts: demo
  tasks:
    - name: Create user
      vars:
        user: werwolf
      user:
        name: "{{ user }}"
        state: present
      become: true
      register: out
    - debug:
        var: out
erwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible-playbook -i demo-server user.yml -K 
...
ok: [127.0.0.1] => {
    "out": {
        "append": false,
        "changed": false,
        "comment": "werwolf",
        "failed": false,
        "group": 1000,
        "home": "/home/werwolf",
        "move_home": false,
        "name": "werwolf",
        "shell": "/bin/bash",
        "state": "present",
        "uid": 1000
    }
}
...

debugger - отладка в процессе сборки

Для вкючения отладки необходимо добавить свойство debugger в playbook. У данного свойства есть несколько возможных параметров:

---
- name: user
  hosts: demo
  tasks:
    - name: Create user
      vars:
        user: werwolf
      user:
        name: "{{ user }}"
        state: present
      become: true
      debugger: always

При запуске команды ansible запуститься отладочный режим

werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible-playbook -i demo-server user.yml -K 
 
# Режим отладки
[127.0.0.1] TASK: Create user (debug)> p task  # информация о task
TASK: Create user
 
[127.0.0.1] TASK: Create user (debug)> p task.name # название task
'Create user'
 
 
[127.0.0.1] TASK: Create user (debug)> p task.args # Передаваемы параметры task
 
[127.0.0.1] TASK: Create user (debug)> p task_vars['inventory_hostname'] # Получить host
'127.0.0.1'
 
[127.0.0.1] TASK: Create user (debug)> p task_vars['user'] # Получить пользователя
'werwolf'
 
[127.0.0.1] TASK: Create user (debug)> p task.vars # получить переменные task
{'user': 'werwolf'}
 
[127.0.0.1] TASK: Create user (debug)> task.args['name'] = 'werwolf14' # изменить пользователя
 
[127.0.0.1] TASK: Create user (debug)> r # Пересобрать ansible
changed: [127.0.0.1]
 
[127.0.0.1] TASK: Create user (debug)> task.args['state'] = 'absent' # удалить пользователя
 
[127.0.0.1] TASK: Create user (debug)> c # Продолжить работу