通过 PowerShell 添加新的流量管理器配置文件
Add a new Traffic Manager profile through PowerShell
我正在尝试将新的流量管理器端点添加到 powershell 脚本中的现有配置文件,作为部署管道的一部分。
在 Azure 门户中,我可以简单地添加第二个端点并分配新的优先级。由于我使用的是加权策略,因此优先级对我来说毫无意义,所以我不在乎它是什么。我不想给它设置一个随机数,因为那样仍然会导致作业失败。
文档声称应该为新端点自动分配一个新值,但这仅在我先删除所有现有端点然后将它们全部重新添加时才有效。因为 get-AzureRMTrafficManagerEndPoint cmdlet 需要端点名称(不是可选的) 而且我不知道所有的端点名称我无法删除并重新添加它们。
我是不是处理错了?这是一个错误吗?我是不是用错了命令?
错误文本是"Set-AzureRmTrafficManagerProfile : BadRequest: The endpoint priorities are not set correctly. The priorities must be set on all or none of the endpoints."
此代码有效:
$TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App1RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App1" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App2RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App2" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile
此代码失败:
$TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App1RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App1" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile
$TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App2RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App2" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile
您的代码的工作方式和 $TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
的额外行导致此失败。
您正在为一个终结点向流量管理器配置文件添加配置,然后尝试对其进行设置。您需要修改您的代码,使其与您的第一个示例相同,不同之处在于您获取流量管理器配置文件,添加端点,然后调用 Set-AzureRmTrafficManagerProfile
一次,而不是第二个示例中的两次。
编辑:添加一些代码以获取配置文件中的端点。
$Profiles = Get-AzureRmTrafficManagerProfile -Name mctmp -ResourceGroupName TM
foreach ($Profile in $Profiles.Endpoints.Name) {
Get-AzureRmTrafficManagerEndpoint -Name $Profile -ProfileName $Profiles.RelativeDnsName -ResourceGroupName TM -Type ExternalEndpoints
}
我正在尝试将新的流量管理器端点添加到 powershell 脚本中的现有配置文件,作为部署管道的一部分。 在 Azure 门户中,我可以简单地添加第二个端点并分配新的优先级。由于我使用的是加权策略,因此优先级对我来说毫无意义,所以我不在乎它是什么。我不想给它设置一个随机数,因为那样仍然会导致作业失败。
文档声称应该为新端点自动分配一个新值,但这仅在我先删除所有现有端点然后将它们全部重新添加时才有效。因为 get-AzureRMTrafficManagerEndPoint cmdlet 需要端点名称(不是可选的) 而且我不知道所有的端点名称我无法删除并重新添加它们。
我是不是处理错了?这是一个错误吗?我是不是用错了命令?
错误文本是"Set-AzureRmTrafficManagerProfile : BadRequest: The endpoint priorities are not set correctly. The priorities must be set on all or none of the endpoints."
此代码有效:
$TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App1RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App1" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App2RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App2" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile
此代码失败:
$TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App1RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App1" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile
$TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
$publicIPObj = Get-AzureRmPublicIpAddress -ResourceGroupName "App2RGName"
Add-AzureRmTrafficManagerEndpointConfig -EndpointName "App2" -EndpointStatus Enabled -TargetResourceId $publicIPObj.id -TrafficManagerProfile $TrafficManagerProfile -Type AzureEndpoints -Weight 10
Set-AzureRmTrafficManagerProfile -TrafficManagerProfile $TrafficManagerProfile
您的代码的工作方式和 $TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"
的额外行导致此失败。
您正在为一个终结点向流量管理器配置文件添加配置,然后尝试对其进行设置。您需要修改您的代码,使其与您的第一个示例相同,不同之处在于您获取流量管理器配置文件,添加端点,然后调用 Set-AzureRmTrafficManagerProfile
一次,而不是第二个示例中的两次。
编辑:添加一些代码以获取配置文件中的端点。
$Profiles = Get-AzureRmTrafficManagerProfile -Name mctmp -ResourceGroupName TM
foreach ($Profile in $Profiles.Endpoints.Name) {
Get-AzureRmTrafficManagerEndpoint -Name $Profile -ProfileName $Profiles.RelativeDnsName -ResourceGroupName TM -Type ExternalEndpoints
}