안정적인 인벤토리를 구축하고 클라이언트로부터 수집된 값을 기반으로 호스트를 적절한 그룹에 할당하고 싶습니다.
예를 들어 모든 클라이언트 및 해당 그룹에 대한 정보는 다음 형식으로 야간에 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 }}"