While enabling an ARM circuit for use with classic deployments is fairly straightforward on its own, it can be confusing to do so as part of creating cross-subscription circuit links with classic deployments. To do the circuit links, you have to switch between ARM and classic mode while simultaneously switching subscriptions. This can lead to some serious confusion, so I thought it would be worthwhile to document the exact steps and the corresponding PowerShell commands.
This walkthrough assumes you have two subscriptions named as follows:
1) Subscription A that contains your ARM circuit
2) Subscription B that contains your ASM VNET
First, let’s log into ARM under the first subscription so we can enable the circuit for classic operations.
# Sign in to your Azure Resource Manager environment
$SubscriptionA=”GUID for Subscription A”
$SubscriptionB=”GUID for Subscription B”
Login-AzureRmAccount
# Select the appropriate Azure subscription
Get-AzureRmSubscription -SubscriptionId $SubscriptionA | Select-AzureRmSubscription
# Get details of the ExpressRoute circuit
$ckt = Get-AzureRmExpressRouteCircuit -Name “DemoCkt” -ResourceGroupName “DemoRG”
# Set “Allow Classic Operations” to TRUE
$ckt.AllowClassicOperations = $true
# Update circuit
Set-AzureRmExpressRouteCircuit -ExpressRouteCircuit $ckt
Now, let’s create the circuit link authorization for the classic VNET. Since we are creating an authorization for use by a classic deployment in Subscription B, you will use the classic commands.
# Sign in to your classic environment
Add-AzureAccount
# Select the appropriate Azure subscription
Set-AzureSubscription -SubscriptionId $SubscriptionB
# Create the classic authorization
New-AzureDedicatedCircuitLinkAuthorization -ServiceKey $ckt.ServiceKey -Description “Dev-Test Links” -Limit 2 -MicrosoftIds ‘devtest@contoso.com’
Description : Dev-Test Links
Limit : 2
LinkAuthorizationId : **********************************
MicrosoftIds : devtest@contoso.com
Used : 0
Now, use the authorization. Since we are linking to a classic VNET, we will continue to use the classic commands.
# Use the classic authorization
New-AzureDedicatedCircuitLink –servicekey $ckt.ServiceKey –VnetName ‘ClassicVNET1′
State VnetName
—– ——–
Provisioned ClassicVNET1