Попробуйте использовать .live()
вместо .bind()
; .live()
свяжет .hover
с вашим флажком после выполнения запроса Ajax.
Отладочные модули
ansible
/ ansible-playbook
с увеличенным уровнем детализации, добавив -vvv
в строку выполнения. ansible
/ ansible-playbook
с переменной среды ANSIBLE_KEEP_REMOTE_FILES
, установленной на 1
(на управляющей машине). Это приводит к тому, что Ansible оставляет точную копию написанных на Python скриптов (успешно или нет) на целевой машине. Путь к сценариям печатается в журнале Ansible, а для обычных задач они хранятся в домашнем каталоге пользователя SSH: ~/.ansible/tmp/
. Точная логика встроена в скрипты и зависит от каждого модуля. Некоторые из них используют Python со стандартными или внешними библиотеками, некоторые из них вызывают внешние команды. Отладка игровых автоматов
-vvv
параметр заставляет больше данных печатать в журнале Ansible Отладка соединений
-vvvv
к вызову ansible
/ ansible-playbook
заставляет журнал включать отладочная информация для соединений. Вы можете использовать модуль регистров и модуль отладки для печати возвращаемых значений. Например, я хочу знать, что такое код возврата моего сценария, называемый «somescript.sh», поэтому у меня будут мои задачи внутри воспроизведения, такие как:
- name: my task
shell: "bash somescript.sh"
register: output
- debug:
msg: "{{ output.rc }}"
. Для полных значений возврата вы можно получить доступ в Ansible, вы можете проверить эту страницу: http://docs.ansible.com/ansible/latest/common_return_values.html
Отладка ролей / игровых автоматов
В основном отладка дополнительной автоматизации над большой инвентаризацией в крупных сетях - это не что иное, как отладка распределенного сетевого приложения.
Таким образом, я считаю, что ответ на ваш вопрос также является объединением всех ответов перед моим + небольшим добавлением. Итак, здесь:
ansible-lint
. Это спасает вас от действительно глупых небольших ошибок. debug
модуль с умом strategy: debug
, в некоторых случаях вы можете попасть в отладчик задачи при ошибке. Затем вы можете оценить все параметры, которые использует задача, и решить, что делать дальше, в последнем случае будет использовать отладчик Python, привязать его к локальному проходу и / или удаленному Python, выполняющему модули. Это обычно сложно: вам нужно разрешить открывать дополнительный порт на машине, и если код, открывающий порт, вызывает проблему? Кроме того, иногда полезно «смотреть в сторону» - подключаться к целевым узлам и увеличивать их отлаживаемость (более подробное ведение журнала)
Конечно, коллекция журналов делает это
Как вы можете видеть, как и любые другие распределенные приложения и фреймворки - способность отладки все еще не так, как мы хотели бы.
Фильтры / плагины
Это, в основном, разработка Python, отладка как любое приложение Python
В зависимости от технологии и сложности с тем, что вам нужно посмотрите, что происходит локально и удаленно, вам лучше выбрать язык, достаточно простой для отладки удаленно.
Существует несколько уровней отладки, которые вам могут понадобиться, но самый простой - добавить переменную среды ANSIBLE_STRATEGY=debug
, которая позволит отладчику при первой ошибке.
Вот что я придумал.
Ansible отправляет модули в целевую систему и выполняет их там. Поэтому, если вы меняете модуль локально, ваши изменения вступят в силу при запуске playbook. На моих машинных модулях находятся /usr/lib/python2.7/site-packages/ansible/modules
(ansible-2.1.2.0
). Модуль service
находится в core/system/service.py
. Модули Anisble (экземпляры класса AnsibleModule
, объявленные в module_utils/basic.py
), имеют метод log
, который отправляет сообщения в журнал systemd, если он доступен , или возвращается к syslog
. Итак, запустите journalctl -f
в целевой системе, добавьте операторы отладки (module.log(msg='test')
) в локальный модуль и запустите свою игру. Вы увидите команды отладки под именем ansible-basic.py
.
Кроме того, при запуске ansible-playbook
с -vvv
вы можете увидеть отладочный вывод в журнале systemd
, по крайней мере, сообщения о вызове, и сообщения об ошибках, если они есть.
Еще одна вещь, если вы попытаетесь отладить код, который выполняется локально с pdb
(import pdb; pdb.set_trace()
), скорее всего, вы столкнетесь с BdbQuit
исключением. Это потому, что python
закрывает stdin
при создании потока (ansible
рабочий). Решением здесь является повторное открытие stdin
перед запуском pdb.set_trace()
, как предлагается здесь :
sys.stdin = open('/dev/tty')
import pdb; pdb.set_trace()
sys.stdin = os.fdopen(0, 'r')
, и ipdb был доволен этим.
– Dale
12 May 2018 в 16:46
-v
имеет значение? Из справочной страницыansible-playbook
это не так. – x-yuri 23 February 2017 в 15:04ansible-playbook
без какого-либо параметра, вы увидите:-v, --verbose : verbose mode (-vvv for more, -vvvv to enable connection debugging)
– techraf 23 February 2017 в 15:07-q
в параметрахssh
изменяется на-vvv
, но никаких других изменений нет. Какая разница? – x-yuri 23 February 2017 в 15:17