Имеется «самописная» Ansible роль letsencrypt. (см. Prometheus: мониторинг для RTFM — Grafana, Loki и promtail).
Перед запуском Let’s Encrypt клиента для получения сертификатов — надо проверить, установлен ли в системе NGINX.
Используем модуль package_facts:
...
- name: "Check if NGINX is installed"
package_facts:
manager: "auto"
...
И затем условную проверку по массиву ansible_facts.packages:
...
- name: "NGINX test result"
debug:
msg: "NGINX found"
when: "'nginx' in ansible_facts.packages"
- name: "NGINX test result"
debug:
msg: "NGINX NOT found"
when: "'nginx' not in ansible_facts.packages"
Проверяем:
[simterm]
...
TASK [test : Check if NGINX is installed] ****
ok: [ssh.dev.rtfm.co.ua]
TASK [test : NGINX test result] ****
ok: [ssh.dev.rtfm.co.ua] => {
"msg": "NGINX found"
}
TASK [test : NGINX test result] ****
skipping: [ssh.dev.rtfm.co.ua]
PLAY RECAP ****
ssh.dev.rtfm.co.ua : ok=3 changed=0 unreachable=0 failed=0
...
[/simterm]
Удаляем NGINX:
[simterm]
root@rtfm-do-dev:~# apt purge nginx
[/simterm]
Проверяем ещё раз:
[simterm]
...
TASK [test : Check if NGINX is installed] ****
ok: [ssh.dev.rtfm.co.ua]
TASK [test : NGINX test result] ****
skipping: [ssh.dev.rtfm.co.ua]
TASK [test : NGINX test result] ****
ok: [ssh.dev.rtfm.co.ua] => {
"msg": "NGINX NOT found"
}
PLAY RECAP ****
ssh.dev.rtfm.co.ua : ok=3 changed=0 unreachable=0 failed=0
[/simterm]
Готово.