In continuation to my previous post, I’m deploying the Hub and Spoke model using the ARM templates from Azure Repo using Azure pipeline. For this example, I’m only showing 2 ARM templates deployment for Log Analytics and Hub Vnet. The rest can be done in the same way.
Create a Service Connection in your Azure Project as shown below:

Below is the yaml file that I’m using to create multi-stage pipeline, where each stage is running a job:
name: $(BuildDefinitionName)_$(date:yyyyMMdd)$(rev:.r)
trigger: none
pr: none
stages :
- stage: arm_loganalytics_deploy
jobs:
- job: arm_loganalytics_deploy
steps:
- checkout: self
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'AzureVSE'
subscriptionId: '1bcd68af-e392-4b66-9558-697bd7e8dc91'
action: 'Create Or Update Resource Group'
resourceGroupName: 'azhubspoke-rg'
location: 'Japan East'
templateLocation: 'Linked artifact'
csmFile: '$(System.DefaultWorkingDirectory)/loganalytics-workbook/loganalytics.json'
deploymentMode: 'Incremental'
- stage: arm_hubvnet_deploy
jobs:
- job: arm_hubvnet_deploy
steps:
- checkout: self
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'AzureVSE'
subscriptionId: '1bcd68af-e392-4b66-9558-697bd7e8dc91'
action: 'Create Or Update Resource Group'
resourceGroupName: 'azhubspoke-rg'
location: 'Japan East'
templateLocation: 'Linked artifact'
csmFile: '$(System.DefaultWorkingDirectory)/hub-vnet/hub-vnet.json'
deploymentMode: 'Incremental'
You can also validate the parameters of ARM template using the following parameter below csmFile in yaml file e.g.:
csmParametersFile: '$(System.DefaultWorkingDirectory)/hub-vnet/hub-vnet.parameters.json'
Run the pipeline and verify the results.

