community.general.imc_rest 模块 – 通过其 REST API 管理 Cisco IMC 硬件
注意
此模块是 community.general 集合 (版本 10.1.0) 的一部分。
如果您使用的是 ansible 包,则您可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。
要在 playbook 中使用它,请指定:community.general.imc_rest。
概要
- 提供对 Cisco IMC REST API 的直接访问。 
- 执行 Cisco IMC 支持的任何配置更改和操作。 
- 有关 IMC REST API 的更多信息,请访问 http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/c/sw/api/3_0/b_Cisco_IMC_api_301.html。 
要求
执行此模块的主机需要以下要求。
- lxml 
- xmljson >= 0.1.8 
参数
| 参数 | 注释 | 
|---|---|
| 如果不用  这对于模板化简单的请求可能很方便,对于任何复杂的请求,请使用 ansible.builtin.template 模块。 您可以整理多个 IMC XML 片段,它们将按顺序在单个流中处理,随后合并 Cisco IMC 输出。 | |
| Cisco IMC 的 IP 地址或主机名,可由 Ansible 控制主机解析。 | |
| 用于身份验证的密码。 默认值:  | |
| 要使用的连接协议。 选项 
 | |
| 以秒为单位的套接字级别超时。 这是每个连接(每个片段)可以花费的时间。如果达到此  默认值:  | |
| 用于登录交换机的用户名。 默认值:  | |
| 如果为  这应该只在使用自签名证书的个人控制站点上设置为  选项 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持:完全支持 | 可以在  | |
| 支持:不支持 | 处于差异模式时,将返回有关已更改内容(或可能需要在  | 
备注
注意
- XML 片段不需要身份验证 Cookie,模块会自动注入。 
- Cisco IMC XML 输出使用 Cobra 约定转换为 JSON。 
- 任何请求的 configConfMo 更改都返回状态“已修改”,即使与之前的配置没有实际更改。因此,此模块将在后续运行中始终报告更改。如果 Cisco IMC 的未来更新修复了此行为,此模块将自动适应。 
- 如果您遇到与 - The read operation timed out相关的- Connection failure,请增加- timeout参数。某些 XML 片段可能需要的时间比默认超时更长。
- 有关 IMC REST API 的更多信息,请访问 http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/c/sw/api/3_0/b_Cisco_IMC_api_301.html 
示例
- name: Power down server
  community.general.imc_rest:
    hostname: '{{ imc_hostname }}'
    username: '{{ imc_username }}'
    password: '{{ imc_password }}'
    validate_certs: false  # only do this when you trust the network!
    content: |
      <configConfMo><inConfig>
        <computeRackUnit dn="sys/rack-unit-1" adminPower="down"/>
      </inConfig></configConfMo>
  delegate_to: localhost
- name: Configure IMC using multiple XML fragments
  community.general.imc_rest:
    hostname: '{{ imc_hostname }}'
    username: '{{ imc_username }}'
    password: '{{ imc_password }}'
    validate_certs: false  # only do this when you trust the network!
    timeout: 120
    content: |
      <!-- Configure Serial-on-LAN -->
      <configConfMo><inConfig>
        <solIf dn="sys/rack-unit-1/sol-if" adminState="enable" speed=="115200" comport="com0"/>
      </inConfig></configConfMo>
      <!-- Configure Console Redirection -->
      <configConfMo><inConfig>
        <biosVfConsoleRedirection dn="sys/rack-unit-1/bios/bios-settings/Console-redirection"
          vpBaudRate="115200"
          vpConsoleRedirection="com-0"
          vpFlowControl="none"
          vpTerminalType="vt100"
          vpPuttyKeyPad="LINUX"
          vpRedirectionAfterPOST="Always Enable"/>
      </inConfig></configConfMo>
  delegate_to: localhost
- name: Enable PXE boot and power-cycle server
  community.general.imc_rest:
    hostname: '{{ imc_hostname }}'
    username: '{{ imc_username }}'
    password: '{{ imc_password }}'
    validate_certs: false  # only do this when you trust the network!
    content: |
      <!-- Configure PXE boot -->
      <configConfMo><inConfig>
        <lsbootLan dn="sys/rack-unit-1/boot-policy/lan-read-only" access="read-only" order="1" prot="pxe" type="lan"/>
      </inConfig></configConfMo>
      <!-- Power cycle server -->
      <configConfMo><inConfig>
        <computeRackUnit dn="sys/rack-unit-1" adminPower="cycle-immediate"/>
      </inConfig></configConfMo>
  delegate_to: localhost
- name: Reconfigure IMC to boot from storage
  community.general.imc_rest:
    hostname: '{{ imc_host }}'
    username: '{{ imc_username }}'
    password: '{{ imc_password }}'
    validate_certs: false  # only do this when you trust the network!
    content: |
      <configConfMo><inConfig>
        <lsbootStorage dn="sys/rack-unit-1/boot-policy/storage-read-write" access="read-write" order="1" type="storage"/>
      </inConfig></configConfMo>
  delegate_to: localhost
- name: Add customer description to server
  community.general.imc_rest:
    hostname: '{{ imc_host }}'
    username: '{{ imc_username }}'
    password: '{{ imc_password }}'
    validate_certs: false  # only do this when you trust the network!
    content: |
        <configConfMo><inConfig>
          <computeRackUnit dn="sys/rack-unit-1" usrLbl="Customer Lab - POD{{ pod_id }} - {{ inventory_hostname_short }}"/>
        </inConfig></configConfMo>
    delegate_to: localhost
- name: Disable HTTP and increase session timeout to max value 10800 secs
  community.general.imc_rest:
    hostname: '{{ imc_host }}'
    username: '{{ imc_username }}'
    password: '{{ imc_password }}'
    validate_certs: false  # only do this when you trust the network!
    timeout: 120
    content: |
        <configConfMo><inConfig>
          <commHttp dn="sys/svc-ext/http-svc" adminState="disabled"/>
        </inConfig></configConfMo>
        <configConfMo><inConfig>
          <commHttps dn="sys/svc-ext/https-svc" adminState="enabled" sessionTimeout="10800"/>
        </inConfig></configConfMo>
    delegate_to: localhost
返回值
常用返回值已在 此处 记录,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| Cisco IMC 登录的 XML 输出,使用 Cobra 约定转换为 JSON 返回:成功 示例: | |
| 任何 configConfMo XML 片段的 Cisco IMC XML 输出,使用 Cobra 约定转换为 JSON 返回:成功 示例: | |
| 以秒为单位的经过时间 返回:始终返回 示例: | |
| 最后一次请求的 Cisco IMC XML 错误输出,使用 Cobra 约定转换为 JSON 返回:失败 示例: | |
| Cisco IMC 错误代码 返回:失败 示例: | |
| Cisco IMC 错误消息 返回:失败 示例: | |
| 发送到 Cisco IMC 的原始 XML 输入,导致错误 返回:失败 示例: | |
| 从 Cisco IMC 收到的原始 XML 输出,包含错误详细信息 返回:失败 示例: | |
| HTTP 响应消息,包括内容长度 返回:始终返回 示例: | |
| HTTP 响应状态码 返回:始终返回 示例: | 
