You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中实现优先用DNS名命名文件,无记录时fallback到IP

解决方案

可以通过Ansible的lookup结合default过滤器实现需求,当反向DNS解析结果为空时自动 fallback 到IP地址。

修改后的完整Playbook如下:

---
- hosts: Configuration
  gather_facts: yes
  become: true
  tasks:
    - name: Gather Facts
      setup:

    - name: Capture Facts
      delegate_to: localhost
      run_once: true
      copy:
        content: "{{ hostvars[inventory_hostname] | to_nice_json }}"
        dest: "/tmp/Capture-{{ lookup('dig', ansible_default_ipv4.address) | default(ansible_default_ipv4.address, true) }}.json"

关键逻辑说明

  • lookup('dig', ansible_default_ipv4.address):对主机的默认IPv4地址执行反向DNS查询,获取对应的DNS名称
  • | default(ansible_default_ipv4.address, true):default过滤器的第二个参数设为true,意味着即使解析结果是空字符串,也会使用后面的IP地址作为 fallback 值。如果不设这个参数,只有当解析结果是None时才会触发 fallback,无法覆盖空字符串的场景。

这样就能实现优先用DNS名称命名文件,当DNS记录未更新导致解析失败时,自动切换为IP地址命名。

内容的提问来源于stack exchange,提问作者Jibun no Kage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:37:11