Ansible 인벤토리를 dnsmasq conf 파일로 변환하는 방법

Ansible 인벤토리를 dnsmasq conf 파일로 변환하는 방법

나는 ansible-playbook을 사용하여 vps를 관리하고 모든 vps 정보를 다음과 같이 매니페스트 파일에 넣습니다.

[base]
vps_virmach ansible_host=127.39.39.34  ansible_ssh_user=root
vps_vulr ansible_host=24.39.48.02 ansible_ssh_user=root

[web]
vps_aliyun ansible_host=114.39.43.55 ansible_ssh_user=root

dnsmasq 서비스를 실행하는 라우터가 있고 다음을 작성하고 싶습니다.쉘 스크립트사용자 지정 호스트 이름을 사용하여 vps에 액세스할 수 있도록 dnsmasq에 대한 conf 파일을 생성합니다.

예상되는:

address=/vps_virmach/127.39.39.34
address=/vps_vulr/24.39.48.02
address=/vps_aliyun/114.39.43.55

저는 쉘 스크립팅에 대한 경험이 거의 없기 때문에 작업을 완료하려면 어떤 명령이나 명령 파이프라인을 선택해야 할지 궁금합니다.

답변1

이 파일은 Ansible에서 생성할 수 있습니다. 아래 스크립트

- hosts: all
  gather_facts: false
  tasks:
    - copy:
        dest: conf.txt
        content: |
          {% for host in ansible_play_hosts_all %}
          address=/{{ host }}/{{ hostvars[host]['ansible_host'] }}
          {% endfor %}
      delegate_to: localhost
      run_once: true

주어진

shell> cat conf.txt 
address=/vps_virmach/127.39.39.34
address=/vps_vulr/24.39.48.02
address=/vps_aliyun/114.39.43.55

관련 정보