community.general.xcc_redfish_command 模块 – 使用 Redfish API 管理 Lenovo 带外控制器

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用: ansible-galaxy collection install community.general

要在 playbook 中使用它,请指定: community.general.xcc_redfish_command

community.general 2.4.0 中的新增功能

概要

  • 在本地构建 Redfish URI 并将其发送到远程带外控制器以执行操作或获取信息或更新配置属性。

  • 管理虚拟介质。

  • 支持通过 GET 方法获取信息。

  • 支持通过 PATCH 方法更新配置属性。

  • 支持通过 POST 方法执行操作。

参数

参数

注释

auth_token

字符串

用于与带外控制器身份验证的安全令牌

baseuri

字符串 / 必需

带外控制器的基本 URI。

category

字符串 / 必需

在带外控制器上执行的操作类别。

command

列表 / 元素=字符串 / 必需

要在带外控制器上执行的命令列表。

password

字符串

用于与带外控制器身份验证的密码。

request_body

字典

要修补或发布的请求正文。

resource_id

字符串

要修改的系统、管理器或机箱的 ID。

resource_uri

字符串

要获取、修补或发布的资源 uri。

timeout

整数

对带外控制器的 URL 请求的超时时间(秒)。

默认值: 10

username

字符串

用于与带外控制器身份验证的用户名。

virtual_media

字典

VirtualMedia 命令的选项。

image_url

字符串

要插入或弹出映像的 URL。

inserted

布尔值

指示在命令完成后是否将映像视为已插入。

选项

  • false

  • true ← (默认)

media_types

列表 / 元素=字符串

适合该映像的媒体类型列表。

默认值: []

password

字符串

访问映像 URL 的密码。

transfer_method

字符串

要与映像一起使用的传输方法。

transfer_protocol_type

字符串

要与映像一起使用的网络协议。

username

字符串

访问映像 URL 的用户名。

write_protected

布尔值

指示介质是否被视为写保护。

选项

  • false

  • true ← (默认)

属性

属性

支持

描述

check_mode

支持:不支持

可以在 check_mode 中运行并返回更改状态预测,而无需修改目标。

diff_mode

支持:不支持

在差异模式下,将返回有关已更改内容(或可能需要在 check_mode 中更改)的详细信息。

示例

- name: Insert Virtual Media
  community.general.xcc_redfish_command:
    category: Manager
    command: VirtualMediaInsert
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    virtual_media:
      image_url: "http://example.com/images/SomeLinux-current.iso"
      media_types:
        - CD
        - DVD
    resource_id: "1"

- name: Eject Virtual Media
  community.general.xcc_redfish_command:
    category: Manager
    command: VirtualMediaEject
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    virtual_media:
      image_url: "http://example.com/images/SomeLinux-current.iso"
    resource_id: "1"

- name: Eject all Virtual Media
  community.general.xcc_redfish_command:
    category: Manager
    command: VirtualMediaEject
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    resource_id: "1"

- name: Get ComputeSystem Oem property SystemStatus via GetResource command
  community.general.xcc_redfish_command:
    category: Raw
    command: GetResource
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    resource_uri: "/redfish/v1/Systems/1"
  register: result
- ansible.builtin.debug:
    msg: "{{ result.redfish_facts.data.Oem.Lenovo.SystemStatus }}"

- name: Get Oem DNS setting via GetResource command
  community.general.xcc_redfish_command:
    category: Raw
    command: GetResource
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    resource_uri: "/redfish/v1/Managers/1/NetworkProtocol/Oem/Lenovo/DNS"
  register: result

- name: Print fetched information
  ansible.builtin.debug:
    msg: "{{ result.redfish_facts.data }}"

- name: Get Lenovo FoD key collection resource via GetCollectionResource command
  community.general.xcc_redfish_command:
    category: Raw
    command: GetCollectionResource
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    resource_uri: "/redfish/v1/Managers/1/Oem/Lenovo/FoD/Keys"
  register: result

- name: Print fetched information
  ansible.builtin.debug:
    msg: "{{ result.redfish_facts.data_list }}"

- name: Update ComputeSystem property AssetTag via PatchResource command
  community.general.xcc_redfish_command:
    category: Raw
    command: PatchResource
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    resource_uri: "/redfish/v1/Systems/1"
    request_body:
      AssetTag: "new_asset_tag"

- name: Perform BootToBIOSSetup action via PostResource command
  community.general.xcc_redfish_command:
    category: Raw
    command: PostResource
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    resource_uri: "/redfish/v1/Systems/1/Actions/Oem/LenovoComputerSystem.BootToBIOSSetup"
    request_body: {}

- name: Perform SecureBoot.ResetKeys action via PostResource command
  community.general.xcc_redfish_command:
    category: Raw
    command: PostResource
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    resource_uri: "/redfish/v1/Systems/1/SecureBoot/Actions/SecureBoot.ResetKeys"
    request_body:
      ResetKeysType: DeleteAllKeys

- name: Create session
  community.general.redfish_command:
    category: Sessions
    command: CreateSession
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
  register: result

- name: Update Manager DateTimeLocalOffset property using security token for auth
  community.general.xcc_redfish_command:
    category: Raw
    command: PatchResource
    baseuri: "{{ baseuri }}"
    auth_token: "{{ result.session.token }}"
    resource_uri: "/redfish/v1/Managers/1"
    request_body:
      DateTimeLocalOffset: "+08:00"

- name: Delete session using security token created by CreateSesssion above
  community.general.redfish_command:
    category: Sessions
    command: DeleteSession
    baseuri: "{{ baseuri }}"
    auth_token: "{{ result.session.token }}"
    session_uri: "{{ result.session.uri }}"

返回值

常用返回值已在 此处 记录,以下是此模块特有的字段

描述

msg

字符串

与执行的操作相关的消息。

返回:发生故障或操作/更新成功时

示例: "Action was successful"

redfish_facts

字典

资源内容。

返回:当 command == GetResource 或 command == GetCollectionResource 时

示例: "{ \"redfish_facts\": { \"data\": { \"@odata.etag\": \"\"3179bf00d69f25a8b3c\"\", \"@odata.id\": \"/redfish/v1/Managers/1/NetworkProtocol/Oem/Lenovo/DNS\", \"@odata.type\": \"#LenovoDNS.v1_0_0.LenovoDNS\", \"DDNS\": [ { \"DDNSEnable\": true, \"DomainName\": \"\", \"DomainNameSource\": \"DHCP\" } ], \"DNSEnable\": true, \"Description\": \"This resource is used to represent a DNS resource for a Redfish implementation.\", \"IPv4Address1\": \"10.103.62.178\", \"IPv4Address2\": \"0.0.0.0\", \"IPv4Address3\": \"0.0.0.0\", \"IPv6Address1\": \"::\", \"IPv6Address2\": \"::\", \"IPv6Address3\": \"::\", \"Id\": \"LenovoDNS\", \"PreferredAddresstype\": \"IPv4\" }, \"ret\": true } }"

作者

  • 潘雨言 (@panyy3)