如何从仅定义FQDN的Inventory中获取IP并渲染Jinja模板?
解决方案:从FQDN解析IP并渲染Jinja模板
步骤1:编写Jinja模板文件
创建模板文件(例如config_template.j2),利用Ansible内置的dig查询插件解析FQDN到IP,再拼接成目标格式:
address={{ groups['example_instance'] | map('lookup', 'dig') | join(',') }}
groups['example_instance']:提取Inventory中example_instance组下的所有FQDN主机map('lookup', 'dig'):对每个FQDN执行DNS解析,获取对应IP地址join(','):将所有解析得到的IP用逗号连接成字符串
步骤2:编写Ansible Playbook执行渲染
创建Playbook(例如render_config.yml),调用模板模块生成最终配置文件:
- name: 生成含IP列表的配置文件 hosts: localhost tasks: - name: 渲染模板 template: src: config_template.j2 dest: /目标路径/最终配置文件.conf
注意事项
- 确保执行Playbook的控制节点能正常解析这些FQDN(DNS配置有效,或本地
/etc/hosts有对应映射) - 若单个FQDN对应多个IP,
dig查询默认返回第一个解析结果;如需指定解析记录类型,可修改为lookup('dig', inventory_hostname, 'A')明确解析A记录
内容的提问来源于stack exchange,提问作者duyluan97
相关产品推荐
相关产品推荐

