Pipeline using bicep for deploying resources
Jasbinder S.
Azure Cloud,Virtualization, Infrastructure Design and DevOps Expert -VMware ,TD Bank,Scotia Bank, CIBC, Goeasy
main.bicep file with below contents
param resourcePrefix string
param virtualNetworkPrefix string
param storageAccount string
module sta 'Modules/st.bicep' = {
name: 'sta'
params: {
storageAccount: storageAccount
}
}
module vnet 'Modules/vnet.bicep'={
name: 'vnet'
params:{
ResourcePrefix: resourcePrefix
virtualNetworkPrefix: virtualNetworkPrefix
}
}
2. ?Create st.bicep and vnet.bicep defining storage and vnet configurations.
st.bicep file
@maxLength(15
param storageAccount string
param location string = resourceGroup().location
resource sta 'Microsoft.Storage/storageAccounts@2021-01-01' = {
name: storageAccount
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
vnet.bicep
领英推荐
param ResourcePrefix string = ''
param ResourceName string = ''
param location string = resourceGroup().location
param virtualNetworkPrefix string
var vnetName = !(empty(ResourcePrefix)) ? '${ResourcePrefix}-VNET' : ResourceName
resource vnet 'Microsoft.Network/virtualNetworks@2020-06-01' = {
name: vnetName
location: location
properties: {
addressSpace: {
addressPrefixes: [
virtualNetworkPrefix
]
}
}
}
3. Create pipeline in Azure Devops
4. Create azure-pipelines.yaml to build and deploy. This file can be created manually or using Azure Devops assistance.
name: Bicep-StorageAccount
trigger:
- main
variables:
resourceGroupName: 'demo'
location: 'CanadaCentral'
azureSubscription: '****'
resourcePrefix: 'bicep'
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
jobs:
- job: Build
steps:
- task: AzureCLI@2
inputs:
azureSubscription: '*******'
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: 'az bicep build --file main.bicep'
- task: PublishBuildArtifacts@1
displayName: 'Publish artifact in pipeline'
inputs:
PathtoPublish: '$(Build.SourcesDirectory)/main.json'
ArtifactName: 'finishedTemplate'
publishLocation: 'Container'
- stage: deploy
jobs:
- deployment: biceptoAzure
displayName: 'Deploy bicep to Azure'
environment: 'AzureDeployment'
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: AzureCLI@2
displayName: 'deploy bicep template'
inputs:
azureSubscription: $(azureSubscription)
scriptType: 'pscore'
scriptLocation: 'inlineScript'
inlineScript: |
az group create --name $(ResourceGroupName) --location $(location)
az deployment group create `
--template-file $(Build.SourcesDirectory)/main.bicep `
--parameters $(Build.SourcesDirectory)/main.parameters.json `
--resource-group $(ResourceGroupName) `
--parameters resourcePrefix=$(resourceprefix)
Above pipeline will deploy resource group, storage account and vnet.