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

Ansible 2.10升级后调用azure_rm_networkinterface_facts提示变量未定义

报错排查与解决方案

核心原因

Ansible 2.10版本对Azure官方集合的模块做了不兼容更新:

  • 原azure_rm_networkinterface_facts模块已被废弃,官方替换为azure_rm_networkinterface_info
  • 旧模块在新版本中不会返回azure_networkinterfaces字段,直接调用就会触发变量未定义错误

排查步骤

  1. 先在获取网卡信息的任务后添加debug任务,确认返回的facts结构:
- name: 打印返回的所有facts字段
  debug:
    var: ansible_facts

执行后即可确认是否存在azure_networkinterfaces字段,验证模块返回值变更的问题。

修复方案

方案一:适配新版本模块(推荐,长期可用)

将旧模块替换为官方推荐的azure_rm_networkinterface_info,同时调整变量引用路径,新模块返回的网卡列表字段为networkinterfaces,修改后的完整任务代码如下:

- name: "Get facts for network interface by it's name"
  azure_rm_networkinterface_info:
    resource_group: "{{ target_resourcegroup }}"
    name: "{{ target_nic_name }}"
  register: nic_result

- name: "Define private IP address"
  set_fact:
    private_ip_address: "{{ nic_result | json_query(query) }}"
  vars:
    query: "networkinterfaces[0].properties.ipConfigurations[0].properties.privateIPAddress"
  when: nic_result.networkinterfaces | length > 0

方案二:降级Azure集合版本(仅临时过渡用)

如果暂时无法批量修改所有旧任务代码,可安装支持旧facts模块的Azure集合版本:
执行命令:ansible-galaxy collection install azure.azcollection:==1.4.0
该版本仍保留azure_rm_networkinterface_facts模块的完整支持,无需修改原有任务代码即可正常运行。

同类问题适配指引

所有Azure的facts类模块在Ansible 2.10之后都统一重命名为_info结尾,比如azure_rm_virtualmachine_facts更名为azure_rm_virtualmachine_info,返回字段的azure_前缀也同步移除,遇到同类报错可按相同逻辑调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:45:00