Updating Your Deployment
Keeping your Azure Landing Zone deployment up to date is important for security, compliance, and accessing new features. This guide covers how to update your deployment when new versions of the alz-bicep-accelerator templates are released.
The Bicep AVM framework differs from Classic Bicep in how modules are managed. During bootstrap, the entire templates directory with all Azure Verified Modules is pushed to your repository. This means:
- You control module updates: Update AVM modules in your templates directory as new versions are released
- No on-demand pulling: Unlike Classic Bicep which pulls modules from specific release versions on demand, you manage the module versions directly
- Direct AVM updates: Monitor Azure Verified Modules releases and update module references in your templates as needed for new features or fixes
If you encounter issues:
- Framework issues: Submit to alz-bicep-accelerator issues for problems with the ALZ framework
- Module issues: Submit to bicep-registry-modules for issues with underlying AVM modules themselves
Since the templates directory is included in your repository during bootstrap, you can update AVM modules independently:
- Check for new module versions: Monitor the Azure Verified Modules releases
- Update module references: Modify the module references in your Bicep templates to use newer versions
- Test the changes: Validate and test in non-production before deploying to production
- Use CI/CD pipelines: The provided GitHub Actions workflows and Azure DevOps pipelines handle deployment and validation automatically
Update the AVM module references in your templates directory:
// Example: Update module version in your template
module hubNetwork 'br/public:avm/res/network/virtual-network:0.2.0' = {
// Update to newer version
// 'br/public:avm/res/network/virtual-network:0.3.0'
name: 'hubNetworkDeployment'
params: {
// parameters
}
}
Check the AVM module documentation for:
- Version compatibility
- Breaking changes
- New features and parameters
- Bug fixes
Review any changes you’re making to your templates to ensure compatibility:
- Changes in parameter names or types
- New required parameters
- Deprecated or removed resources
- Changes in module versions
The bootstrap process includes CI/CD pipelines (GitHub Actions or Azure DevOps) that handle validation and deployment automatically:
GitHub Actions: Workflows validate templates and deploy changes when you push to your repository
Azure DevOps: Pipelines automatically validate and deploy updates through your defined stages
The pipelines will:
- Validate Bicep templates for syntax and errors
- Run deployment previews (what-if analysis)
- Deploy to target environments based on your approval gates
- Verify deployment success
Simply commit your template changes and push to trigger the automated validation and deployment process.
After updates are deployed through CI/CD:
- Policy Compliance: Check Azure Policy compliance in the portal
- Resources: Verify all expected resources are deployed
- Role Assignments: Confirm policy managed identities have correct permissions
- Networking: Test connectivity if networking components were updated
- Monitoring: Check that monitoring and alerting are functioning
When updating AVM modules, you may encounter breaking changes:
When AVM modules are updated:
- Review the AVM module changelog for the specific module
- Check for breaking changes in parameters, outputs, or behavior
- Update module references in your templates to the new version
- Update any parameter values that have changed
- Test thoroughly in non-production before deploying to production
If a module update includes parameter changes:
// Old module version
module network 'br/public:avm/res/network/virtual-network:0.1.0' = {
params: {
vnetName: 'hub-vnet' // Old parameter name
}
}
// New module version
module network 'br/public:avm/res/network/virtual-network:0.2.0' = {
params: {
name: 'hub-vnet' // New parameter name
}
}
Some module updates may require resource recreation:
- Review impact: Check what resources will be replaced using
az deployment what-if - Plan downtime: Schedule updates during maintenance windows if needed
- Backup data: Export any data that needs preservation
- Update references: Update any resources that reference the replaced resource
The bootstrap process provides CI/CD pipelines that automatically handle deployment validation and execution. The pipelines are included in your repository:
The .github/workflows directory contains workflows that:
- Validate Bicep template syntax
- Run
az deployment what-ifto preview changes - Deploy to Azure based on branch and approval gates
- Provide deployment status and logs
When you push changes to your repository, the workflows automatically trigger validation and deployment.
The Azure DevOps pipelines in your repository:
- Validate templates before deployment
- Execute what-if analysis
- Deploy through defined stages (e.g., dev → test → prod)
- Include approval gates for production deployments
The pipelines handle all validation and deployment logic, so you can focus on updating your templates.
- Monitor AVM Releases: Regularly check Azure Verified Modules for updates to modules you’re using
- Test Module Updates: Always test new module versions in non-production environments first
- Use Semantic Versioning: Pin specific module versions in your templates for consistency
- Review Changelogs: Check module changelogs for breaking changes before updating
- Leverage CI/CD: Let the provided pipelines handle validation and deployment
- Maintain Documentation: Document which module versions you’re using and why
- Monitor After Updates: Watch for issues after deploying module updates
- Check the CI/CD pipeline logs for specific errors
- Review module changes for breaking changes
- Verify parameter values match the new module version requirements
- Check Azure Activity Log for detailed error messages
- Run
az deployment what-ifto preview changes before deploying
If you believe an issue is with an underlying AVM module (not the ALZ framework):
- Identify the specific AVM module causing the issue
- Check the module’s repository in bicep-registry-modules
- Review existing issues for the module
- Submit a new issue to the bicep-registry-modules repository for the module owner to address
- Verify policy definitions were updated successfully
- Check policy assignment parameters
- Ensure managed identities have correct role assignments
- Trigger manual policy evaluation if needed
- Check for resources that already exist with the same name
- Review resource naming conventions
- Verify deployment scopes are correct
- Check for locks on existing resources
If you encounter issues during updates:
- General Guidance and Framework Issues: Check the Azure landing zone documentation
- Module Issues: Submit to bicep-registry-modules for the specific module
