{"id":1298,"date":"2016-03-29T01:00:00","date_gmt":"2016-03-29T01:00:00","guid":{"rendered":"http:\/\/inswwdev.azurewebsites.net\/au\/insights\/uncategorized\/connecting-virtual-networks-in-different-azure-subscriptions-to-an-expressroute-circuit-in-resource-manager\/"},"modified":"2021-11-16T14:55:12","modified_gmt":"2021-11-16T14:55:12","slug":"connecting-virtual-networks-in-different-azure-subscriptions-to-an-expressroute-circuit-in-resource-manager","status":"publish","type":"post","link":"https:\/\/www.insentragroup.com\/us\/insights\/geek-speak\/modern-workplace\/connecting-virtual-networks-in-different-azure-subscriptions-to-an-expressroute-circuit-in-resource-manager\/","title":{"rendered":"Connecting Virtual Networks in different Azure Subscriptions to an ExpressRoute Circuit in Resource Manager"},"content":{"rendered":"<p class=\"entry-title\"><strong>Scenario<\/strong><\/p>\n<p style=\"text-align: justify;\">I have an ExpressRoute circuit configured with a connection to a Version 2 (Resource Manager) Azure Virtual Network. I also have an additional Virtual Network in a different Subscription which I need to connect to the same circuit.<\/p>\n<p style=\"text-align: justify;\"><strong>The Issue<\/strong><\/p>\n<p style=\"text-align: justify;\">The instructions on connecting another Virtual Network in a different Subscription are a little confusing. It\u2019s also worth noting that some of the parameters are different now with the latest version of the PowerShell Azure cmdlets. The original instructions may be found<span>&nbsp;<\/span><a rel=\"noopener nofollow\" href=\"https:\/\/azure.microsoft.com\/en-us\/documentation\/articles\/expressroute-howto-linkvnet-arm\/#connect-a-virtual-network-in-a-different-azure-subscription-to-an-expressroute-circuit\" target=\"_blank\">here<\/a><\/p>\n<p style=\"text-align: justify;\"><strong>Environment<\/strong><\/p>\n<p style=\"text-align: justify;\">I have a Virtual Network in each of my two subscriptions:<\/p>\n<ul>\n<li style=\"text-align: justify;\">Subscription 1: Production \u2013 Australia East<\/li>\n<li style=\"text-align: justify;\">Subscription 2: Test\/Dev -Australia Southeast<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">The primary ExpressRoute connection is configured to use the \u201cProduction Australia East\u201d Virtual Network.<\/p>\n<p style=\"text-align: justify;\"><strong>Assumptions<\/strong><\/p>\n<p style=\"text-align: justify;\">The script assumes that you have performed the following work:<\/p>\n<ul>\n<li style=\"text-align: justify;\">Configured ExpressRoute with a connection to your primary Virtual Network<\/li>\n<li style=\"text-align: justify;\">Added a \/28 subnet into your target Virtual Network with the name \u201cGatewaySubnet\u201d<\/li>\n<li style=\"text-align: justify;\">Created a Virtual Network Gateway in your target Virtual Network of type \u201cExpressRoute\u201d<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><strong>What the script does<\/strong><\/p>\n<p style=\"text-align: justify;\">The PowerShell script below performs the following steps:<\/p>\n<ul>\n<li style=\"text-align: justify;\">Defines parameters for:\n<ul>\n<li style=\"text-align: justify;\">Source \u2013 The primary subscription and Virtual Network that ExpressRoute is configured to communicate with<\/li>\n<li style=\"text-align: justify;\">Target \u2013 The subscription and Virtual Network that we would like to add a connection to<\/li>\n<\/ul>\n<\/li>\n<li>Selects the source subscription<\/li>\n<li style=\"text-align: justify;\">Gets information about the existing circuit into a variable<\/li>\n<li style=\"text-align: justify;\">Creates an authorisation for a new connection and places the information into a variable<\/li>\n<li style=\"text-align: justify;\">Refreshes information about the circuit into the corresponding variable<\/li>\n<li style=\"text-align: justify;\">Selects the target subscription<\/li>\n<li style=\"text-align: justify;\">Gets information about the target gateway<\/li>\n<li style=\"text-align: justify;\">Creates a new Network Gateway connection<\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><strong>The PowerShell Script<\/strong><\/p>\n<p style=\"text-align: justify;\">Ensure that the variable at the top of the script are changed to suit your needs.<\/p>\n<p style=\"text-align: justify;\"><strong>Ensure that the target location specified is correct for the target Virtual Network, otherwise you receive the error \u201cUnable to parse\u201d which is not entirely helpful!<\/strong><\/p>\n<div id=\"highlighter_429744\" class=\"syntaxhighlighter  powershell\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<div class=\"line number45 index44 alt2\">45<\/div>\n<div class=\"line number46 index45 alt1\">46<\/div>\n<div class=\"line number47 index46 alt2\">47<\/div>\n<div class=\"line number48 index47 alt1\">48<\/div>\n<div class=\"line number49 index48 alt2\">49<\/div>\n<div class=\"line number50 index49 alt1\">50<\/div>\n<div class=\"line number51 index50 alt2\">51<\/div>\n<div class=\"line number52 index51 alt1\">52<\/div>\n<div class=\"line number53 index52 alt2\">53<\/div>\n<div class=\"line number54 index53 alt1\">54<\/div>\n<div class=\"line number55 index54 alt2\">55<\/div>\n<div class=\"line number56 index55 alt1\">56<\/div>\n<div class=\"line number57 index56 alt2\">57<\/div>\n<div class=\"line number58 index57 alt1\">58<\/div>\n<div class=\"line number59 index58 alt2\">59<\/div>\n<div class=\"line number60 index59 alt1\">60<\/div>\n<div class=\"line number61 index60 alt2\">61<\/div>\n<div class=\"line number62 index61 alt1\">62<\/div>\n<div class=\"line number63 index62 alt2\">63<\/div>\n<div class=\"line number64 index63 alt1\">64<\/div>\n<div class=\"line number65 index64 alt2\">65<\/div>\n<div class=\"line number66 index65 alt1\">66<\/div>\n<div class=\"line number67 index66 alt2\">67<\/div>\n<div class=\"line number68 index67 alt1\">68<\/div>\n<div class=\"line number69 index68 alt2\">69<\/div>\n<div class=\"line number70 index69 alt1\">70<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"># Define Source Parameters<\/div>\n<div class=\"line number2 index1 alt1\">$SourceSubscriptionName=&#8217;Prod01&#8242;<\/div>\n<div class=\"line number3 index2 alt2\">$SourceResourceGroupName=&#8217;ProdInfraEast&#8217;<\/div>\n<div class=\"line number4 index3 alt1\">&nbsp;<\/div>\n<div class=\"line number5 index4 alt2\">$CircuitName=&#8217;EXP_Prod_aueast&#8217;<\/div>\n<div class=\"line number6 index5 alt1\">&nbsp;<\/div>\n<div class=\"line number7 index6 alt2\">$AuthorisationName=&#8217;TestDev01Southeast&#8217;<\/div>\n<div class=\"line number8 index7 alt1\">&nbsp;<\/div>\n<div class=\"line number9 index8 alt2\"># Define Target Parameters<\/div>\n<div class=\"line number10 index9 alt1\">$TargetResourceGroupName=&#8217;TestDevInfraSoutheast&#8217;<\/div>\n<div class=\"line number11 index10 alt2\">$TargetSubscriptionName=&#8217;TestDev01&#8242;<\/div>\n<div class=\"line number12 index11 alt1\">$TargetGatewayName=&#8217;GW_TestDev_auSoutheast&#8217;<\/div>\n<div class=\"line number13 index12 alt2\">$TargetConnectionName=&#8217;EXPCON_TestDev_auSoutheast&#8217;<\/div>\n<div class=\"line number14 index13 alt1\">$TargetLocation=&#8217;Australia Southeast&#8217;<\/div>\n<div class=\"line number15 index14 alt2\"># End editable parameters<\/div>\n<div class=\"line number16 index15 alt1\">#Login-AzureRmAccount<\/div>\n<div class=\"line number17 index16 alt2\">&nbsp;<\/div>\n<div class=\"line number18 index17 alt1\"># Select Source Subscription<\/div>\n<div class=\"line number19 index18 alt2\">Select-AzureRmSubscription `<\/div>\n<div class=\"line number20 index19 alt1\">-SubscriptionName $SourceSubscriptionName<\/div>\n<div class=\"line number21 index20 alt2\">&nbsp;<\/div>\n<div class=\"line number22 index21 alt1\">Write-Host &#8216;Getting initial variables&#8217;<\/div>\n<div class=\"line number23 index22 alt2\"># Get information about existing circuit<\/div>\n<div class=\"line number24 index23 alt1\">$Circuit = Get-AzureRmExpressRouteCircuit `<\/div>\n<div class=\"line number25 index24 alt2\">-Name $CircuitName `<\/div>\n<div class=\"line number26 index25 alt1\">-ResourceGroupName $SourceResourceGroupName<\/div>\n<div class=\"line number27 index26 alt2\">&nbsp;<\/div>\n<div class=\"line number28 index27 alt1\">Write-Host &#8216;Adding Authorisation&#8217;<\/div>\n<div class=\"line number29 index28 alt2\"># Add a authorisation request to the ExpressRoute Circuit<\/div>\n<div class=\"line number30 index29 alt1\">Add-AzureRmExpressRouteCircuitAuthorization `<\/div>\n<div class=\"line number31 index30 alt2\">-ExpressRouteCircuit $circuit `<\/div>\n<div class=\"line number32 index31 alt1\">-Name $AuthorisationName `<\/div>\n<div class=\"line number33 index32 alt2\">-Verbose<\/div>\n<div class=\"line number34 index33 alt1\"># Update the Circuit with the authorisation information<\/div>\n<div class=\"line number35 index34 alt2\">Set-AzureRmExpressRouteCircuit `<\/div>\n<div class=\"line number36 index35 alt1\">-ExpressRouteCircuit $circuit `<\/div>\n<div class=\"line number37 index36 alt2\">-Verbose<\/div>\n<div class=\"line number38 index37 alt1\">&nbsp;<\/div>\n<div class=\"line number39 index38 alt2\"># Re-request information about the circuit<\/div>\n<div class=\"line number40 index39 alt1\">$circuit = Get-AzureRmExpressRouteCircuit `<\/div>\n<div class=\"line number41 index40 alt2\">-Name $CircuitName `<\/div>\n<div class=\"line number42 index41 alt1\">-ResourceGroupName $SourceResourceGroupName `<\/div>\n<div class=\"line number43 index42 alt2\">-Verbose<\/div>\n<div class=\"line number44 index43 alt1\">&nbsp;<\/div>\n<div class=\"line number45 index44 alt2\"># Request information about the new authorisation<\/div>\n<div class=\"line number46 index45 alt1\">$auth1 = Get-AzureRmExpressRouteCircuitAuthorization `<\/div>\n<div class=\"line number47 index46 alt2\">-ExpressRouteCircuit $circuit `<\/div>\n<div class=\"line number48 index47 alt1\">-Name $AuthorisationName `<\/div>\n<div class=\"line number49 index48 alt2\">-Verbose<\/div>\n<div class=\"line number50 index49 alt1\">&nbsp;<\/div>\n<div class=\"line number51 index50 alt2\"># Select Target Subscription<\/div>\n<div class=\"line number52 index51 alt1\">Select-AzureRmSubscription `<\/div>\n<div class=\"line number53 index52 alt2\">-SubscriptionName $TargetSubscriptionName<\/div>\n<div class=\"line number54 index53 alt1\">&nbsp;<\/div>\n<div class=\"line number55 index54 alt2\"># Get information about the Target Gateway<\/div>\n<div class=\"line number56 index55 alt1\">$TargetGW = Get-AzureRmVirtualNetworkGateway `<\/div>\n<div class=\"line number57 index56 alt2\">-Name $TargetGatewayName `<\/div>\n<div class=\"line number58 index57 alt1\">-ResourceGroupName $TargetResourceGroupName<\/div>\n<div class=\"line number59 index58 alt2\">&nbsp;<\/div>\n<div class=\"line number60 index59 alt1\">Write-Host &#8216;Redeeming Key&#8217;<\/div>\n<div class=\"line number61 index60 alt2\">&nbsp;<\/div>\n<div class=\"line number62 index61 alt1\">$connection = New-AzureRmVirtualNetworkGatewayConnection `<\/div>\n<div class=\"line number63 index62 alt2\">-Name $targetConnectionName `<\/div>\n<div class=\"line number64 index63 alt1\">-ResourceGroupName $TargetResourceGroupName `<\/div>\n<div class=\"line number65 index64 alt2\">-Location $TargetLocation `<\/div>\n<div class=\"line number66 index65 alt1\">-VirtualNetworkGateway1 $TargetGW `<\/div>\n<div class=\"line number67 index66 alt2\">-PeerId $Circuit.Id `<\/div>\n<div class=\"line number68 index67 alt1\">-ConnectionType ExpressRoute `<\/div>\n<div class=\"line number69 index68 alt2\">-AuthorizationKey $auth1.AuthorizationKey `<\/div>\n<div class=\"line number70 index69 alt1\">-Verbose<\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p style=\"text-align: justify;\">Connecting an Azure Express route circuit to another Virtual Network in a different subscription is relatively easy, but the process is not really well documented. The original documentation also specifies -circuit in many command lines instead of -ExpressRouteCircuit<\/p>\n<p style=\"text-align: justify;\">It is also worth noting that (frustratingly) we cannot use a version 1 (Classic) circuit for this process. The two do not appear to be compatible.<\/p>\n<p style=\"text-align: justify;\">Have more questions? Get in touch with Insentra today.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scenario I have an ExpressRoute circuit configured with a connection to a Version 2 (Resource Manager) Azure Virtual Network. I also have an additional Virtual Network in a different Subscription which I need to connect to the same circuit. The Issue The instructions on connecting another Virtual Network in a different Subscription are a little&hellip; <a class=\"more-link\" href=\"https:\/\/www.insentragroup.com\/us\/insights\/geek-speak\/modern-workplace\/connecting-virtual-networks-in-different-azure-subscriptions-to-an-expressroute-circuit-in-resource-manager\/\">Continue reading <span class=\"screen-reader-text\">Connecting Virtual Networks in different Azure Subscriptions to an ExpressRoute Circuit in Resource Manager<\/span><\/a><\/p>\n","protected":false},"author":88,"featured_media":7163,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[19],"tags":[],"class_list":["post-1298","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-modern-workplace","entry"],"_links":{"self":[{"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/posts\/1298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/users\/88"}],"replies":[{"embeddable":true,"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/comments?post=1298"}],"version-history":[{"count":1,"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/posts\/1298\/revisions"}],"predecessor-version":[{"id":7164,"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/posts\/1298\/revisions\/7164"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/media\/7163"}],"wp:attachment":[{"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/media?parent=1298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/categories?post=1298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.insentragroup.com\/us\/wp-json\/wp\/v2\/tags?post=1298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}