![如何将 ansible inventory 转换为 dnsmasq conf 文件](https://linux22.com/image/185778/%E5%A6%82%E4%BD%95%E5%B0%86%20ansible%20inventory%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%20dnsmasq%20conf%20%E6%96%87%E4%BB%B6.png)
我使用 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