Je travaille avec le fichier d'inventaire de Ansible et les sensu-cli (interactes avec l'API Sensu)Ansible - automatiser la suppression des hôtes dans Sensu
Une fois qu'un serveur est supprimé de l'inventaire de ce serveur colle toujours autour jusqu'à ce qu'il soit supprimé manuellement un appel d'API.
Ce workflow fonctionne mais n'est pas idéal en tout cas.
La dernière tâche supprimera tous les serveurs. Tout serveur sur lequel le sensu-client est installé atteindra le maître Sensu et se lira lui-même. Ce qui n'est pas cool du tout.
L'idée ici est de supprimer uniquement les serveurs ne figurant pas dans le fichier d'inventaire.
- name: Get a list hosts in Sensu
shell: sensu-cli client list -f json | jq -r .[].name
register: sensu_hosts
- name: Get a list of Ansible hosts
set_fact:
sensu_ansible_hosts: "{{ hostvars[item]['inventory_hostname'] }}"
with_items: groups['all']
- name: Delete clients not in inventory
shell: sensu-cli client delete {{ item }}
with_items: sensu_hosts.stdout_lines
when: item not in sensu_ansible_hosts