如何使用 ARM 或 Azure CLI 将现有虚拟网络连接到开发测试实验室?

How to connect an existing virtual netwrok to DevTest lab using ARM or Azure CLI?

我有一个资源组,其中包含使用 Bicep 单独创建的开发测试实验室和虚拟网络 (VNet)。

我可以使用 Azure 门户手动将 VNet 附加到开发测试实验室:

  1. 转到开发测试实验室
  2. Select“配置和策略”
  3. 从外部资源菜单中,select“虚拟网络”
  4. 点击“添加”
  5. Select VNet

是否可以使用 Azure CLI 自动执行此过程?或任何其他选择?

因为我正在采用 Azure DevOps 管道 运行(Bicep 代码)并自动调整 (Azure CLI) 资源。

我正在为 VNET 使用 ARM/Bicep 模板 (Microsoft.Network/virtualNetworks@2021-02-01),为开发测试实验室使用 (Microsoft.DevTestLab/labs@2018-09-15)

如果您要分别创建 Vnet 和 Devtest 实验室,那么您可以使用 Github 中的以下 Azure Quickstart Template 使用现有 vnet 创建 Devtestlab:

JSON ARM:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "newLabName": {
        "type": "string",
        "metadata": {
          "description": "The name of the new lab instance to be created."
        }
      },
      "newLabVirtualNetworkName": {
        "type": "string",
        "metadata": {
          "description": "The name of the new lab virtual network instance to be created with the new lab instance being created."
        }
      },
      "existingVirtualNetworkId": {
        "type": "string",
        "metadata": {
          "description": "The resource ID pointing to an existing (compute) virtual network to be referenced by the new lab virtual network instance being created."
        }
      },
      "existingSubnetName": {
        "type": "string",
        "defaultValue": "default",
        "metadata": {
          "description": "The name of an existing (compute) subnet instance to be configured for Lab VM creation."
        }
      }
    },
    "variables": {
      "existingSubnetId": "[concat(parameters('existingVirtualNetworkId'), '/subnets/', parameters('existingSubnetName'))]"
    },
    "resources": [
      {
        "apiVersion": "2018-10-15-preview",
        "type": "Microsoft.DevTestLab/labs",
        "name": "[parameters('newLabName')]",
        "location": "[resourceGroup().location]",
        "resources": [
          {
            "apiVersion": "2018-10-15-preview",
            "name": "[parameters('newLabVirtualNetworkName')]",
            "type": "virtualNetworks",
            "dependsOn": [
              "[resourceId('Microsoft.DevTestLab/labs', parameters('newLabName'))]"
            ],
            "properties": {
              "description": "Existing Compute virtual network associated as part of the lab creation process.",
              "externalProviderResourceId": "[parameters('existingVirtualNetworkId')]",
              "subnetOverrides": [
                {
                  "name": "[parameters('existingSubnetName')]",
                  "resourceId": "[variables('existingSubnetId')]",
                  "useInVmCreationPermission": "Allow",
                  "usePublicIpAddressPermission": "Allow"
                }
              ]
            }
          }
        ]
      }
    ],
    "outputs": {
      "labId": {
        "type": "string",
        "value": "[resourceId('Microsoft.DevTestLab/labs', parameters('newLabName'))]"
      }
    }
  }

输出:我在我的环境中测试了它,结果如下:

注:不幸的是,没有连接vnet和Devtestlabs using Azure CLI or Azure-Powershell的命令。

二头肌手臂:

@description('The name of the new lab instance to be created.')
param newLabName string

@description('The name of the new lab virtual network instance to be created with the new lab instance being created.')
param newLabVirtualNetworkName string

@description('The resource ID pointing to an existing (compute) virtual network to be referenced by the new lab virtual network instance being created.')
param existingVirtualNetworkId string

@description('The name of an existing (compute) subnet instance to be configured for Lab VM creation.')
param existingSubnetName string = 'default'

var existingSubnetId = '${existingVirtualNetworkId}/subnets/${existingSubnetName}'

resource newLabName_resource 'Microsoft.DevTestLab/labs@2018-10-15-preview' = {
  name: newLabName
  location: resourceGroup().location
}

resource newLabName_newLabVirtualNetworkName 'Microsoft.DevTestLab/labs/virtualNetworks@2018-10-15-preview' = {
  parent: newLabName_resource
  name: newLabVirtualNetworkName
  properties: {
    description: 'Existing Compute virtual network associated as part of the lab creation process.'
    externalProviderResourceId: existingVirtualNetworkId
    subnetOverrides: [
      {
        name: existingSubnetName
        resourceId: existingSubnetId
        useInVmCreationPermission: 'Allow'
        usePublicIpAddressPermission: 'Allow'
      }
    ]
  }
}

output labId string = newLabName_resource.id

输出: