我正在使用Ansible的库存文件和sensu-cli(与Sensu的API交互)
从库存中删除服务器后,服务器仍然会一直停留,直到通过API调用手动删除它。
此工作流程有效,但无论如何都不理想。
最后一项任务将删除所有服务器。任何安装了sensu-client的服务器都将联系Sensu主站并自行读取。这根本不酷。
这里的想法是仅删除不在清单文件中的服务器。
- 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
答案 0 :(得分:1)
试试这个:
- name: Get a list hosts in Sensu
shell: sensu-cli client list -f json | jq -r .[].name
register: sensu_hosts
- name: Delete clients not in inventory
shell: sensu-cli client delete {{ item }}
with_items: "{{ sensu_hosts.stdout_lines | difference( groups['all'] ) }}"