如何将 ansible inventory 转换为 dnsmasq conf 文件

如何将 ansible inventory 转换为 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 服务的路由器,我想写一个外壳脚本为 dnsmasq 生成一个conf文件,这样我就可以使用自定义主机名访问vps。

预期的:

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

我的 shell 脚本编程经验很少,所以我想知道应该选择哪个命令或命令管道来完成我的工作。

答案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

相关内容