在 Azure 开发测试实验室中配置虚拟网络 - 以编程方式 (c#)
Configure a Virtual Network in Azure DevTest Labs - programmatically (c#)
我正在尝试创建一个具有两个地址空间(10.0.0.0/20 和 10.0.16.0/20)的全新网络,最重要的是,将 useInVmCreationPermission
和 usePublicIpAddressPermission
设置为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
我正在尝试创建一个具有两个地址空间(10.0.0.0/20 和 10.0.16.0/20)的全新网络,最重要的是,将 useInVmCreationPermission
和 usePublicIpAddressPermission
设置为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