Выбор ответа Middle Ansible спрашивают часто обновлено

Идемпотентность shell

Вопрос

Задача shell: ./install.sh выполняется при каждом прогоне и всегда показывает changed. Как сделать её идемпотентной?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Указать creates: с файлом-маркером установки или заменить на модуль. creates пропускает задачу, если файл уже существует, changedwhen позволяет определить изменение по выводу.

Варианты ответа

  1. Добавить ignore_errors: true, чтобы статус задачи не влиял на прогон
  2. Указать creates: с файлом-маркером установки или заменить на модульправильный ответ
  3. Запускать плейбук с --check, тогда задача не будет менять систему повторно
  4. Добавить become: true, чтобы скрипт сам видел, что уже установлен

Разбор

creates пропускает задачу, если файл уже существует, changed_when позволяет определить изменение по выводу. Но лучший путь модуль, который сам проверяет состояние. ignore_errors прячет ошибки, --check вообще не выполнит shell-задачу (она пропускается в check-режиме), become только про права.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.