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

Ansible如何从interf嵌套变量中提取ipv4地址与operstatus值

问题原因

  • 第一,interf是嵌套字典类型的变量,你使用的select('regex')过滤器仅适用于字符串列表或单个字符串,直接作用于字典不会返回任何匹配结果。
  • 第二,你编写的正则^address (.*)$完全不符合变量的结构,address是嵌套字典的键名,并不是字符串前缀,不存在匹配的可能。

正确提取方式

场景1:已知interf下的一级键为1

直接通过字典层级取值即可,示例代码:

- set_fact:
    # 提取ipv4地址
    ipv4_addr: "{{ interf['1']['ipv4'][0]['address'] }}"
    # 提取operstatus值
    oper_status: "{{ interf['1']['operstatus'] }}"
- debug:
    msg: "IPv4地址是{{ ipv4_addr }},端口运行状态是{{ oper_status }}"

场景2:interf下的一级键是动态值、不固定

可以先把字典转为键值对列表,提取值后再取对应字段:

- set_fact:
    # 先取第一个接口的所有信息
    first_interface: "{{ interf | dict2items | map(attribute='value') | first }}"
- set_fact:
    ipv4_addr: "{{ first_interface['ipv4'][0]['address'] }}"
    oper_status: "{{ first_interface['operstatus'] }}"
- debug:
    msg: "IPv4地址是{{ ipv4_addr }},端口运行状态是{{ oper_status }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:27:03