在 Azure 开发测试实验室中配置虚拟网络 - 以编程方式 (c#)

Configure a Virtual Network in Azure DevTest Labs - programmatically (c#)

我正在尝试创建一个具有两个地址空间(10.0.0.0/20 和 10.0.16.0/20)的全新网络,最重要的是,将 useInVmCreationPermissionusePublicIpAddressPermission 设置为Allow.

我已经创建了实验室并且可以创建网络,但无法将它们相互关联。我不确定是否可以通过 REST API 但如果门户网站可以做到这一点,我很确定它可以实现(即使我必须使用 HttpClient)。它在 Azure 门户中的完成方式如下所述:https://docs.microsoft.com/en-us/azure/devtest-labs/devtest-lab-configure-vnet .

这是我的代码:

private async Task Create(IAzure azureClient, DbLab dbLab)
{
    var virtualNetworkId = Guid.NewGuid().ToString();
    var virtualNetwork = await azureClient
        .Networks
        .Define(virtualNetworkId)
        .WithRegion(dbLab.Region.Value)
        .WithExistingResourceGroup(dbLab.ResourceGroupName)
        .WithAddressSpace(Consts.IPv4DynamicAddressSpace)
        .WithAddressSpace(Consts.IPv4StaticAddressSpace)
        .WithSubnet($"{virtualNetworkId}_dynamic", Consts.IPv4DynamicAddressSpace)
        .WithSubnet($"{virtualNetworkId}_static", Consts.IPv4StaticAddressSpace)
        .CreateAsync();

    var fragment = new VirtualNetworkFragment(
        subnetOverrides: virtualNetwork.Subnets.Select(s =>
            new SubnetOverrideFragment(
                resourceId: s.Value.Name,
                useInVmCreationPermission: "Allow",
                usePublicIpAddressPermission: "Allow")).ToList());

    // fails because vnet is not related to that lab
    var vnet = await BaseClientFactory.CreateDevTestLabClient(azureClient)
        .VirtualNetworks
        .UpdateAsync(dbLab.ResourceGroupName, dbLab.LabId.ToString(), virtualNetworkId, fragment);
}

如何在 C# 中以编程方式将实验室附加到 vnet?

是的,您也可以通过 REST API 和 SDK 将现有的虚拟网络配置为实验室的虚拟网络设置。

REST API: Virtual Networks - Create Or Update

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DevTestLab/labs/{labName}/virtualnetworks/{name}?api-version=2018-09-15

请注意,resourceGroupName 是开发测试实验室所在资源组的名称,而不是 VNet 的名称。

这里是.Net SDK中的等效方法:CreateOrUpdateWithHttpMessagesAsync