简体   繁体   English

Azure Powershell - 将多个服务端点应用于 su.net

[英]Azure Powershell - Applying multiple service endpoints to a subnet

I have coded a powershell script to set an existing su.net to function as a service endpoint for multiple services.我编写了一个 powershell 脚本来将现有的 su.net 设置为 function 作为多个服务的服务端点。 However, when I run the command line in the script, it doesn't add a new service endpoint, it just changes the existing one.但是,当我在脚本中运行命令行时,它并没有添加新的服务端点,它只是更改了现有的服务端点。

I am trying to parameterise this through Jenkins as well, which may be an added complication.我也试图通过 Jenkins 对此进行参数化,这可能会增加复杂性。 I think if I can get the base syntax right then that shouldn't be a problem.我认为如果我能正确掌握基本语法,那应该不是问题。

Syntax I am using is:我使用的语法是:

#Get vnet
$virtualnetwork = Get-AzureRmVirtualNetwork -Name $VN -ResourceGroupName $RG

#Configure service endpoint
Add-AzureRmVirtualNetworkSubnetConfig -Name $SN -AddressPrefix $SAP -  
VirtualNetwork $virtualnetwork -ServiceEndpoint $EP

#Set configuration
$virtualnetwork | Set-AzureRmVirtualNetwork    

You can use something like this to add as many endpoints as required: 您可以使用类似这样的方法来添加所需数量的端点:

$rgname = "amgar-dtl"
$vnName = "Dtlamgar-dtl"
$sname = "Dtlamgar-dtlSubnet"
$subnetPrefix = "10.0.0.0/20"

#Get vnet
$VirtualNetwork = Get-AzureRmVirtualNetwork -ResourceGroupName $rgname -Name $vnName |  Get-AzureRmVirtualNetworkSubnetConfig -Name $sname

#Get existing service endpoints
$ServiceEndPoint = New-Object 'System.Collections.Generic.List[String]'
$VirtualNetwork.ServiceEndpoints | ForEach-Object { $ServiceEndPoint.Add($_.service) }

#Add new service endpoint
Get-AzureRmVirtualNetwork -ResourceGroupName $rgname -Name $vnName | Set-AzureRmVirtualNetworkSubnetConfig -Name $sname  -AddressPrefix $subnetPrefix -ServiceEndpoint $ServiceEndPoint.Add("Microsoft.KeyVault") | Set-AzureRmVirtualNetwork

Hope this helps! 希望这可以帮助!

Successful syntax is: 成功的语法是:

#Vnet
$VN = "$ENV:VNET_NAME"
#Resource Group
$RG = "$ENV:RESOURCEGROUP_NAME"
#Subnet
$SN = "$ENV:SUBNET_NAME"
#Subnet Address Prexifx
$SAP = "$ENV:ADDRESS_PREFIX"
#ServiceEndpoint
$EP = "$ENV:SERVICE_ENDPOINT" 

Write-Host "Importing the AzureRM module into the PowerShell session"
Import-Module AzureRM

Write-Host "Connect service principle account to Azure RM"
Connect-AzureRmAccount -ServicePrincipal -Credential $CREDS -TenantId $TID -Subscription $SID

#Get vnet
$VirtualNetwork = Get-AzureRmVirtualNetwork -ResourceGroupName $RG -Name $VN |  Get-AzureRmVirtualNetworkSubnetConfig -Name $SN

#Get existing service endpoints
$ServiceEndPoint = New-Object 'System.Collections.Generic.List[String]'
$VirtualNetwork.ServiceEndpoints | ForEach-Object { $ServiceEndPoint.Add($_.service) }
$ServiceEndPoint.Add($EP)

#Add new service endpoint
Get-AzureRmVirtualNetwork -ResourceGroupName $RG -Name $VN | Set-AzureRmVirtualNetworkSubnetConfig -Name $SN  -AddressPrefix $SAP -ServiceEndpoint $ServiceEndPoint | Set-AzureRmVirtualNetwork

Powershell does not appear to support the command $ServiceEndPoint.Add("Microsoft.KeyVault") with “|”. Powershell似乎不支持带有“ |”的命令$ ServiceEndPoint.Add(“ Microsoft.KeyVault”)。 Once it was executed separately, the script worked. 脚本分别执行后,便可以正常工作。

Here is another version for those looking to process multiple su.nets and to validate that the su.net doesn't already have the service endpoint enabled because it will error out if the same service is listed twice when modifying the su.net.对于那些希望处理多个 su.net 并验证 su.net 是否尚未启用服务端点的人来说,这是另一个版本,因为如果在修改 su.net 时相同的服务被列出两次,它将出错。

$subscription = "Enter Subscription ID here"
$subnets = @('my-subnet-1','my-subnet-2','my-subnet-3')
$vnetName = "MY-VNET"
$vnetRgName = "MY-VNET-RG"
$newEndpoint = "Microsoft.AzureCosmosDB"

Set-AzContext -Subscription $subscription
foreach($snet in $subnets){
    Write-Host "Modifying Service Endpoints for subnet: $snet" -fore red -back white
    $virtualNetwork = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $vnetRgName | Get-AzVirtualNetworkSubnetConfig -Name $snet
    $addrPrefix = $virtualNetwork.AddressPrefix

    #Get existing service endpoints
    $ServiceEndPoint = New-Object 'System.Collections.Generic.List[String]'
    $virtualNetwork.ServiceEndpoints | ForEach-Object { $ServiceEndPoint.Add($_.service) }
    if ($ServiceEndPoint -notcontains $newEndPoint){
        $ServiceEndPoint.Add($newEndpoint)
    }

    #Add new service endpoint
    Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $vnetRgName | Set-AzVirtualNetworkSubnetConfig -Name $snet -AddressPrefix $addrPrefix -ServiceEndpoint $ServiceEndPoint | Set-AzVirtualNetwork
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 azure 中创建多个 su.net - Creating Multiple subnet in azure Azure 虚拟网络 Su.net - Azure Virtual Network Subnet Azure 服务主体使用 PowerShell 创建新证书 - Azure Service Principal create new certificate with PowerShell Azure PowerShell 将用户或组添加到服务主体 - Azure PowerShell add User or Group to Service Principal 在 Asp.net web 应用程序部署在 azure 应用程序服务中,获取服务(.svc)端点的 404 未找到错误 - Getting 404 not found error for service(.svc) endpoints in Asp.net web application deployed on azure app service 将新端点添加到 Azure App Service 插槽上的 my.net6 API 时,我收到 404 not found ONLY on the new endpoints - When adding new endpoints to my net6 API on Azure App Service slot, I receive 404 not found ONLY on the new endpoints 从 .net 中的 web 应用程序连接远程 SQL azure 并启用服务端点 - Connect remote SQL azure from web app within the Vnet with service endpoints enabled Terraform Output 多个 su.net id - Terraform Output multiple subnet ids Azure Function 和 Powershell - 服务总线队列 Output 与 ScheduledEnqueueTimeUtc 绑定 - Azure Function with Powershell - Service Bus Queue Output Binding With ScheduledEnqueueTimeUtc su.net地址范围确定Azure .NET - Subnet address range determination in Azure VNET
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM