Choosing a configuration management technology
Recommend a configuration management technology
Choose by the capability and lifecycle you need, not by an impermeable resource-versus-guest boundary.
| Need | Technology |
|---|---|
| Declare Azure resource topology | ARM templates, Bicep, or Terraform |
| Continuously audit or remediate OS/application state across Azure and Arc-enabled machines | Azure Machine Configuration |
| Run a one-time guest action on an Azure VM | Deploy a VM extension with ARM/Bicep and an idempotent script |
| Externalize runtime application settings | Azure App Configuration |
| Share pipeline values or secrets across pipelines | Azure Pipelines variable groups |
Declarative versus imperative
Microsoft documents Bicep files as idempotent: deploying the same file repeatedly yields the same resource types in the same state. That property does not automatically make an imperative script embedded in a resource declaration idempotent. A Custom Script Extension script must be authored so a retry is safe.
The direction of travel
Azure Automation State Configuration retires 30 September 2027. Migrate to Azure Machine Configuration, which combines features of the DSC Extension and Automation State Configuration and adds hybrid support through Arc-enabled servers.
Azure Automation DSC for Linux has already retired — 30 September 2023.
So when a scenario asks for in-guest configuration across Azure and on-premises machines today, the answer is Machine Configuration with Arc, not Automation State Configuration.
Primary sources
- https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/az-400
- https://learn.microsoft.com/en-us/azure/governance/machine-configuration/overview/01-overview-concepts
- https://learn.microsoft.com/en-us/azure/automation/automation-dsc-overview
- https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview
- https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/template-tutorial-deploy-vm-extensions
- https://learn.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-windows
- https://learn.microsoft.com/en-us/azure/azure-app-configuration/quickstart-aspnet-core-app
- https://learn.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups
- https://learn.microsoft.com/en-us/azure/developer/terraform/overview