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'] ) }}"
我正在使用 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'] ) }}"