Azure Pipelines
Why Use Azure DevOps Pipelines for Terraform?
Real-Life Scenarios
1. Deploying Azure Infrastructure with Service Principal
# azure-pipelines.yml
trigger:
branches:
include: [ main ]
pool:
vmImage: 'ubuntu-latest'
variables:
TF_VERSION: '1.7.5'
steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.x'
- task: TerraformInstaller@1
inputs:
terraformVersion: '$(TF_VERSION)'
- task: AzureCLI@2
inputs:
azureSubscription: 'MyServiceConnection' # Service connection in Azure DevOps
scriptType: 'bash'
scriptLocation: 'inlineScript'
inlineScript: |
az --version
terraform --version
terraform init
terraform plan -out=tfplan
terraform apply -auto-approve tfplan
workingDirectory: '$(System.DefaultWorkingDirectory)/terraform'
env:
ARM_CLIENT_ID: $(servicePrincipalId)
ARM_CLIENT_SECRET: $(servicePrincipalKey)
ARM_SUBSCRIPTION_ID: $(subscriptionId)
ARM_TENANT_ID: $(tenantId)2. Multi-Cloud Deployments (AWS, GCP)
3. Secure Secret Management with Azure Key Vault
Best Practices for Security and Deployments
Azure DevOps vs GitHub Actions vs GitLab CI/CD
Feature
Azure DevOps Pipelines
GitHub Actions
GitLab CI/CD
References
Last updated