Have a self-written
letsencrypt
role (see the Prometheus: RTFM blog monitoring set up with Ansible – Grafana, Loki, and promtail post).
Before running the Let’s Encrypt client to obtain a new certificate – need to check if NGINX is installed on a remote host.
Let’s use the package_facts
module:
... - name: "Check if NGINX is installed" package_facts: manager: "auto" ...
And add a conditional check with when
using the ansible_facts.packages
array:
... - 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"
Check:
[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]
Remove NGINX:
[simterm]
root@rtfm-do-dev:~# apt purge nginx
[/simterm]
Run again:
[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]
Done.