cisco.dnac.rma_workflow_manager 模块 – 在思科催化中心管理设备更换工作流程。

注意

此模块是 cisco.dnac 集合 (版本 6.25.0) 的一部分。

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

要安装它,请使用: ansible-galaxy collection install cisco.dnac。您需要进一步的要求才能使用此模块,请参阅 要求 了解详细信息。

要在 playbook 中使用它,请指定:cisco.dnac.rma_workflow_manager

cisco.dnac 6.6.0 中的新增功能

概要

  • 此工作流程的目的是为网络管理员提供一个精简高效的流程,以启动故障网络设备的退货授权 (RMA) 请求。此自动化旨在简化 RMA 流程、减少人工工作并提高整体运营效率。

  • 在思科催化中心内实施 RMA(退货授权)工作流程,从而实现返回和更换故障网络设备的无缝流程。

  • RMA 工作流程有助于更换路由器、交换机和接入点 (AP)。

  • 允许管理员标记要更换的设备并跟踪整个更换工作流程。

  • 对于路由器和交换机,软件映像、配置和许可证将从故障设备恢复到更换设备,确保最小的中断。

  • 对于无线 AP,更换设备将被分配到同一站点,使用主无线控制器、射频配置文件和 AP 组设置进行配置,并放置在思科催化中心中与故障 AP 相同的楼层地图位置。

  • 在执行 RMA 之前,需要考虑以下事项:- 确保在启动更换过程之前,将故障设备的软件映像版本导入到映像存储库中。- 故障设备必须处于无法访问状态才有资格进行 RMA。- 如果更换设备通过即插即用 (PnP) 加入思科催化中心,请确保将故障设备分配给用户定义的站点。- 更换设备在启动 RMA 工作流程期间不得处于配置状态。- AP RMA 功能仅支持同类更换,这意味着更换 AP 必须具有与故障 AP 相同的型号和产品 ID (PID)。- 更换 AP 必须已加入与故障 AP 相同的思科无线控制器。- 作为无线控制器的思科 Mobility Express AP 不符合通过此 RMA 工作流程进行更换的条件。- 确保在启动更换过程之前,将故障 AP 的软件映像版本导入到映像存储库中。- 如果更换设备通过即插即用 (PnP) 加入思科催化中心,则必须将故障设备分配给用户定义的站点。- 更换 AP 在启动 RMA 工作流程期间不得处于配置状态。

要求

执行此模块的主机需要满足以下要求。

  • dnacentersdk >= 2.7.2

  • python >= 3.10

参数

参数

注释

ccc_poll_interval

整数

轮询思科催化中心的间隔(以秒为单位)。

默认: 2

config

列表 / 元素=字典 / 必需

用于启动 RMA 工作流程的故障和更换设备详细信息的列表。

faulty_device_ip_address

字符串

故障设备的 IP 地址。示例:204.192.3.40

faulty_device_name

字符串

故障设备的名称或主机名。示例:SJ-EN-9300.cisco.local

faulty_device_serial_number

字符串

故障设备的序列号。示例:FJC2327U0S2

replacement_device_ip_address

字符串

更换设备的 IP 地址。示例:204.1.2.5

replacement_device_name

字符串

更换设备的名称或主机名。示例:SJ-EN-9300.cisco.local

replacement_device_serial_number

字符串

更换设备的序列号。示例:FCW2225C020

config_verify

布尔值

设置为 True 以在应用 playbook 配置后验证思科催化中心配置。

选择

  • false ← (默认)

  • true

dnac_api_task_timeout

整数

定义 API 调用以检索任务详细信息的超时时间(以秒为单位)。如果在此时段内未收到任务详细信息,则该过程将结束,并且将记录超时通知。

默认: 1200

dnac_debug

布尔值

指示是否在思科催化中心 SDK 中启用了调试。

选择

  • false ← (默认)

  • true

dnac_host

字符串 / 必需

思科催化中心的主机名。

dnac_log

布尔值

启用/禁用 playbook 执行日志记录的标志。

当为 true 并且提供了 dnac_log_file_path 时,- 使用指定的名称在执行位置创建日志文件。

当为 true 并且未提供 dnac_log_file_path 时,- 在执行位置创建名为“dnac.log”的日志文件。

当为 false 时,- 日志记录被禁用。

如果日志文件不存在,- 则根据“dnac_log_append”标志以追加或写入模式创建它。

如果日志文件存在,- 则根据“dnac_log_append”标志覆盖或追加它。

选择

  • false ← (默认)

  • true

dnac_log_append

布尔值

确定文件的模式。设置为 True 表示“追加”模式。设置为 False 表示“写入”模式。

选择

  • false

  • true ← (默认)

dnac_log_file_path

字符串

控制日志记录。如果 dnac_log 为 True,则记录日志。

如果未指定路径,- 当“dnac_log_append”为 True 时,在当前的 Ansible 目录中生成“dnac.log”;日志将追加。- 当“dnac_log_append”为 False 时,生成“dnac.log”;日志将被覆盖。

如果指定了路径,- 当 ‘dnac_log_append’ 为 True 时,文件以追加模式打开。- 当 ‘dnac_log_append’ 为 False 时,文件以写入 (w) 模式打开。- 在共享文件场景中,如果没有追加模式,每次模块执行后内容都会被覆盖。- 对于共享日志文件,第一个模块的 append 设置为 False(以覆盖),后续模块的 append 设置为 True。

默认值: "dnac.log"

dnac_log_level

字符串

设置日志级别的阈值。级别等于或高于此阈值的消息将被记录。级别按严重程度排序为 [CRITICAL, ERROR, WARNING, INFO, DEBUG]。

CRITICAL 表示会导致程序停止的严重错误。只显示 CRITICAL 消息。

ERROR 表示阻止功能的问题。显示 ERROR 和 CRITICAL 消息。

WARNING 表示潜在的未来问题。显示 WARNING、ERROR 和 CRITICAL 消息。

INFO 跟踪正常操作。显示 INFO、WARNING、ERROR 和 CRITICAL 消息。

DEBUG 提供详细的诊断信息。显示所有日志消息。

默认值: "WARNING"

dnac_password

字符串

用于在 Cisco Catalyst Center 进行身份验证的密码。

dnac_port

字符串

指定与 Cisco Catalyst Center 关联的端口号。

默认值: "443"

dnac_task_poll_interval

整数

指定连续调用 API 以检索任务详细信息的时间间隔(秒)。

默认: 2

dnac_username

别名:user

字符串

用于在 Cisco Catalyst Center 进行身份验证的用户名。

默认值: "admin"

dnac_verify

布尔值

用于启用或禁用 SSL 证书验证的标志。

选择

  • false

  • true ← (默认)

dnac_version

字符串

指定 SDK 应使用的 Cisco Catalyst Center 的版本。

默认值: "2.2.3.3"

resync_retry_count

整数

重试重新同步的次数。

默认值: 1000

resync_retry_interval

整数

重新同步重试之间的时间间隔(秒)。

默认值: 30

state

字符串

‘replaced’ 状态用于指示工作流中用替换网络设备替换故障网络设备。

选择

  • "replaced" ← (默认)

timeout_interval

整数

操作的超时时间间隔(秒)。

默认值: 100

validate_response_schema

布尔值

Cisco Catalyst Center SDK 用于启用根据 JSON 模式验证请求体的标志。

选择

  • false

  • true ← (默认)

备注

注意

  • 使用的 SDK 方法是 - devices.get_device_detail - device_replacement.mark_device_for_replacement - device_replacement.deploy_device_replacement_workflow - device_replacement.unmark_device_for_replacement

  • 使用的路径是 - post /dna/intent/api/v1/device-replacement/workflow - put /dna/intent/api/v1/device-replacement/ - post /dna/intent/api/v1/device-replacement/

  • 局限性

  • RMA 仅支持替换相似设备。例如,Cisco Catalyst 3650 交换机只能替换为另一台 Cisco Catalyst 3650 交换机。故障设备和替换设备的平台 ID 必须匹配。可以使用 `show version` 命令获取 Cisco 设备的型号。

  • RMA 支持替换所有交换机、路由器和 Cisco SD-Access 设备,以下设备除外:- 基于机箱的 Nexus 7700 系列交换机 - 带有嵌入式无线控制器的设备 - Cisco 无线控制器

  • RMA 支持具有外部 SCEP 代理 PKI 证书的设备。在 RMA 工作流期间,为替换设备创建并验证 PKI 证书。必须从证书服务器手动删除被替换故障设备的 PKI 证书。

  • 仅当满足以下条件时,RMA 工作流才支持设备替换:- 故障设备和替换设备必须具有相同的扩展卡。- 故障设备必须由具有静态 IP 的 Catalyst Center 管理。(RMA 不支持由具有 DHCP IP 的 Catalyst Center 管理的设备。)- 由于扩展卡,两个设备中的端口数不得不同。- 替换设备必须连接到故障设备连接的同一端口。

  • Cisco Catalyst Center 不支持旧许可证部署。

  • 如果故障设备上安装的软件映像早于 Cisco IOS XE 16.8,则必须在替换设备上手动安装相同的旧网络许可证。

  • RMA 工作流会取消故障设备在 Cisco SSM 中的注册,并将替换设备注册到 Cisco SSM。

  • Cisco Catalyst Center 支持在 Fabric 网络中对替换设备进行 PnP 上线,以下情况除外:- 故障设备使用多个接口连接到上行链路设备。- 使用重叠池进行 LAN 自动化。

  • 如果替换设备通过 PnP-DHCP 功能上线,请确保设备在每次重新加载后都收到相同的 IP 地址,并且 DHCP 租约超时时间长于两个小时。

  • 不支持 check_mode

  • 该插件在控制节点上运行,不使用任何 Ansible 连接插件,而是使用 Cisco Catalyst Center SDK 中的嵌入式连接管理器

  • 以 dnac_ 开头的参数由 Cisco Catalyst Center Python SDK 用于建立连接

示例

- name: RMA workflow for faulty device replacement using device names
  cisco.dnac.rma_workflow_manager:
    dnac_host: "{{ dnac_host }}"
    dnac_username: "{{ dnac_username }}"
    dnac_password: "{{ dnac_password }}"
    dnac_verify: "{{ dnac_verify }}"
    dnac_port: "{{ dnac_port }}"
    dnac_version: "{{ dnac_version }}"
    dnac_debug: "{{ dnac_debug }}"
    dnac_log: true
    dnac_log_level: DEBUG
    config_verify: true
    resync_retry_count: 1000
    resync_retry_interval: 30
    ccc_poll_interval: 2
    timeout_interval: 100
    state: replaced
    config:
      - faulty_device_name: "SJ-EN-9300.cisco.local"
        replacement_device_name: "SJ-EN-9300.cisco-1.local"
  register: result

- name: RMA workflow for faulty device replacement using IP addresses
  cisco.dnac.rma_workflow_manager:
    dnac_host: "{{ dnac_host }}"
    dnac_username: "{{ dnac_username }}"
    dnac_password: "{{ dnac_password }}"
    dnac_verify: "{{ dnac_verify }}"
    dnac_port: "{{ dnac_port }}"
    dnac_version: "{{ dnac_version }}"
    dnac_debug: "{{ dnac_debug }}"
    dnac_log: true
    dnac_log_level: DEBUG
    config_verify: true
    resync_retry_count: 1000
    resync_retry_interval: 30
    ccc_poll_interval: 2
    timeout_interval: 100
    state: replaced
    config:
      - faulty_device_ip_address: "204.192.3.40"
        replacement_device_ip_address: "204.1.2.5"
  register: result

- name: RMA workflow for faulty device replacement using serial numbers
  cisco.dnac.rma_workflow_manager:
    dnac_host: "{{ dnac_host }}"
    dnac_username: "{{ dnac_username }}"
    dnac_password: "{{ dnac_password }}"
    dnac_verify: "{{ dnac_verify }}"
    dnac_port: "{{ dnac_port }}"
    dnac_version: "{{ dnac_version }}"
    dnac_debug: "{{ dnac_debug }}"
    dnac_log: true
    dnac_log_level: DEBUG
    config_verify: true
    resync_retry_count: 1000
    resync_retry_interval: 30
    ccc_poll_interval: 2
    timeout_interval: 100
    state: replaced
    config:
      - faulty_device_serial_number: "FJC2327U0S2"
        replacement_device_serial_number: "FCW2225C020"
  register: result

返回值

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

描述

response_1

字典

包含 Cisco Catalyst Center Python SDK 返回的 API 执行详细信息的对象。

返回值: 始终

示例: {"response": {"taskId": "string", "url": "string"}, "version": "string"}

response_2

字典

包含 Cisco Catalyst Center Python SDK 返回的 API 执行详细信息的对象。

返回值: 始终

示例: {"response": {"taskId": "string", "url": "string"}, "version": "string"}

response_3

字典

包含 Cisco Catalyst Center Python SDK 返回的 API 执行详细信息的对象。

返回值: 始终

示例: {"response": {"taskId": "string", "url": "string"}, "version": "string"}

response_4

字典

包含 Cisco Catalyst Center Python SDK 返回的 API 执行详细信息的对象。

返回值: 始终

示例: {"response": {"taskId": "string", "url": "string"}, "version": "string"}

作者

  • Trupti A Shetty (@TruptiAShetty)

  • A Mohamed Rafeek (@mohamedrafeek)

  • Madhan Sankaranarayanan (@madhansansel)

  • Ajith Andrew J (@ajithandrewj)