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

関連情報