Возврат JSON и соблюдение changed
Используйте протокол результатов модуля
«Возврат JSON и соблюдение changed» — бесплатный урок Ansible Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ansible Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ansible Academy содержит 4 уроков всего.
Модули обмениваются данными в формате JSON
Завершая работу, модуль должен передать Ansible результат в формате JSON. Так контроллер узнаёт, что произошло на узле.
Завершайте работу с помощью exit_json
При успешном выполнении вызывайте module.exit_json. Он выводит результат в формате JSON и корректно завершает работу модуля с правильным кодом завершения.
module.exit_json(changed=True, name='web')Ключ changed имеет значение
Всегда достоверно сообщайте значение changed. Оно показывает Ansible, изменили ли Вы систему, и определяет, будет ли в выводе строка ok или changed.
module.exit_json(changed=False)Проверяйте состояние перед изменением
Чтобы правильно использовать changed, сначала считайте текущее состояние. Если оно уже соответствует цели, установите changed=False и ничего не делайте.
if current == desired:
module.exit_json(changed=False)Возвращайте дополнительные данные
В exit_json можно добавить любые ключи, и они появятся в результате задачи. Позже пользователи смогут сохранить эти данные и использовать их повторно.
module.exit_json(changed=True, user_id=42)Завершайте работу с помощью fail_json
Если что-то пошло не так, вызовите module.fail_json с понятным сообщением. Ansible отметит задачу как неуспешную и покажет Ваш текст.
module.fail_json(msg='API request timed out')Не ограничивайтесь простым выводом
Не используйте print или необработанный stdout. Ansible ожидает только итоговый объект JSON, поэтому лишний вызов print повреждает результат и приводит к сбою задачи.
Только один вызов завершения
Каждый модуль завершается ровно одним вызовом exit_json или fail_json. Оба вызывают SystemExit, поэтому код после них не выполняется.
Полезное сообщение помогает
Добавляйте в результаты понятное msg с описанием выполненных действий. Хорошие сообщения превращают непонятные запуски в удобные для чтения.
module.exit_json(changed=True, msg='Created user web')Следуйте поведению встроенных модулей
Формируйте вывод так же, как это делают основные модули: сообщайте о changed, возвращайте содержательные поля и явно сообщайте об ошибке с указанием причины. Единообразие укрепляет доверие.
Результат определяет всё
Обработчики, условные конструкции и зарегистрированные переменные читают данные из Вашего JSON. Именно правильное значение changed делает модуль полноценным участником экосистемы Ansible.
Быстрая проверка
Подумайте, что должен сообщить модуль, если ничего не было изменено.
Итоги
При успехе завершайте работу через exit_json, а при ошибке — через fail_json, честно сообщайте значение changed и никогда не выводите необработанные данные. Таков протокол результатов модуля. 📦
Часто задаваемые вопросы
Урок «Возврат JSON и соблюдение changed» бесплатный?
Да — полный текст урока «Возврат JSON и соблюдение changed» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ansible Academy, подпишись на CoddyKit PRO. Курс Ansible Academy содержит 4 уроков всего.
Чему я научусь в уроке «Возврат JSON и соблюдение changed»?
Используйте протокол результатов модуля Ты практикуешь Ansible Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ansible Academy?
Предыдущий опыт не требуется. Ansible Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Возврат JSON и соблюдение changed»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ansible Academy?
Да. Каждый урок Ansible Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Когда создавать собственный модуль
- AnsibleModule и спецификация аргументов
- Возврат JSON и соблюдение changed
- Поддержка режима проверки в модуле