在Azure DevTest实验室中以编程方式配置虚拟网络(c#)



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

我已经创建了实验室,我可以创建一个网络,但我无法将它们相互关联。我不确定是否可以通过REST API实现,但如果门户实现了这一点,我很确定它是可以实现的(即使我必须使用HttpClient(。Azure门户中的操作方式如下所述:https://learn.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:虚拟网络-创建或更新

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

注意,resourceGroupName是DevTest Lab所在的资源组的名称,而不是VNet的名称。

以下是.Net SDK中的等效方法:CreateOrUpdateWithHttpMessagesAsync

最新更新