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:
...
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
...
Remove NGINX:
root@rtfm-do-dev:~# apt purge nginx
Run again:
...
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
Done.
Similar posts
- 03/10/2019 Prometheus: RTFM blog monitoring set up with Ansible – Grafana, Loki, and promtail (0)
- 05/22/2018 Ansible: теги, include_vars и приоритеты переменных (0)
- 07/13/2018 Ansible: проверить конфигурацию NGINX перед рестартом (0)
Oldest comments (3)
Hey man! Which version of Ansible are you using? I'm using 2.8 and the
packages
key of facts are not being filled in :( I'm getting an empty dict{}
.Nice! I came up with a playbook that has a single
debug
task:Be aware of this requirement for the the
package_facts
module:Otherwise,
ansible_facts.packages
is an empty dictionary. Reminder: Ubuntu is Debian-based.