2017-01-13 8 views
1

内のホストの削除を自動化API呼び出し。Ansible - それは手動で削除されるまで、サーバーはまだ周りスティック、そのサーバーがインベントリから削除されたら、私はAnsibleの在庫ファイルと<a href="https://github.com/agent462/sensu-cli" rel="nofollow noreferrer">sensu-cli</a>(扇子のAPIとinteractes)</p> <p>で働いている扇子

このワークフローは機能しますが、とにかく理想的ではありません。

最後のタスクはすべてのサーバーを削除します。 sensu-clientがインストールされているサーバは、Sensuマスタに到達してreadd自体にアクセスします。それは全く冷静ではない。

ここでの考え方は、インベントリファイルにないサーバだけを削除することです。

- 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 

答えて

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']) }}" 
関連する問題

 関連する問題