Предположим, у меня есть следующий простой сборник игр Ansible:
---
tasks:
- name: Upgrade installed packages
become: true
apt:
upgrade: safe
- name: Install NGINX web server
become: true
apt:
name: nginx
state: latest
notify:
- Restart NGINX
handlers:
- name: Restart NGINX
become: true
service:
name: nginx
state: restarted
Как видите, я сначала обновляю установленные пакеты APT и только потом убеждаюсь, что у меня установлена последняя версия Nginx. Проблема в том, что если есть обновление для Nginx, оно будет установлено в первой задаче, а если есть, то вторая задача не будет помечена как измененная и обработчик не сработает. Это правда? Или Ansible достаточно умен, чтобы каким-то образом запустить этот дескриптор только тогда, когда Nginx был обновлен в первой задаче?
Я задаюсь вопросом о лучшей практике для этого случая. Есть ли лучший способ, чем переместить все отдельные задачи установки (которые должны запускать обработчики при их изменении) перед задачей, которая обновляет все установленные пакеты?
Спасибо!
state: latest
уже далеко от передовой практики, обновление всех пакетов без разбора еще дальше. Состояние должно быть детерминированным, поэтому вы должны определять только версии (проверенные и принятые). Вы получите только основанные на мнении ответы. Я думаю, что это должно быть закрыто по этой причине. - person techraf   schedule 04.08.2017