Выбор ответа Middle Ansible спрашивают часто обновлено
Идемпотентность shell
Вопрос
Задача shell: ./install.sh выполняется при каждом прогоне и всегда показывает changed. Как сделать её идемпотентной?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Указать creates: с файлом-маркером установки или заменить на модуль. creates пропускает задачу, если файл уже существует, changedwhen позволяет определить изменение по выводу.
Варианты ответа
- Добавить
ignore_errors: true, чтобы статус задачи не влиял на прогон - Указать
creates:с файлом-маркером установки или заменить на модульправильный ответ - Запускать плейбук с
--check, тогда задача не будет менять систему повторно - Добавить
become: true, чтобы скрипт сам видел, что уже установлен
Разбор
creates пропускает задачу, если файл уже существует, changed_when позволяет определить изменение по выводу. Но лучший путь модуль, который сам проверяет состояние. ignore_errors прячет ошибки, --check вообще не выполнит shell-задачу (она пропускается в check-режиме), become только про права.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Когда выполняется handler
Следующий вопрос
Обновление одного хоста в rolling-плейбуке