From 5601eec21796f7e69fa4fbd726ce8f4400e3dafd Mon Sep 17 00:00:00 2001 From: Jan Faurskov <22591930+jfaurskov@users.noreply.github.com> Date: Fri, 29 Apr 2022 14:35:59 +0200 Subject: [PATCH] Update vnetPeering documentation and samples (#220) * Push updates * Add newline * Remove trailing spaces + update codetour * Update infra-as-code/bicep/modules/vnetPeering/README.md Co-authored-by: Jack Tracey <41163455+jtracey93@users.noreply.github.com> * Update infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json Co-authored-by: Jack Tracey <41163455+jtracey93@users.noreply.github.com> Co-authored-by: Jack Tracey <41163455+jtracey93@users.noreply.github.com> --- .vscode/tours/E2Etesttour.tour | 4 +- .../bicep/modules/vnetPeering/README.md | 69 +++++++++++++++++- .../vnetPeeringExampleDeploymentOutput.png | Bin 0 -> 45121 bytes .../vnetPeering.parameters.example.json | 30 ++++++++ tests/pipelines/bicep-build-to-validate.yml | 4 +- 5 files changed, 102 insertions(+), 5 deletions(-) create mode 100644 infra-as-code/bicep/modules/vnetPeering/media/vnetPeeringExampleDeploymentOutput.png create mode 100644 infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json diff --git a/.vscode/tours/E2Etesttour.tour b/.vscode/tours/E2Etesttour.tour index dbe5d1624..ffd19b0fa 100644 --- a/.vscode/tours/E2Etesttour.tour +++ b/.vscode/tours/E2Etesttour.tour @@ -318,7 +318,7 @@ }, { "file": "tests/pipelines/bicep-build-to-validate.yml", - "description": "Run bicep deployment to create spoke to hub virtual network peering using previously created hub and spoke vnet.", + "description": "Run bicep deployment to create spoke to hub virtual network peering using previously created hub and spoke vnet. Note that command line parameters are added to override what's in the parameter file.", "line": 237 }, { @@ -328,7 +328,7 @@ }, { "file": "tests/pipelines/bicep-build-to-validate.yml", - "description": "Run bicep deployment to create hub to spoke virtual network peering using previously created hub and spoke vnet.\r\n\r\n", + "description": "Run bicep deployment to create hub to spoke virtual network peering using previously created hub and spoke vnet. Note that command line parameters are added to override what's in the parameter file.", "line": 246 }, { diff --git a/infra-as-code/bicep/modules/vnetPeering/README.md b/infra-as-code/bicep/modules/vnetPeering/README.md index 74e38bdbb..5667d55ee 100644 --- a/infra-as-code/bicep/modules/vnetPeering/README.md +++ b/infra-as-code/bicep/modules/vnetPeering/README.md @@ -35,7 +35,74 @@ The module will generate the following outputs: ## Deployment -Module is intended to be called from other modules as a reusable resource. +In this example, the remote spoke VNet will be peered with the Hub VNet in the Connectivity subscription. + +> Note that the example configures the peering only one way, to complete the peering you will need to repeat the process with a separate parameter file with reverse parameters. + +During the deployment step, we will take parameters provided in the example parameters file. + + | Azure Cloud | Bicep template | Input parameters file | + | -------------- | ------------------- | ---------------------------------------- | + | All regions | vnetPeering.bicep | vnetPeering.parameters.example.json | + +> For the examples below we assume you have downloaded or cloned the Git repo as-is and are in the root of the repository as your selected directory in your terminal of choice. + +### Azure CLI +```bash +# For Azure global regions +# Set your Connectivity subscription ID as the the current subscription +$ConnectivitySubscriptionId="[your Connectivity subscription ID]" +az account set --subscription $ConnectivitySubscriptionId + +az deployment group create \ + --resource-group Spoke_Networking_POC \ + --template-file infra-as-code/bicep/modules/vnetPeering/vnetPeering.bicep \ + --parameters @infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json +``` +OR +```bash +# For Azure China regions +# Set your Corp Connected Landing Zone subscription ID as the the current subscription +$ConnectivitySubscriptionId="[your Connectivity subscription ID]" +az account set --subscription $ConnectivitySubscriptionId + +az deployment group create \ + --resource-group Spoke_Networking_POC \ + --template-file infra-as-code/bicep/modules/vnetPeering/vnetPeering.bicep \ + --parameters @infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json +``` + +### PowerShell + +```powershell +# For Azure global regions +# Set your Connectivity subscription ID as the the current subscription +$ConnectivitySubscriptionId = "[your Connectivity subscription ID]" + +Select-AzSubscription -SubscriptionId $ConnectivitySubscriptionId + +New-AzResourceGroupDeployment ` + -ResourceGroupName Spoke_Networking_POC ` + -TemplateFile infra-as-code/bicep/modules/vnetPeering/vnetPeering.bicep ` + -TemplateParameterFile infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json +``` +OR +```powershell +# For Azure China regions +# Set your Connectivity subscription ID as the the current subscription +$ConnectivitySubscriptionId = "[your Connectivity subscription ID]" + +Select-AzSubscription -SubscriptionId $ConnectivitySubscriptionId + +New-AzResourceGroupDeployment ` + -ResourceGroupName Spoke_Networking_POC ` + -TemplateFile infra-as-code/bicep/modules/vnetPeering/vnetPeering.bicep ` + -TemplateParameterFile infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json +``` + +## Example output in Azure global regions + +![Example Deployment Output](media/vnetPeeringExampleDeploymentOutput.png "Example Deployment Output in Azure global regions") ## Bicep Visualizer diff --git a/infra-as-code/bicep/modules/vnetPeering/media/vnetPeeringExampleDeploymentOutput.png b/infra-as-code/bicep/modules/vnetPeering/media/vnetPeeringExampleDeploymentOutput.png new file mode 100644 index 0000000000000000000000000000000000000000..e10148bc757ec1bb58abf9f35e31faf5143eec88 GIT binary patch literal 45121 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

i{08;+G2jyXn07J4JoF5ROHcW^=6g)Y-QV# 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 mFJY%Ie<`i~)j`F1$Ej|kyZ;BLT+hk? literal 0 HcmV?d00001 diff --git a/infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json b/infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json new file mode 100644 index 000000000..e33ba3566 --- /dev/null +++ b/infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json @@ -0,0 +1,30 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "parDestinationVirtualNetworkID": { + "value": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/HUB_Networking_POC/providers/Microsoft.Network/virtualNetworks/alz-hub-eastus" + }, + "parSourceVirtualNetworkName": { + "value": "vnet-spoke" + }, + "parDestinationVirtualNetworkName": { + "value": "alz-hub-eastus" + }, + "parAllowVirtualNetworkAccess": { + "value": true + }, + "parAllowForwardedTraffic": { + "value": true + }, + "parAllowGatewayTransit": { + "value": false + }, + "parUseRemoteGateways": { + "value": false + }, + "parTelemetryOptOut": { + "value": false + } + } +} diff --git a/tests/pipelines/bicep-build-to-validate.yml b/tests/pipelines/bicep-build-to-validate.yml index e52230212..6d2323842 100644 --- a/tests/pipelines/bicep-build-to-validate.yml +++ b/tests/pipelines/bicep-build-to-validate.yml @@ -234,7 +234,7 @@ jobs: inputs: targetType: 'inline' script: | - az deployment group create --resource-group $(ResourceGroupName) --template-file infra-as-code/bicep/modules/vnetPeering/vnetPeering.bicep --parameters parDestinationVirtualNetworkID="/subscriptions/$(subscriptionId)/resourceGroups/$(ResourceGroupName)/providers/Microsoft.Network/virtualNetworks/alz-hub-eastus" parSourceVirtualNetworkName="vnet-spoke" parDestinationVirtualNetworkName="alz-hub-eastus" + az deployment group create --resource-group $(ResourceGroupName) --template-file infra-as-code/bicep/modules/vnetPeering/vnetPeering.bicep --parameters @infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json parDestinationVirtualNetworkID="/subscriptions/$(subscriptionId)/resourceGroups/$(ResourceGroupName)/providers/Microsoft.Network/virtualNetworks/alz-hub-eastus" - task: Bash@3 displayName: Az CLI Deploy vNet Peer for PR hub to spoke @@ -243,7 +243,7 @@ jobs: inputs: targetType: 'inline' script: | - az deployment group create --resource-group $(ResourceGroupName) --template-file infra-as-code/bicep/modules/vnetPeering/vnetPeering.bicep --parameters parDestinationVirtualNetworkID="/subscriptions/$(subscriptionId)/resourceGroups/$(ResourceGroupName)/providers/Microsoft.Network/virtualNetworks/vnet-spoke" parSourceVirtualNetworkName="alz-hub-eastus" parDestinationVirtualNetworkName="vnet-spoke" + az deployment group create --resource-group $(ResourceGroupName) --template-file infra-as-code/bicep/modules/vnetPeering/vnetPeering.bicep --parameters @infra-as-code/bicep/modules/vnetPeering/vnetPeering.parameters.example.json parDestinationVirtualNetworkID="/subscriptions/$(subscriptionId)/resourceGroups/$(ResourceGroupName)/providers/Microsoft.Network/virtualNetworks/vnet-spoke" parSourceVirtualNetworkName="alz-hub-eastus" parDestinationVirtualNetworkName="vnet-spoke" - job: bicep_cleanup dependsOn: bicep_deploy