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

注意

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

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

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

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

概要

  • 在本地构建 Redfish URI 并将其发送到远程 OOB 控制器以执行操作。

  • 管理 OOB 控制器,例如重启、日志管理。

  • 管理 OOB 控制器用户,例如添加、删除、更新。

  • 管理系统电源,例如开机、关机、优雅重启和强制重启。

参数

参数

注释

account_properties

字典

在 community.general 0.2.0 中添加

要更新的帐户服务的属性。

默认值: {}

account_types

别名: account_accounttypes

列表 / 元素=字符串

在 community.general 7.2.0 中添加

要应用于用户帐户的帐户类型数组。

auth_token

字符串

在 community.general 2.3.0 中添加

用于向 OOB 控制器进行身份验证的安全令牌。

baseuri

字符串 / 必填

OOB 控制器的基本 URI。

bios_attributes

字典

在 community.general 6.4.0 中添加

需要在给定服务器中验证的 BIOS 属性。

boot_next

字符串

当 bootdevice 为 “UefiBootNext” 时的 BootNext 目标。

boot_override_mode

字符串

在 community.general 3.5.0 中添加

使用覆盖时的启动模式。

选择

  • "Legacy"

  • "UEFI"

bootdevice

字符串

设置启动配置时的启动设备。

category

字符串 / 必填

要在 OOB 控制器上执行的类别。

ciphers

列表 / 元素=字符串

在 community.general 9.2.0 中添加

用于请求的 SSL/TLS 密码。

当提供列表时,所有密码按顺序用 : 连接。

有关更多详细信息,请参阅 OpenSSL 密码列表格式

可用密码取决于 Python 和 OpenSSL/LibreSSL 版本。

command

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

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

id

别名: account_id

字符串

要删除/修改的帐户 ID。

也可以在帐户创建中使用,以解决供应商问题,其中 POST 请求中需要新用户的 ID。

new_password

别名: account_password

字符串

要添加/修改的帐户的新密码。

new_username

别名: account_username

字符串

要添加/删除/修改的帐户的用户名。

oem_account_types

别名: account_oemaccounttypes

列表 / 元素=字符串

在 community.general 7.2.0 中添加

要应用于用户帐户的 OEM 帐户类型数组。

password

字符串

用于向 OOB 控制器进行身份验证的密码。

reset_to_defaults_mode

字符串

在 community.general 8.6.0 中添加

重置为默认值时要应用的模式。

选择

  • "ResetAll"

  • "PreserveNetworkAndUsers"

  • "PreserveNetwork"

resource_id

字符串

在 community.general 0.2.0 中添加

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

roleid

别名: account_roleid

字符串

要添加/修改的帐户的角色。

session_uri

字符串

在 community.general 2.3.0 中添加

会话资源的 URI。

strip_etag_quotes

布尔值

在 community.general 3.7.0 中添加

删除 PATCH 请求的 If-Match 标头中使用的 etag 周围的引号。

仅当 If-Match 仅匹配未加引号的 etag 字符串时,才使用此选项来解决错误的供应商实现。

选择

  • false ← (默认)

  • true

timeout

整数

HTTP 请求到 OOB 控制器的超时时间(以秒为单位)。

此参数的默认值在 community.general 9.0.0 中从 10 更改为 60

默认值: 60

uefi_target

字符串

当 bootdevice 为 “UefiTarget” 时的 UEFI 启动目标。

update_apply_time

字符串

在 community.general 6.1.0 中添加

何时应用更新的时间。

选择

  • "Immediate"

  • "OnReset"

  • "AtMaintenanceWindowStart"

  • "InMaintenanceWindowOnReset"

  • "OnStartUpdateRequest"

update_creds

字典

在 community.general 0.2.0 中添加

用于检索更新映像的凭据。

password

字符串

用于检索更新映像的密码。

username

字符串

用于检索更新映像的用户名。

update_custom_oem_header

字符串

在 community.general 10.1.0 中添加

可选的 OEM 标头,作为多部分 HTTP 推送更新的单独表单数据发送。

根据 DMTF Redfish 规范 12.6.2.2,标头应以“Oem”开头。

有关更多详细信息,请参阅 https://www.dmtf.org/sites/default/files/standards/documents/DSP0266_1.21.0.html

如果设置,则还需要 update_custom_oem_params

update_custom_oem_mime_type

字符串

在 community.general 10.1.0 中添加

用于 HTTP 多部分推送更新的自定义 OEM 属性的 MIME 类型。

update_custom_oem_params

any

在 community.general 10.1.0 中添加

用于 HTTP 多部分推送更新的自定义 OEM 属性。

如果设置,则还需要 update_custom_oem_header

这些属性将直接传递,而无需 Ansible 进行任何验证或转换。这意味着内容可以是文件、字符串或任何其他数据。如果内容是应该转换为 JSON 的字典,则必须在使用 ansible.builtin.to_json 过滤器将其传递给此模块之前,将其转换为 JSON。

update_handle

字符串

在 community.general 6.1.0 中添加

用于检查正在进行的更新状态的句柄。

update_image_file

path

在 community.general 7.1.0 中添加

更新映像的文件名,可选择包含路径。

update_image_uri

字符串

在 community.general 0.2.0 中添加

更新映像的 URI。

update_oem_params

字典

在 community.general 7.5.0 中添加

用于 HTTP 多部分推送更新的属性。

update_protocol

字符串

在 community.general 0.2.0 中添加

更新的协议。

update_targets

列表 / 元素=字符串

在 community.general 0.2.0 中添加

应用更新的目标资源 URI 列表。

默认值: []

update_username

别名: account_updatename

字符串

在 community.general 0.2.0 中添加

用于更新 account_username 的新用户名。

username

字符串

用于向 OOB 控制器进行身份验证的用户名。

virtual_media

字典

在 community.general 0.2.0 中添加

VirtualMedia 命令的选项。

image_url

字符串

要插入或弹出的映像的 URL。

inserted

布尔值

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

选择

  • false

  • true ← (默认)

media_types

列表 / 元素=字符串

适用于映像的媒体类型列表。

默认值: []

password

字符串

用于访问映像 URL 的密码。

transfer_method

字符串

用于映像的传输方法。

transfer_protocol_type

字符串

用于映像的网络协议。

username

字符串

用于访问映像 URL 的用户名。

write_protected

布尔值

指示该媒体被视为写保护。

选择

  • false

  • true ← (默认)

wait

布尔值

在 community.general 9.1.0 中添加

阻塞直到服务再次准备就绪。

选择

  • false ← (默认)

  • true

wait_timeout

整数

在 community.general 9.1.0 中添加

在放弃之前,阻塞多长时间直到服务再次准备就绪。

默认值: 120

属性

属性

支持

描述

check_mode

支持:

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

diff_mode

支持:

当处于 diff 模式时,将返回有关已更改(或可能需要在 check_mode 中更改)的内容的详细信息。

示例

- name: Restart system power gracefully
  community.general.redfish_command:
    category: Systems
    command: PowerGracefulRestart
    resource_id: 437XR1138R2
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"

- name: Turn system power off
  community.general.redfish_command:
    category: Systems
    command: PowerForceOff
    resource_id: 437XR1138R2

- name: Restart system power forcefully
  community.general.redfish_command:
    category: Systems
    command: PowerForceRestart
    resource_id: 437XR1138R2

- name: Shutdown system power gracefully
  community.general.redfish_command:
    category: Systems
    command: PowerGracefulShutdown
    resource_id: 437XR1138R2

- name: Turn system power on
  community.general.redfish_command:
    category: Systems
    command: PowerOn
    resource_id: 437XR1138R2

- name: Reboot system power
  community.general.redfish_command:
    category: Systems
    command: PowerReboot
    resource_id: 437XR1138R2

- name: Set one-time boot device to {{ bootdevice }}
  community.general.redfish_command:
    category: Systems
    command: SetOneTimeBoot
    resource_id: 437XR1138R2
    bootdevice: "{{ bootdevice }}"
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"

- name: Set one-time boot device to UefiTarget of "/0x31/0x33/0x01/0x01"
  community.general.redfish_command:
    category: Systems
    command: SetOneTimeBoot
    resource_id: 437XR1138R2
    bootdevice: "UefiTarget"
    uefi_target: "/0x31/0x33/0x01/0x01"
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"

- name: Set one-time boot device to BootNext target of "Boot0001"
  community.general.redfish_command:
    category: Systems
    command: SetOneTimeBoot
    resource_id: 437XR1138R2
    bootdevice: "UefiBootNext"
    boot_next: "Boot0001"
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"

- name: Set persistent boot device override
  community.general.redfish_command:
    category: Systems
    command: EnableContinuousBootOverride
    resource_id: 437XR1138R2
    bootdevice: "{{ bootdevice }}"
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"

- name: Set one-time boot to BiosSetup
  community.general.redfish_command:
    category: Systems
    command: SetOneTimeBoot
    boot_next: BiosSetup
    boot_override_mode: Legacy
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"

- name: Disable persistent boot device override
  community.general.redfish_command:
    category: Systems
    command: DisableBootOverride

- name: Set system indicator LED to blink using security token for auth
  community.general.redfish_command:
    category: Systems
    command: IndicatorLedBlink
    resource_id: 437XR1138R2
    baseuri: "{{ baseuri }}"
    auth_token: "{{ result.session.token }}"

- name: Add user
  community.general.redfish_command:
    category: Accounts
    command: AddUser
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    new_username: "{{ new_username }}"
    new_password: "{{ new_password }}"
    roleid: "{{ roleid }}"

- name: Add user with specified account types
  community.general.redfish_command:
    category: Accounts
    command: AddUser
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    new_username: "{{ new_username }}"
    new_password: "{{ new_password }}"
    roleid: "{{ roleid }}"
    account_types:
    - Redfish
    - WebUI

- name: Add user using new option aliases
  community.general.redfish_command:
    category: Accounts
    command: AddUser
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"
    account_password: "{{ account_password }}"
    account_roleid: "{{ account_roleid }}"

- name: Delete user
  community.general.redfish_command:
    category: Accounts
    command: DeleteUser
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"

- name: Disable user
  community.general.redfish_command:
    category: Accounts
    command: DisableUser
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"

- name: Enable user
  community.general.redfish_command:
    category: Accounts
    command: EnableUser
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"

- name: Add and enable user
  community.general.redfish_command:
    category: Accounts
    command: AddUser,EnableUser
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    new_username: "{{ new_username }}"
    new_password: "{{ new_password }}"
    roleid: "{{ roleid }}"

- name: Update user password
  community.general.redfish_command:
    category: Accounts
    command: UpdateUserPassword
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"
    account_password: "{{ account_password }}"

- name: Update user role
  community.general.redfish_command:
    category: Accounts
    command: UpdateUserRole
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"
    roleid: "{{ roleid }}"

- name: Update user name
  community.general.redfish_command:
    category: Accounts
    command: UpdateUserName
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"
    account_updatename: "{{ account_updatename }}"

- name: Update user name
  community.general.redfish_command:
    category: Accounts
    command: UpdateUserName
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"
    update_username: "{{ update_username }}"

- name: Update AccountService properties
  community.general.redfish_command:
    category: Accounts
    command: UpdateAccountServiceProperties
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_properties:
      AccountLockoutThreshold: 5
      AccountLockoutDuration: 600

- name: Update user AccountTypes
  community.general.redfish_command:
    category: Accounts
    command: UpdateUserAccountTypes
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    account_username: "{{ account_username }}"
    account_types:
      - Redfish
      - WebUI

- name: Clear Manager Logs with a timeout of 20 seconds
  community.general.redfish_command:
    category: Manager
    command: ClearLogs
    resource_id: BMC
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    timeout: 20

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

- name: Set chassis indicator LED to blink using security token for auth
  community.general.redfish_command:
    category: Chassis
    command: IndicatorLedBlink
    resource_id: 1U
    baseuri: "{{ baseuri }}"
    auth_token: "{{ result.session.token }}"

- 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 }}"

- name: Clear Sessions
  community.general.redfish_command:
    category: Sessions
    command: ClearSessions
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"

- name: Simple update
  community.general.redfish_command:
    category: Update
    command: SimpleUpdate
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    update_image_uri: https://example.com/myupdate.img

- name: Simple update with additional options
  community.general.redfish_command:
    category: Update
    command: SimpleUpdate
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    update_image_uri: //example.com/myupdate.img
    update_protocol: FTP
    update_targets:
      - /redfish/v1/UpdateService/FirmwareInventory/BMC
    update_creds:
      username: operator
      password: supersecretpwd

- name: Multipart HTTP push update; timeout is 600 seconds to allow for a
    large image transfer
  community.general.redfish_command:
    category: Update
    command: MultipartHTTPPushUpdate
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    timeout: 600
    update_image_file: ~/images/myupdate.img

- name: Multipart HTTP push with additional options; timeout is 600 seconds
    to allow for a large image transfer
  community.general.redfish_command:
    category: Update
    command: MultipartHTTPPushUpdate
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    timeout: 600
    update_image_file: ~/images/myupdate.img
    update_targets:
      - /redfish/v1/UpdateService/FirmwareInventory/BMC
    update_oem_params:
      PreserveConfiguration: false

- name: Multipart HTTP push with custom OEM options
  vars:
    oem_payload:
      ImageType: BMC
  community.general.redfish_command:
    category: Update
    command: MultipartHTTPPushUpdate
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    update_image_file: ~/images/myupdate.img
    update_targets:
      - /redfish/v1/UpdateService/FirmwareInventory/BMC
    update_custom_oem_header: OemParameters
    update_custom_oem_mime_type: "application/json"
    update_custom_oem_params: "{{ oem_payload | to_json }}"

- name: Perform requested operations to continue the update
  community.general.redfish_command:
    category: Update
    command: PerformRequestedOperations
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    update_handle: /redfish/v1/TaskService/TaskMonitors/735

- name: Insert Virtual Media
  community.general.redfish_command:
    category: Systems
    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: Insert Virtual Media
  community.general.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: BMC

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

- name: Eject Virtual Media
  community.general.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: BMC

- name: Restart manager power gracefully
  community.general.redfish_command:
    category: Manager
    command: GracefulRestart
    resource_id: BMC
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"

- name: Restart manager power gracefully and wait for it to be available
  community.general.redfish_command:
    category: Manager
    command: GracefulRestart
    resource_id: BMC
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    wait: True

- name: Restart manager power gracefully
  community.general.redfish_command:
    category: Manager
    command: PowerGracefulRestart
    resource_id: BMC

- name: Turn manager power off
  community.general.redfish_command:
    category: Manager
    command: PowerForceOff
    resource_id: BMC

- name: Restart manager power forcefully
  community.general.redfish_command:
    category: Manager
    command: PowerForceRestart
    resource_id: BMC

- name: Shutdown manager power gracefully
  community.general.redfish_command:
    category: Manager
    command: PowerGracefulShutdown
    resource_id: BMC

- name: Turn manager power on
  community.general.redfish_command:
    category: Manager
    command: PowerOn
    resource_id: BMC

- name: Reboot manager power
  community.general.redfish_command:
    category: Manager
    command: PowerReboot
    resource_id: BMC

- name: Factory reset manager to defaults
  community.general.redfish_command:
    category: Manager
    command: ResetToDefaults
    resource_id: BMC
    reset_to_defaults_mode: ResetAll

- name: Verify BIOS attributes
  community.general.redfish_command:
    category: Systems
    command: VerifyBiosAttributes
    baseuri: "{{ baseuri }}"
    username: "{{ username }}"
    password: "{{ password }}"
    bios_attributes:
      SubNumaClustering: "Disabled"
      WorkloadProfile: "Virtualization-MaxPerformance"

返回值

通用返回值在此处记录 这里,以下是此模块独有的字段

描述

msg

字符串

包含操作结果或错误描述的消息

返回: 始终

示例: "操作成功"

return_values

字典

在 community.general 6.1.0 中添加

包含来自操作的特定于命令的响应数据的字典。

返回: 成功时

示例: {"update_status": {"handle": "/redfish/v1/TaskService/TaskMonitors/735", "messages": [], "resets_requested": [], "ret": true, "status": "New"}}

作者

  • Jose Delarosa (@jose-delarosa)

  • T S Kushal (@TSKushal)