Pipeline using bicep for deploying resources

  1. Create repo with main.bicep,st.bicep and vnet.bicep

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

No alt text provided for this image

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)        
No alt text provided for this image

Above pipeline will deploy resource group, storage account and vnet.

要查看或添加评论,请登录

Jasbinder S.的更多文章

社区洞察

其他会员也浏览了