Ansible - 自动删除 Sensu 中的主机

Ansible - automate the deletion of hosts in Sensu

我正在使用 Ansible 的清单文件和 sensu-cli(与 Sensu 的 API 交互)

一旦服务器从库存中移除,该服务器仍然存在,直到通过 API 调用手动删除它。

这个工作流程可行,但总的来说并不理想。

最后一个任务将删除所有服务器。任何安装了 sensu-client 的服务器都将联系到 Sensu master 并自行读取。这一点都不酷。

这里的想法是只删除不在清单文件中的服务器。

- 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

试试这个:

- 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'] ) }}"