Ответ
Ansible завершит задачу успешно (ok) и без изменений (changed: false). Это ожидаемое и корректное поведение, соответствующее принципу идемпотентности — многократное выполнение задачи приводит к одному и тому же результату.
Пример задачи:
- name: Ensure temporary file is absent
ansible.builtin.file:
path: /tmp/nonexistent_file.txt
state: absent
Вывод выполнения (пример):
ok: [web-server.example.com] => {
"changed": false,
"path": "/tmp/nonexistent_file.txt",
"state": "absent"
}
Почему это правильно и полезно:
- Идемпотентность: Не важно, запускаете ли вы плейбук в первый или сотый раз — конечное состояние (файл отсутствует) будет достигнуто без ошибок.
- Устойчивость плейбуков: Позволяет писать задачи, которые можно безопасно повторять, не беспокоясь о проверках существования файла вручную.
- Контраст с другими модулями: Это поведение специфично для модуля
fileсstate: absent. Модули вродеcommandилиshell, выполняющиеrm /tmp/nonexistent_file.txt, вернут ошибку, если файла нет, если не добавить флаги вродеrm -f.