运行读写命令

读取写入(RW)功能允许你远程修改设备配置,而无需访问网络结构设备。 在网络结构中的设备层面应用 RW 配置命令。 由于配置命令保留在设备级别,因此要跨所有设备进行配置,必须将配置应用到构造中的每个设备。

执行 RW 命令可防止通过命令行接口(CLI)或门户实施的更改,从而保护您的配置不被修改。 若要通过 RW API 引入多个配置,请将新命令追加到现有的 RW 命令。 例如,在修改多个设备接口后,请将以前的配置与任何新的更改一起纳入,以防止被覆盖。

仅在升级方案中还原 RW 配置。 升级后,必须根据需要重新应用 RW 修改。 以下示例逐步指导你完成 RW API 过程。

先决条件

确保 Nexus Network Fabric 已成功完成预配。

Procedure

执行 RW 配置命令并更改设备时,设备的配置状态将移动到 延迟控制。 此状态指示 RW 配置已推送到该设备。 如果反向应用了 RW 配置,则设备的配置将恢复到其原始 成功 状态。

选择“网络设备”

登录到 Azure 门户

访问网络设备:

登录后,使用顶部 Network Devices 的搜索栏搜索或导航到“所有服务”,并在“网络”类别下查找网络设备。

单击“网络设备”以打开订阅中的网络设备列表。

选择网络设备:

在网络设备列表中,找到并单击要配置的网络设备。 这会将你带到所选网络设备的详细信息页。

记下此网络设备的资源名称和资源组,因为 CLI 命令需要这些资源。

若要获取资源的名称,请单击 JSON 视图(在“属性”或“概述”部分中找到),显示设备的详细属性,包括资源名称。

Azure 门户的屏幕截图,其中显示了网络设备的概述。

例子

以下部分提供了 RW 命令的示例,可用于修改设备的配置。 这些示例使用以太网接口 1、2 和 3 来演示如何调整接口名称,并允许观察这些修改的结果。

使用 RW API 更改配置之前,网络架构设备的快照

show interfaces description  
|Interface  |Status  |Protocol  |Description  |
|---------|---------|---------|---------|
|Et1      | admin down        | down          | **"AR-Mgmt2:Et1 to Not-Connected"**          |
|Et2      | admin down        | down          | **"AR-Mgmt2:Et2 to Not-Connected"**         |
|Et3      | admin down        | down          | **"AR-Mgmt2:Et3 to Not-Connected"**         |
|Et4      | admin down        | down          | **"AR-Mgmt2:Et4 to Not-Connected"**       |

更改接口的说明

该示例演示如何将设备的接口说明更改为 RW-test。

az networkfabric device run-rw --resource-name <ResourceName> --resource-group <ResourceGroupName> --rw-command "interface Ethernet 1\n description RW-test"
参数 Description
az networkfabric device run-rw 用于在 Azure Network Fabric 中的网络设备上执行读写作的 Azure CLI 命令。
--resource-name 指定将进行读/写操作的资源(网络设备)的名称。
--resource-group 指定包含网络设备的资源组的名称。
--rw-command "interface Ethernet 1\n description RW-test" 指定要在网络设备上执行的 RW 命令。 在此示例中,它将以太网接口 1 的说明设置为“RW-test”。

预期输出:

{}

命令用 --no-wait--debug

az networkfabric device run-rw --resource-name <ResourceName> --resource-group <ResourceGroupName> --rw-command "interface Ethernet 1\n description RW-test" **--no-wait --debug**
参数 Description
az networkfabric device run-rw 用于在 Azure Network Fabric 中的网络设备上执行读写作的 Azure CLI 命令。
--resource-name 指定将进行读/写操作的资源(网络设备)的名称。
--resource-group 指定包含网络设备的资源组的名称。
--rw-command "interface Ethernet 1\n description RW-test" 指定要在网络设备上执行的 RW 命令。 在此示例中,它将以太网接口 1 的说明设置为“RW-test”。
--no-wait 指示应异步执行命令,而无需等待操作完成。
--debug 启用调试模式的标志,提供有关执行命令的其他信息以进行故障排除。

预期的截断输出:

cli.knack.cli: __init__ debug log: 
cli.azure.cli.core.sdk.policies:     'Azure-AsyncOperation': 'https://eastus.management.azure.com/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/e239299a-8c71-426e-8460-58d4c0b470e2*BF225A07F7F4850DA565ABE0036AB?api-version=2022-01-15-privatepreview&t=638479088323069839&c= 
telemetry.main: Begin creating telemetry upload process. 
telemetry.process: Return from creating process 
telemetry.main: Finish creating telemetry upload process. 

可以通过运行以下命令来编程检查操作的状态:

az rest -m get -u "<Azure-AsyncOperation-endpoint url>"

从截断输出中提取的 Azure-AsyncOperation 终结点 URL 的示例。

<https://eastus.management.azure.com/subscriptions/xxxxxxxxxxx/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/xxxxxxxxxxx?api-version=20XX-0X-xx-xx>

状态应指示 API 是成功还是失败。

预期输出:

{ 
  "id": "/subscriptions/XXXXXXXXXXXX/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkDevices/ResourceName", 
  "location": "eastus", 
  "name": "ResourceName", 
  "properties": { 
    "administrativeState": "Enabled", 
    "configurationState": "DeferredControl", 
    "hostName": "<Hostname>", 
    "networkDeviceRole": "Management", 
    "networkDeviceSku": "DefaultSku", 
    "networkRackId": "/subscriptions/XXXXXXXXXXXX/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkRacks/NFResourceName", 
    "provisioningState": "Succeeded", 
    "serialNumber": "Arista;CCS-720DT-XXXX;11.07;WTW2248XXXX", 
    "version": "3.0.0" 
  }, 
  "systemData": { 
    "createdAt": "2024-XX-XXT13:41:13.8558264Z", 
    "createdBy": "xxxxxxxx-xxxx-xxxx-xxxxxx", 
    "createdByType": "Application", 
    "lastModifiedAt": "2024-XX-XXT10:44:21.3736554Z", 
    "lastModifiedBy": "xxxxxxxx-xxxx-xxxx-xxxxxx", 
    "lastModifiedByType": "Application" 
  }, 
  "type": "microsoft.managednetworkfabric/networkdevices" 
}

RW 配置成功后,设备配置状态将变为 延迟的控制 状态。 如果配置失败,则不会发生状态更改。

show interfaces description  
|Interface  |Status  |Protocol  |Description  |
|---------|---------|---------|---------|
|Et1      | admin down        | down          | **RW-test1**         |
|Et2      | admin down        | down          | "AR-Mgmt2:Et2 to Not-Connected"        |
|Et3      | admin down        | down          | "AR-Mgmt2:Et3 to Not-Connected"          |
|Et4      | admin down        | down          | "AR-Mgmt2:Et4 to Not-Connected"     |

更改接口的三个说明

此示例演示如何将设备说明上的三个不同的接口更改为 RW-test1、RW-test2、RW-test3。

az networkfabric device run-rw --resource-name <ResourceName> --resource-group <ResourceGroupName> --rw-command "interface Ethernet 1\n description RW-test1\n interface Ethernet 2\n description RW-test2\n interface Ethernet 3\n description RW-test3"

参数 Description
az networkfabric device run-rw 用于在 Azure Network Fabric 中的网络设备上执行读写作的 Azure CLI 命令。
--resource-name <ResourceName> 指定将进行读/写操作的资源(网络设备)的名称。
--resource-group <ResourceGroupName> 指定包含网络设备的资源组的名称。
--rw-command "interface Ethernet 1\n description RW-test1\n interface Ethernet 2\n description RW-test2\n interface Ethernet 3\n description RW-test3" 指定要在网络设备上执行的 RW 命令。 每个“interface”命令设置指定以太网接口的说明。

预期输出:

{}

命令用 --no-wait--debug

az networkfabric device run-rw --resource-name <ResourceName> --resource-group <ResourceGroupName> --rw-command "interface Ethernet 1\n description RW-test1\n interface Ethernet 2\n description RW-test2\n interface Ethernet 3\n description RW-test3" --no-wait --debug
参数 Description
az networkfabric device run-rw 用于在 Azure Network Fabric 中的网络设备上执行读写作的 Azure CLI 命令。
--resource-name <ResourceName> 指定将进行读/写操作的资源(网络设备)的名称。
--resource-group <ResourceGroupName> 指定包含网络设备的资源组的名称。
--rw-command "interface Ethernet 1\n description RW-test1\n interface Ethernet 2\n description RW-test2\n interface Ethernet 3\n description RW-test3" 指定要在网络设备上执行的 RW 命令。 每个“interface”命令设置指定以太网接口的说明。
--no-wait 指示应异步执行命令,而无需等待操作完成。
--debug 启用调试模式的标志,提供有关执行命令的其他信息以进行故障排除。

预期的截断输出:

cli.knack.cli: Command arguments: \['networkfabric', 'device', 'run-rw', '--resource-name', 'nffab100g-5-3-AggrRack-MgmtSwitch2', '--resource-group', 'Fab100GLabNF-5-3', '--rw-command', 'interface Ethernet 1\\\\n description RW-test1\\\\n interface Ethernet 2\\\\n description RW-test2\\\\n interface Ethernet 3\\\\n description RW-test3', '--debug'\]
cli.knack.cli: \_\_init\_\_ debug log:
cli.azure.cli.core.sdk.policies: 'Azure-AsyncOperation': 'https://eastus.management.azure.com/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/e239299a-8c71-426e-8460-58d4c0b470e2\*BF225A07F7F4850DA565ABE0036AB?api-version=2022-01-15-privatepreview&t=638479088323069839&c=
telemetry.main: Begin creating telemetry upload process.
telemetry.process: Creating upload process: "C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\python.exe C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\Lib\\site-packages\\azure\\cli\\telemetry\\\_\_init\_\_.pyc \\.azure"
telemetry.process: Return from creating process
telemetry.main: Finish creating telemetry upload process.

可以通过运行以下命令来编程检查操作的状态:

az rest -m get -u "<Azure-AsyncOperation-endpoint url>"

从截断输出中提取的 Azure-AsyncOperation 终结点 URL 的示例。

<https://eastus.management.azure.com/subscriptions/xxxxxxxxxxx/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/xxxxxxxxxxx?api-version=20XX-0X-xx-xx>

状态应指示 API 是成功还是失败。

预期输出:

{ 
  "id": "/subscriptions/XXXXXXXXXXXX/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkDevices/ResourceName", 
  "location": "eastus", 
  "name": "ResourceName", 
  "properties": { 
    "administrativeState": "Enabled", 
    "configurationState": "**DeferredControl**", 
    "hostName": "<Hostname>", 
    "networkDeviceRole": "Management", 
    "networkDeviceSku": "DefaultSku", 
    "networkRackId": "/subscriptions/ XXXXXXXXXXXX /resourceGroups/ ResourceGroupName /providers/Microsoft.ManagedNetworkFabric/networkRacks/ NFResourceName ", 
    "provisioningState": "Succeeded", 
    "serialNumber": "Arista;CCS-720DT-XXXX;11.07;WTW2248XXXX", 
    "version": "3.0.0" 
  }, 
  "systemData": { 
    "createdAt": "2024-XX-XXT13:41:13.8558264Z", 
    "createdBy": "xxxxxxxx-xxxx-xxxx-xxxxxx", 
    "createdByType": "Application", 
    "lastModifiedAt": "2024-XX-XXT10:44:21.3736554Z", 
    "lastModifiedBy": "xxxxxxxx-xxxx-xxxx-xxxxxx", 
    "lastModifiedByType": "Application" 
  }, 
  "type": "microsoft.managednetworkfabric/networkdevices" 
} 
show interfaces description  
|Interface  |Status  |Protocol  |Description  |
|---------|---------|---------|---------|
|Et1      | admin down        | down          | **RW-test1**         |
|Et2      | admin down        | down          | **RW-test2**         |
|Et3      | admin down        | down          | **RW-test3**         |
|Et4      | admin down        | down          | "AR-Mgmt2:Et4 to Not-Connected"     |

覆盖以前的配置

此示例演示在未追加旧读写配置的情况下如何覆盖之前的配置:

az networkfabric device run-rw --resource-name <ResourceName> --resource-group <ResourceGroupName> --rw-command "interface Ethernet 3\n description RW-test3"
参数 Description
az networkfabric device run-rw 用于在 Azure Network Fabric 中的网络设备上执行读写作的 Azure CLI 命令。
--resource-name 指定将进行读/写操作的资源(网络设备)的名称。
--resource-group 指定包含网络设备的资源组的名称。
--rw-command "interface Ethernet 1\n description RW-test1\n interface Ethernet 2\n description RW-test2\n interface Ethernet 3\n description RW-test3" 指定要在网络设备上执行的 RW 命令。 每个“interface”命令设置指定以太网接口的说明。

预期输出:

{}

命令用 --no-wait--debug

az networkfabric device run-rw --resource-name <ResourceName> --resource-group <ResourceGroupName> --rw-command "interface Ethernet 3\n description RW-test3" --no-wait --debug 
参数 Description
az networkfabric device run-rw 用于在 Azure Network Fabric 中的网络设备上执行读写作的 Azure CLI 命令。
--resource-name 指定将进行读/写操作的资源(网络设备)的名称。
--resource-group 指定包含网络设备的资源组的名称。
--rw-command "interface Ethernet 1\n description RW-test1\n interface Ethernet 2\n description RW-test2\n interface Ethernet 3\n description RW-test3" 指定要在网络设备上执行的 RW 命令。 每个“interface”命令设置指定以太网接口的说明。
--no-wait 指示应异步执行命令,而无需等待操作完成。
--debug 启用调试模式的标志,提供有关执行命令的其他信息以进行故障排除。

预期的截断输出:

cli.knack.cli: Command arguments: \['networkfabric', 'device', 'run-rw', '--resource-name', 'nffab100g-5-3-AggrRack-MgmtSwitch2', '--resource-group', 'Fab100GLabNF-5-3', '--rw-command', \`interface Ethernet 3\\n description RW-test3\`, '--debug'\]cli.knack.cli: \_\_init\_\_ debug log:
cli.azure.cli.core.sdk.policies: 'Azure-AsyncOperation': 'https://eastus.management.azure.com/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/e239299a-8c71-426e-8460-58d4c0b470e2\*BF225A07F7F4850DA565ABE0036AB?api-version=2022-01-15-privatepreview&t=638479088323069839&c=
telemetry.main: Begin creating telemetry upload process.
telemetry.process: Creating upload process: "C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\python.exe C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\Lib\\site-packages\\azure\\cli\\telemetry\\\_\_init\_\_.pyc \\.azure"
telemetry.process: Return from creating process
telemetry.main: Finish creating telemetry upload process.

可以通过运行以下命令来编程检查操作的状态:

az rest -m get -u "<Azure-AsyncOperation-endpoint url>"

从截断输出中提取的 Azure-AsyncOperation 终结点 URL 的示例。

<https://eastus.management.azure.com/subscriptions/xxxxxxxxxxx/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/xxxxxxxxxxx?api-version=20XX-0X-xx-xx>

预期输出:

{ 
  "id": "/subscriptions/XXXXXXXXXXXX/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkDevices/ResourceName", 
  "location": "eastus", 
  "name": "ResourceName", 
  "properties": { 
    "administrativeState": "Enabled", 
    "configurationState": "**DeferredControl**", 
    "hostName": "<Hostname>", 
    "networkDeviceRole": "Management", 
    "networkDeviceSku": "DefaultSku", 
    "networkRackId": "/subscriptions/ XXXXXXXXXXXX /resourceGroups/ ResourceGroupName /providers/Microsoft.ManagedNetworkFabric/networkRacks/ NFResourceName ", 
    "provisioningState": "Succeeded", 
    "serialNumber": "Arista;CCS-720DT-XXXX;11.07;WTW2248XXXX", 
    "version": "3.0.0" 
  }, 
  "systemData": { 
    "createdAt": "2024-XX-XXT13:41:13.8558264Z", 
    "createdBy": "xxxxxxxx-xxxx-xxxx-xxxxxx", 
    "createdByType": "Application", 
    "lastModifiedAt": "2024-XX-XXT10:44:21.3736554Z", 
    "lastModifiedBy": "xxxxxxxx-xxxx-xxxx-xxxxxx", 
    "lastModifiedByType": "Application" 
  }, 

  "type": "microsoft.managednetworkfabric/networkdevices" 

} 
show interfaces description
|Interface  |Status  |Protocol  |Description  |
|---------|---------|---------|---------|
|Et1      | admin down        | down          | "AR-Mgmt2:Et1 to Not-Connected"          |
|Et2      | admin down        | down          | "AR-Mgmt2:Et2 to Not-Connected"        |
|Et3      | admin down        | down          | **RW-test3**         |
|Et4      | admin down        | down          | "AR-Mgmt2:Et4 to Not-Connected"     |

清理读取写入配置

此示例演示如何清理 RW 配置。 运行清理时,配置将还原到原始配置。

az networkfabric device run-rw --resource-name <ResourceName> --resource-group <ResourceGroupName> --rw-command " " 
参数 Description
az networkfabric device run-rw 用于在 Azure Network Fabric 中的网络设备上执行读写作的 Azure CLI 命令。
--resource-name <ResourceName> 指定将进行读/写操作的资源(网络设备)的名称。
--resource-group <ResourceGroupName> 指定包含网络设备的资源组的名称。
--rw-command " " 指定要在网络设备上执行的空 RW 命令。 此命令实际上是一个不执行动作的占位符。

注释

请确保空的 RW 命令中的引号之间留有空格。

预期输出:

{}

命令用 --no-wait--debug

az networkfabric device run-rw --resource-name <ResourceName> --resource-group <ResourceGroupName> --rw-command " " --no-wait --debug
参数 Description
az networkfabric device run-rw 用于在 Azure Network Fabric 中的网络设备上执行读写作的 Azure CLI 命令。
--resource-name <ResourceName> 指定将进行读/写操作的资源(网络设备)的名称。
--resource-group <ResourceGroupName> 指定包含网络设备的资源组的名称。
--rw-command " " 指定要在网络设备上执行的空 RW 命令。 此命令本质上是不执行任何操作的占位符。
--no-wait 指示应异步执行命令,而无需等待操作完成。
--debug 启用调试模式的标志,提供有关执行命令的其他信息以进行故障排除。

预期的截断输出:

cli.knack.cli: Command arguments: \['networkfabric', 'device', 'run-rw', '--resource-name', 'nffab100g-5-3-AggrRack-MgmtSwitch2', '--resource-group', 'Fab100GLabNF-5-3', '--rw-command', ' ' '--debug'\]cli.knack.cli: \_\_init\_\_ debug log:
cli.azure.cli.core.sdk.policies: 'Azure-AsyncOperation': 'https://eastus.management.azure.com/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/e239299a-8c71-426e-8460-58d4c0b470e2\*BF225A07F7F4850DA565ABE0036AB?api-version=2022-01-15-privatepreview&t=638479088323069839&c=
telemetry.main: Begin creating telemetry upload process.
telemetry.process: Creating upload process: "C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\python.exe C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\Lib\\site-packages\\azure\\cli\\telemetry\\\_\_init\_\_.pyc \\.azure"
telemetry.process: Return from creating process
telemetry.main: Finish creating telemetry upload process.

可以通过运行以下命令来编程检查操作的状态:

az rest -m get -u "<Azure-AsyncOperation-endpoint url>"

从截断输出中提取的 Azure-AsyncOperation 终结点 URL 的示例。

<https://eastus.management.azure.com/subscriptions/xxxxxxxxxxx/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/xxxxxxxxxxx?api-version=20XX-0X-xx-xx>

状态指示 API 是成功还是失败。

预期输出:

{ 
  "id": "/subscriptions/XXXXXXXXXXXX/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkDevices/ResourceName", 
  "location": "eastus", 
  "name": "ResourceName", 
  "properties": { 
    "administrativeState": "Enabled", 
    "configurationState": "**Succeeded**", 
    "hostName": "<Hostname>", 
    "networkDeviceRole": "Management", 
    "networkDeviceSku": "DefaultSku", 
    "networkRackId": "/subscriptions/ XXXXXXXXXXXX /resourceGroups/ ResourceGroupName /providers/Microsoft.ManagedNetworkFabric/networkRacks/ NFResourceName ", 
    "provisioningState": "Succeeded", 
    "serialNumber": "Arista;CCS-720DT-XXXX;11.07;WTW2248XXXX", 
    "version": "3.0.0" 
  }, 
  "systemData": { 
    "createdAt": "2024-XX-XXT13:41:13.8558264Z", 
    "createdBy": "xxxxxxxx-xxxx-xxxx-xxxxxx", 
    "createdByType": "Application", 
    "lastModifiedAt": "2024-XX-XXT10:44:21.3736554Z", 
    "lastModifiedBy": "xxxxxxxx-xxxx-xxxx-xxxxxx", 
    "lastModifiedByType": "Application" 
  }, 
  "type": "microsoft.managednetworkfabric/networkdevices" 
} 

当 RW 配置还原回原始配置时,设备的配置状态将从延期控制移动到“成功”。

show interfaces description
|Interface  |Status  |Protocol  |Description  |
|---------|---------|---------|---------|
|Et1      | admin down        | down          | **"AR-Mgmt2:Et1 to Not-Connected"**         |
|Et2      | admin down        | down          | **"AR-Mgmt2:Et2 to Not-Connected"**         |
|Et3      | admin down        | down          | **"AR-Mgmt2:Et3 to Not-Connected"**      |
|Et4      | admin down        | down          |  **"AR-Mgmt2:Et4 to Not-Connected"**    |

命令限制

RW 命令功能处于打开状态,并且没有限制。 但是,请谨慎行事,因为不正确的配置用法可能会导致系统瘫痪。

  • 不建议创建范围从 1 到 500 和 3000 到 4095 的 VLAN,因为此范围是为基础结构目的保留的。

  • 不要篡改管理 vLAN 配置。

  • 必须不要篡改网络到网络互连(NNI)入口和出口访问控制列表(ACL),因为任何修改都可能导致与 Azure 操作员 Nexus 实例的连接丢失。

  • 没有针对 RW 命令执行的逻辑或语法检查。 在执行配置之前,必须确保对配置进行审核。

  • RW 配置命令应该是绝对命令;不支持短表单和提示。 例如:输入router bgp <ASN>\n vrf <name>\n neighbor <IPaddress> shutdown 而不是router bgp <ASN>\n vrf <name>\n nei <IPaddress> sh or shut

  • 在实施之前彻底查看路由策略配置至关重要,因为任何监督都可能会损害现有的路由策略设置。

  • 更改路由器 BGP 配置并将其关闭会降低设备的稳定性。

检索 runRW 配置

若要获取上次成功应用的 runRW 配置,请参阅该 rwDeviceConfig 属性。 此属性存储设备上次成功应用的 RW 配置。 若要访问它,请在设备资源上执行 GET 请求。

az networkfabric device show --resource-group "example-rg" --resource-name "example-device"
参数 别名 Description
--resource-group -g 资源组的名称。 可以使用 az configure --defaults group=<name>配置默认组。
--resource-name 网络设备的名称。

预期输出

{
  "id": "/subscriptions/xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkDevices/example-device-name",
  "location": "uaenorth",
  "name": "example-device-name",
  "properties": {
    "administrativeState": "Enabled",
    "configurationState": "DeferredControl",
    "hostName": "AR-CE1",
    "networkDeviceRole": "CE",
    "networkDeviceSku": "DefaultSku",
    "networkRackId": "/subscriptions/xxxxxx-xxxx-xxxx-xxxxxx/resourceGroups/example-rg/providers/Microsoft.ManagedNetworkFabric/networkRacks/example-rack-name",
    "provisioningState": "Succeeded",
    "rwDeviceConfig": "interface Ethernet 1/1\n description RW-test1",
    "serialNumber": "Arista;CCS-720DT-XXXX;11.07;WTW2248XXXX",
    "version": "4.0.0"
  },
  "systemData": {
    "createdAt": "2025-02-23T04:57:13.6113277Z",
    "createdBy": "xxxxxxxx-xxxx-xxxx-xxxxxx",
    "createdByType": "Application",
    "lastModifiedAt": "2025-02-27T08:27:46.3818706Z",
    "lastModifiedBy": "xxxxxxxx-xxxx-xxxx-xxxxxx",
    "lastModifiedByType": "Application"
  },
  "type": "microsoft.managednetworkfabric/networkdevices"
}

注释

RW 配置在没有 ZTP 的情况下在重新启动期间保持不变,但不会保留升级、设备 RMA 或使用 ZTP 重新启动。 在这些事件之后,rwDeviceConfig 属性为空,除非用户手动重新应用 RW 配置。

设备升级期间的持久 RW 配置

在 Azure 运营商 Nexus 中,网络设备上的 Read-Write(RW)配置现在会在设备软件升级时保留。 这可确保用户定义 RW 更改在升级后保持不变,保持一致性并降低配置偏移的风险。

工作原理

升级过程遵循两个步骤:

  • 设备升级:设备的 EOS 软件已升级并启动。

  • RW 重新应用:升级完成后,系统会自动将所有以前配置的 RW 命令重新应用到设备。

此重新应用可确保在设备重启或版本转换后还原持久配置并保持有效。

重要

Arista EOS 目前不支持预验证 RW 配置。 如果任何命令已弃用、无效或不可正常运行,则可能会导致升级失败。

失败处理

如果在重新应用期间 RW 配置失败,设备将进入失败状态,升级过程将不会完成。

用户将通过 Azure CLI 收到错误输出。

在这种情况下:

使用更新和更正的 RW 配置提交支持请求。

支持团队将与你协调,通过启用 Lockbox 的管理员操作重新应用新的 RW 配置。

如果重新应用仍然失败,可能需要重试管理员操作,同时执行进一步更正。

概要

功能 / 特点 行为
RW 命令持久性 升级后自动重新应用
RW 配置预验证 不支持
失败时 设备进入失败状态
恢复 提交支持工单;通过启用Lockbox的管理员操作应用了已更正的配置

局限性

常见问题:

  • 是否可以同时运行多个命令?

    是的,可以同时运行多个命令。 请参阅这些示例,查看如何同时执行多个命令。

  • 如何检查配置是否成功?

    可以通过以下任一方式检查配置:

    • 运行 Read-Only API 并运行所需的 show 命令来验证配置是否成功,

    • 运行配置差异功能以查看配置之间的区别。

    RW POST 消息指示执行是否成功或失败。

  • 如果执行 RW 配置命令不正确,会发生什么情况?

    RW POST 消息返回错误消息,如本文中提供的示例所示。 不会对设备应用任何配置更改。 必须重新运行配置命令。

  • 如何多次保留 RW 配置命令?

    如果尝试通过已保留的配置修改和更新配置,则必须提供所有修改后的持久配置,否则配置将被最新的 RW 配置覆盖。

    例如

    如果已成功创建 vlan 505 并尝试创建另一组 vlan(vlan 510),则必须添加 vlan 505\\n vlan 510。 如果你不这样做,最新的 RW 配置命令将覆盖 vlan 505。

  • 如何删除配置?

    必须提供 null 值 " "。 请参阅本文的示例部分。

  • RW 命令是否在整个构造中持久化?

    RW 配置命令是永久性的,但 API 允许你在设备级别运行。 如果要跨构造运行 RW 命令,则必须在所需的构造设备中运行 RW API。

已知问题

RW 配置存在以下已知问题:

  • 报告错误的原因是无法通过错误响应区分内部错误与 gNMI 设置错误。