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

Ansible修改路由器主机名后ansible_net_hostname未更新问题问询

问题根因

你遇到的问题是Ansible 2.9版本网络模块的会话级缓存机制导致的,具体原理如下:

  • Ansible 2.9的network_cli连接插件默认使用持久化SSH会话,同一个play内对同一台网络设备的所有操作会复用同一个SSH连接。
  • vyos_facts、ios_facts这类网络设备facts采集模块,首次采集完成后会将数据缓存到当前SSH会话的上下文中,同一会话内后续再次调用facts模块时,默认直接返回缓存数据,不会重新向设备请求最新配置。
  • meta: clear_facts指令只会清空Ansible运行时的主机变量缓存,无法清除SSH会话内部的facts缓存,因此清除后重新采集拿到的还是会话缓存里的旧值。
  • 独立的第二个playbook运行时会创建新的SSH会话,没有旧的缓存数据,所以可以正常采集到更新后的主机名。
解决方法

第二次调用facts采集模块时,添加force: yes参数强制跳过缓存,重新从设备拉取最新数据,示例代码如下:

- name: 强制采集更新后的VyOS facts
  vyos_facts:
    gather_subset: all
    force: yes

如果是Cisco IOS设备,对应ios_facts模块同样添加force: yes参数即可生效。


内容的提问来源于stack exchange,提问作者Peter Lonergan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:15:08