0

我正在尝试创建一个具有两个地址空间(10.0.0.0/20 和 10.0.16.0/20)的全新网络,最重要的是,设置useInVmCreationPermissionusePublicIpAddressPermissionto 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?

4

1 回答 1

1

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

REST API: 虚拟网络 - 创建或更新

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

于 2021-01-04T20:34:26.737 回答