Ответ вслух Junior Ansible спрашивают часто обновлено

Что такое идемпотентность

Вопрос

Интервьюер: «Что такое идемпотентность в Ansible и как вы её обеспечиваете?»

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Образцовый ответ: «Идемпотентность значит, что плейбук можно запустить сколько угодно раз, и если система уже в нужном состоянии, ничего не изменится, changed=0. Добиваюсь этого тем, что описываю состояние, а не действия: apt с state: present, template, service с state: started.

Что должно прозвучать в ответе

  • Определение: повторный запуск не меняет уже настроенную систему

  • Модули описывают желаемое состояние (`state: present`) и проверяют его сами

  • `command` и `shell` неидемпотентны: `creates`, `removes`, `changed_when`

  • Handlers вместо безусловных рестартов

  • Проверка: двойной прогон или Molecule

Что могут спросить следом

  • Как сделать идемпотентным скачивание и распаковку архива?
  • Зачем идемпотентность, если плейбук запускают раз в месяц?

Разбор

Образцовый ответ: «Идемпотентность значит, что плейбук можно запустить сколько угодно раз, и если система уже в нужном состоянии, ничего не изменится, changed=0. Добиваюсь этого тем, что описываю состояние, а не действия: apt с state: present, template, service с state: started. Модули сами проверяют, нужно ли что-то делать. Там, где без shell не обойтись, указываю creates или changed_when по выводу команды. Рестарты только через handlers, они срабатывают при реальном изменении. Проверяю двойным прогоном, а для ролей в Molecule это отдельный шаг. Зачем: плейбук становится безопасно перезапускаемым, его можно гонять по расписанию для борьбы с дрейфом, а changed в отчёте снова что-то значит».

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

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