Возможная ошибка: из версии import VERSION\nImportError: нет модуля с именем version\n & ldquo ;, & rdquo; module_stdout & ldquo ;: & rdquo; & ldquo ;, & rdquo; msg & ldquo ;: & rdquo; МОДУЛЬ НЕИСПРАВНОСТИ & ldquo ;, & rdquo; rc ": 0} [duplicate]

Попробуйте использовать .live() вместо .bind(); .live() свяжет .hover с вашим флажком после выполнения запроса Ajax.

10
задан techraf 23 February 2017 в 14:47
поделиться

6 ответов

Отладочные модули

  • Самый простой способ - запустить ansible / ansible-playbook с увеличенным уровнем детализации, добавив -vvv в строку выполнения.
  • Наиболее полным способом для модулей, написанных на Python (Linux / Unix), является запуск ansible / ansible-playbook с переменной среды ANSIBLE_KEEP_REMOTE_FILES, установленной на 1 (на управляющей машине). Это приводит к тому, что Ansible оставляет точную копию написанных на Python скриптов (успешно или нет) на целевой машине. Путь к сценариям печатается в журнале Ansible, а для обычных задач они хранятся в домашнем каталоге пользователя SSH: ~/.ansible/tmp/. Точная логика встроена в скрипты и зависит от каждого модуля. Некоторые из них используют Python со стандартными или внешними библиотеками, некоторые из них вызывают внешние команды.

Отладка игровых автоматов

  • Аналогично отладке модулей, увеличивающих уровень детализации с -vvv параметр заставляет больше данных печатать в журнале Ansible
  • Поскольку Ansible 2.1 a Отладчик Playbook позволяет отлаживать интерактивно неудавшиеся задачи: проверять, изменять данные; повторите выполнение задачи.

Отладка соединений

  • Добавление параметра -vvvv к вызову ansible / ansible-playbook заставляет журнал включать отладочная информация для соединений.
14
ответ дан techraf 20 August 2018 в 06:43
поделиться
  • 1
    Вы уверены, что добавление четвертого -v имеет значение? Из справочной страницы ansible-playbook это не так. – x-yuri 23 February 2017 в 15:04
  • 2
    Если вы запустите ansible-playbook без какого-либо параметра, вы увидите: -v, --verbose : verbose mode (-vvv for more, -vvvv to enable connection debugging) – techraf 23 February 2017 в 15:07
  • 3
    Можете ли вы подробно остановиться на «отладке соединения»? часть? Я вижу, что -q в параметрах ssh изменяется на -vvv, но никаких других изменений нет. Какая разница? – x-yuri 23 February 2017 в 15:17
  • 4
  • 5

Вы можете использовать модуль регистров и модуль отладки для печати возвращаемых значений. Например, я хочу знать, что такое код возврата моего сценария, называемый «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

2
ответ дан K.T. 20 August 2018 в 06:43
поделиться

Отладка ролей / игровых автоматов

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

Таким образом, я считаю, что ответ на ваш вопрос также является объединением всех ответов перед моим + небольшим добавлением. Итак, здесь:

  • абсолютно обязательный: вам нужно знать, что происходит, то есть то, что вы автоматизируете, что вы ожидаете. например невозможность обнаружить службу с помощью блока systemd как работающего или остановленного обычно означает ошибку в файле служебных модулей или сервисном модуле, поэтому вам нужно 1. определить ошибку, 2. Сообщить об ошибке поставщику / сообществу, 3. Предоставить обходной путь с TODO и ссылкой на ошибку. 4. Когда исправлена ​​ошибка - удалите обходной путь
  • , чтобы сделать код более удобным для отладки использования модулей, насколько вы можете
  • предоставить все задачи и переменные значимые имена.
  • используют инструменты для анализа статического кода, такие как ansible-lint. Это спасает вас от действительно глупых небольших ошибок.
  • использовать флаги verbosity и путь журнала
  • использовать debug модуль с умом
  • «Знать свои факты» - иногда это полезно сбрасывать факсы целевой машины в файл и вытащить его на доступное мастер-использование strategy: debug, в некоторых случаях вы можете попасть в отладчик задачи при ошибке. Затем вы можете оценить все параметры, которые использует задача, и решить, что делать дальше, в последнем случае будет использовать отладчик Python, привязать его к локальному проходу и / или удаленному Python, выполняющему модули. Это обычно сложно: вам нужно разрешить открывать дополнительный порт на машине, и если код, открывающий порт, вызывает проблему?

Кроме того, иногда полезно «смотреть в сторону» - подключаться к целевым узлам и увеличивать их отлаживаемость (более подробное ведение журнала)

Конечно, коллекция журналов делает это

Как вы можете видеть, как и любые другие распределенные приложения и фреймворки - способность отладки все еще не так, как мы хотели бы.

Фильтры / плагины

Это, в основном, разработка Python, отладка как любое приложение Python

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

2
ответ дан mvk_il 20 August 2018 в 06:43
поделиться
  • 1
    @ x-yuri вы также можете попробовать использовать IDE, например. pycharm работает довольно нормально. Но, конечно, остерегайтесь указывать на правый Python, открывать порт и т. Д. – mvk_il 11 July 2017 в 00:25
1
ответ дан onknows 20 August 2018 в 06:43
поделиться

Существует несколько уровней отладки, которые вам могут понадобиться, но самый простой - добавить переменную среды ANSIBLE_STRATEGY=debug, которая позволит отладчику при первой ошибке.

1
ответ дан sorin 20 August 2018 в 06:43
поделиться

Вот что я придумал.

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()
7
ответ дан x-yuri 20 August 2018 в 06:43
поделиться
  • 1
  • 2
    Спасибо за совет stdin! Это работало с pdb, но не работало с ipdb . Однако, когда я запускаю свою игру на локальном хосте, я вижу, что FD 0, 1 и 2 все еще указывают на мой TTY, поэтому я использовал sys.stdin = os.fdopen(0, 'r'), и ipdb был доволен этим. – Dale 12 May 2018 в 16:46
Другие вопросы по тегам:

Похожие вопросы: