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

如何在Ansible中从iDrac模块输出注册RAID控制器插槽变量?

正确注册变量与提取RAID控制器PCI信息方案

一、修正Register的使用错误

register是Ansible的任务级关键字,不能作为模块参数传入,必须与模块声明同级放置。正确的Playbook结构如下:

- name: 从iDRAC获取硬件信息
  hosts: idrac_targets
  gather_facts: no
  tasks:
    - name: 调用iDRAC系统信息模块
      dellemc.openmanage.idrac_system_info:
        idrac_ip: "{{ idrac_ip }}"
        idrac_user: "{{ idrac_user }}"
        idrac_password: "{{ idrac_password }}"
        validate_certs: no
      register: hardware_info  # 正确位置:与模块平级,作为任务属性

二、提取RAID控制器的PCI相关字段

模块返回的RAID控制器数据存于hardware_info.system_info.Controllers列表中,可通过两种方式过滤提取DeviceDescription、Key等字段:

方式1:用json_query批量提取

- name: 批量输出RAID控制器PCI信息
  debug:
    msg: "{{ hardware_info.system_info.Controllers | json_query('[?ControllerType==`RAID`].{设备描述: DeviceDescription, PCI_Key: Key}') }}"

方式2:循环遍历过滤输出

- name: 逐个输出RAID控制器PCI信息
  debug:
    msg: "设备描述: {{ item.DeviceDescription }}, PCI Key: {{ item.Key }}"
  loop: "{{ hardware_info.system_info.Controllers }}"
  when: item.ControllerType == "RAID"

三、优化模块执行速度

默认情况下模块会拉取全量硬件信息,导致执行缓慢。可通过command参数指定仅获取控制器数据,大幅减少数据传输量:

- name: 仅获取控制器信息(提速)
  dellemc.openmanage.idrac_system_info:
    idrac_ip: "{{ idrac_ip }}"
    idrac_user: "{{ idrac_user }}"
    idrac_password: "{{ idrac_password }}"
    validate_certs: no
    command: "Controllers"  # 限定只拉取控制器相关数据
  register: controller_info

后续提取逻辑不变,直接使用controller_info.system_info.Controllers即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:24:27