![サーバー変数に基づいてAnsibleインベントリを構築する[閉じる]](https://linux33.com/image/133438/%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%A4%89%E6%95%B0%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6Ansible%E3%82%A4%E3%83%B3%E3%83%99%E3%83%B3%E3%83%88%E3%83%AA%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
信頼できる在庫を構築し、クライアントから収集された値に基づいてホストを適切なグループに割り当てたいと思います。
たとえば、すべてのクライアントとそのグループに関する情報は、次の形式で夜間Ansibleサーバーにプッシュされます。
ファイル形式
Hostgroup1,Hostname1
Hostgroup1,Hostname2
Hostgroup1,Hostname3
Hostgroup2,Hostname1
Hostgroup2,Hostname2
上記のファイルの内容に基づいてAnsible Inventoryを作成する必要があります。
答え1
ここで利用可能ないくつかのオプションがあります。
1)これらのファイルをインポートし、Ansibleが使用する「インベントリファイル」形式を生成するスクリプトを作成します。その後、すべてのアップロードが完了したら、cronジョブまたは他のジョブでスクリプトを実行します。
2) 次の形式で出力を生成するスクリプトを作成します。AnsibleインベントリJSON形式、次のように使用します。https://docs.ansible.com/ansible/2.5/plugins/inventory/script.html
3) 使用add_host
プレイブックの最初の仕事である仕事の種類(localhost
ホストと)ループを使用してホストを追加します。
add_host:
name: "{{ item.hostname }}"
groups: "{{ item.group }}"
with_items: "{{ somehow inject your list here }}"