Если задача (task) удаляет файл и при первом запуске файл был удален, что должно произойти при втором запуске?

«Если задача (task) удаляет файл и при первом запуске файл был удален, что должно произойти при втором запуске?» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Задача должна быть идемпотентной — при повторном выполнении она не должна вызывать ошибку, а должна корректно обработать ситуацию отсутствия файла, сообщив, что действие не требуется.

Примеры:

Ansible:

- name: Ensure file is absent
  ansible.builtin.file:
    path: /tmp/example.txt
    state: absent
  • Первый запуск: "changed": true (файл удален).
  • Второй запуск: "changed": false (файл уже отсутствует, состояние достигнуто).

Bash-скрипт:

FILE="/tmp/example.txt"
if [[ -f "$FILE" ]]; then
    rm "$FILE"
    echo "File deleted."
else
    echo "File already absent. No action needed."
fi

Почему это важно: Идемпотентность — ключевой принцип DevOps для безопасного и повторяемого выполнения задач, особенно в рамках конфигурационного управления (Ansible, Terraform) и CI/CD пайплайнов.