Microsoft AZ-400: Infrastructuur als Code en Configuratiebeheer — Studiegids
Onderdeel van de Microsoft DevOps Engineer Expert AZ-400 — Studiegids. Oefen met geverifieerde antwoorden in het Microsoft-examencentrum, of doe getimede oefentests op ExamRoll.io.
Overzicht
Infrastructure as Code (IaC) en Configuration Management op Azure stellen u in staat om infrastructuur- en applicatie-instellingen herhaaldelijk en veilig te definiëren, te provisioneren en af te dwingen. Azure biedt native ondersteuning voor ARM JSON en Bicep, en integreert goed met Terraform en Ansible. De configuratiestatus kan worden gedeclareerd met PowerShell Desired State Configuration (DSC), Azure Automation DSC, Chef en Puppet. De uitrol van applicatiefeatures en het beheer van sleutels worden gecentraliseerd met Azure App Configuration en Key Vault. Immutable images, gebouwd met Packer, verminderen ‘drift’. Governance wordt afgedwongen als policy-as-code met Azure Policy en OPA/Gatekeeper voor Kubernetes.
Azure-Native IaC: ARM Templates en Bicep
ARM-templates zijn declaratieve JSON-documenten die de Azure Resource Manager gebruikt om resources aan te maken en bij te werken. De structuur op het hoogste niveau omvat $schema, contentVersion, parameters, variables, resources en outputs. Parameters maken omgevingsspecifieke invoer mogelijk; variables helpen bij het afleiden van berekende waarden; resources declareren de gewenste staat; outputs publiceren resultaten zoals resource-ID’s. Templates ondersteunen ’template expressions’ en ‘runtime functions’ (bijv. resourceId, reference, concat, uniqueString) zodat u namen kunt samenstellen en eigenschappen kunt ophalen.
Om grote deployments op te splitsen in onderhoudbare eenheden, kunt u geneste of gekoppelde templates gebruiken. Een geneste template plaatst JSON inline in de template-eigenschap van een Microsoft.Resources/deployments-resource. Een gekoppelde template verwijst naar een externe template via templateLink.uri, doorgaans opgeslagen in Azure Storage met een in de tijd beperkte SAS voor integriteit. Gebruik geneste templates wanneer alles in één artefact kan bestaan en u een transactionele deployment over de onderdelen heen wilt. Gebruik gekoppelde templates voor zeer grote topologieën of bij het hergebruiken van templates over verschillende repositories of teams. Stel de scope van uw deployments in op resource group, subscription, management group of tenant, al naar gelang de behoefte, door de deployment scope op de deployments-resource in te stellen.
ARM ondersteunt twee deployment modes. Incremental (standaard) creëert of updatet resources die in de template aanwezig zijn, zonder iets te verwijderen wat niet is gedeclareerd. Complete verwijdert resources binnen de doel-scope die niet in de template zijn gespecificeerd, wat nuttig is om minimale ‘drift’ te garanderen, maar ook risicovoller als de template niet de autoriteit is voor die scope. Validate- en What-If-operaties helpen om wijzigingen vooraf te bekijken en zo het risico vóór uitvoering te verminderen.
Bicep is een domeinspecifieke taal (DSL) die compileert naar ARM JSON en een eersteklas ‘authoring’-ervaring biedt. Resource-declaraties gebruiken symbolische namen, dwingen typen af en ondersteunen het existing-sleutelwoord om te verwijzen naar reeds bestaande resources zonder her-deployment. Parameters, variables, outputs en resource-declaraties zijn beknopt, en ouder-kindrelaties en scopes zijn expliciet. Modules maken compositie en hergebruik mogelijk; elke module is een Bicep-bestand waarnaar wordt verwezen met het module-sleutelwoord en kan worden gepubliceerd naar en gebruikt vanuit ’template spec’- of OCI-artefact-registries. Voorwaarden worden inline uitgedrukt met if op resources of modules, en lussen gebruiken for-expressies om meerdere instanties te declareren met duidelijke afhandeling van afhankelijkheden. Migratie van ARM JSON is eenvoudig:
undefined
(of
undefined
) converteert JSON naar Bicep; vervolgens refactort u dit naar modules en gebruikt u symbolische namen. Bicep is ’lossless’ ten opzichte van ARM en ondersteunt het volledige platformoppervlak;
undefined
produceert standaard ARM JSON voor de deployment.
Cross-Platform IaC op Azure met Terraform
Terraform vult Azure-native IaC aan wanneer multi-cloud of provider-agnostische workflows nodig zijn. De azurerm-provider beheert Azure Resource Manager-resources en de versie ervan moet worden vastgezet; neem
undefined
op, zelfs als het leeg is, om provider-features in te schakelen. Andere veelgebruikte providers zijn azuread voor AAD-objecten en random voor hulpwaarden. Authenticeer via een service principal, Managed Identity op gehoste agents, of de Azure CLI. Hanteer een duidelijke providerconfiguratiestrategie voor elke omgeving en centraliseer herbruikbare modules met inputvariabelen en outputs.
State management is cruciaal. Gebruik de azurerm-backend om de remote state op te slaan in Azure Storage: configureer resource_group_name, storage_account_name, container_name en key; authenticeer met een managed identity of SAS; en schakel soft delete en versioning in op de blob container. De backend gebruikt blob leases om de state te ’locken’ en gelijktijdige mutaties te voorkomen. Toegang tot het storage account moet worden beveiligd met RBAC en kan optioneel worden beperkt met Private Endpoints. Houd state-bestanden per omgeving geïsoleerd en sla ‘by design’ nooit secrets op in de state—gebruik Key Vault en data sources om secrets op te halen wanneer dat nodig is.
Workspaces bieden logische isolatie van de state binnen dezelfde configuratie voor het vertakken van omgevingen zoals dev, test en prod. Gebruik
undefined
en zorg ervoor dat de backend key de workspace codeert om conflicten te voorkomen (bijv.
undefined
). Workspaces zijn uitstekend voor pariteit tussen omgevingen met kleine verschillen; wanneer topologieën aanzienlijk uiteenlopen, gebruik dan afzonderlijke configuraties of modules om ‘drift’ en conditionele complexiteit te vermijden. Integreer met Azure Pipelines met behulp van service connections en de Terraform CLI-taken om
undefined
te standaardiseren over verschillende stages en om ‘applies’ te laten afhangen van goedkeuringen en policy-controles.
Configuratiebeheer op Schaal: DSC, Azure Automation DSC, Ansible, Chef en Puppet
PowerShell Desired State Configuration (DSC) declareert de status van Windows en cross-platform systemen via resources. Er zijn twee leveringsmodi: push stuurt MOF’s rechtstreeks naar nodes; pull laat nodes hun MOF’s op een vast schema ophalen bij een pull-service. De Local Configuration Manager (LCM) dwingt het beleid af. Belangrijke LCM-instellingen zijn onder andere:
- ConfigurationMode: ApplyOnly (eenmalig configureren, geen driftcorrectie), ApplyAndMonitor (detecteert drift, geen correctie), ApplyAndAutoCorrect (detecteert en herstelt drift).
- ConfigurationModeFrequencyMins en RefreshFrequencyMins om de afdwingings- en pull-cadans af te stemmen.
- RebootNodeIfNeeded en ActionAfterReboot om herstarts af te handelen.
- Partiële configuraties om de status van een node samen te stellen uit meerdere MOF’s die onafhankelijk van elkaar features beheren (bijv. basis OS-hardening en een applicatierol).
Azure Automation State Configuration (Azure Automation DSC) is een beheerde pull-service. Je schrijft configuraties in PowerShell, importeert ze in een Automation Account en start compilatiejobs die node-configuraties (MOF) produceren. Nodes registreren zich met
undefined
met behulp van een registratiesleutel/endpoint en kunnen worden gegroepeerd en configuraties toegewezen krijgen met parametrisering per node. Compliancerapportage toont de laatst toegepaste configuratie en de driftstatus; nodes in de ApplyAndAutoCorrect-modus zullen automatisch herstel uitvoeren bij hun volgende check-in. Compilatiejobs zijn auditeerbare build-artefacten, en op rollen gebaseerd toegangsbeheer (RBAC) beperkt wie configuraties mag schrijven en toewijzen aan nodes.
Ansible is agentless en zeer geschikt voor de configuratie van Linux-vloten en ad-hoc orkestratie. Gebruik op Azure de
undefined
, die modules levert voor compute, networking, Key Vault en meer. Dynamische inventory met de
undefined
-plugin ontdekt hosts vanuit je subscriptions of specifieke resourcegroepen en tags; het verkrijgen van credentials kan via een service principal, Azure CLI of een managed identity. Integreer met Azure Pipelines door Ansible te installeren op een Linux-agent, in te loggen via
undefined
of een Azure Resource Manager service connection, en playbooks uit te voeren die verwijzen naar de dynamische inventory, variabelegroepen en secure files. Ansible blinkt uit in idempotente, leesbare taken en kan DSC aanvullen in omgevingen met veel Windows door cross-platform workflows en orkestratie af te handelen.
Chef en Puppet bieden volwassen policy-as-code-modellen en compliancerapportage. Op Azure VM’s zorgen de Chef en Puppet VM-extensies voor het bootstrappen van agents tijdens het provisioneren, wat een vroege convergentie garandeert. Chef Infra gebruikt cookbooks en Policyfiles om afhankelijkheden vast te pinnen en reproduceerbare runs te garanderen; Chef InSpec drukt compliance-as-code uit en voedt rapporten aan Chef Automate voor drift- en control-posture-analyse. Puppet’s manifests en modules coderen de gewenste staat, waarbij Code Manager en environments promotie-flows bieden; Puppet Enterprise levert gecentraliseerde rapportage, op rollen gebaseerde classificatie en herstel. Beide tools integreren met Azure via modules en resource providers en kunnen naast Azure-native DSC bestaan wanneer migratie of gemengde omgevingen dit vereisen.
Applicatieconfiguratie, Immutable Images en Policy as Code
Azure App Configuration centraliseert applicatie-instellingen en feature flags. Feature flags maken progressieve uitrol mogelijk: je definieert vlaggen en koppelt indien nodig filters, zoals een percentage-gebaseerde uitrol of gebruikerstargeting via Feature Manager-bibliotheken. Met labels kun je waarden scheiden per omgeving of ring. Configuratiesnapshots leggen een onveranderlijke point-in-time weergave vast voor een set van keys en labels, wat consistente, reproduceerbare uitrol over meerdere services mogelijk maakt zonder race conditions door gelijktijdige key-wijzigingen. Met Key Vault-referenties kun je secrets in Key Vault bewaren terwijl je alleen de verwijzingen opslaat in App Configuration; de managed identity van de applicatie moet ‘get’-permissies hebben op het secret, en de client-bibliotheken lossen de secrets op en cachen ze, met optionele dynamische vernieuwing. Gebruik RBAC en netwerkisolatie op beide services om de toegang te beveiligen.
Immutable infrastructure elimineert configuratiedrift door opnieuw te bouwen vanaf een bekende image in plaats van hosts aan te passen. De azure-arm (nu azure) builder van Packer creëert images vanaf een basis-OS, voert provisioners uit (shell, PowerShell, Ansible) en publiceert deze naar een Shared Image Gallery met gerepliceerde regio’s en semantische versionering. Een golden-image pipeline voert doorgaans lint-checks uit op Packer-templates, bouwt de image, voert kwetsbaarheids- en compliancy-scans uit (bijv. InSpec), voert integratietests uit, promoot de image naar de gallery en werkt vervolgens VM Scale Sets of host pools bij. Met VM Scale Sets, rolling of health-based upgrades en automatische OS-image-upgrades krijg je veilige, consistente uitrol en eenvoudige rollbacks door een eerdere image-versie te selecteren.
Policy as code dwingt guardrails af. Azure Policy-definities zijn JSON-objecten met een policyRule die resource-eigenschappen en effecten evalueert, zoals deny, audit, append, modify of deployIfNotExists voor automatische herstelacties. Parametriseer definities voor hergebruik; groepeer ze met initiatives (policy set-definities) voor consistente toewijzingen en gecentraliseerde compliancy-tracking. Wijs policies toe op het niveau van een management group, subscription of resource group; schakel remediation tasks in voor modify- en deployIfNotExists-policies om bestaande resources compliant te maken. Sla policy-artefacten op in source control, review ze via pull requests en deploy ze via Bicep, ARM of Terraform voor een consistente promotie door omgevingen.
Voor Kubernetes dwingt OPA/Gatekeeper beperkingen af op het moment van toelating (admission-time constraints). ConstraintTemplates definiëren Rego-policies en hun schema’s; Constraints instantiëren die policies voor een cluster. Veelvoorkomende controles zijn het beperken van images tot vertrouwde registries, het vereisen van labels/annotaties of het voorkomen van privileged pods. Gatekeeper integreert met GitOps-tools (Flux/Argo CD) en CI-testen via conftest. Azure Policy for Kubernetes bouwt voort op Gatekeeper om Azure-native toewijzings- en compliancy-overzichten te bieden voor AKS-clusters, waarmee cloud- en clustergovernance worden verenigd in één posture-dashboard.
Praktisch Probleemscenario
Spotify moet de Azure-infrastructuur standaardiseren, configuratiedrift verminderen en veilige feature-uitrol versnellen voor microservices die draaien op Windows en Linux, AKS en VM-gebaseerde workloads.
- Modelleer cloud-resources met Bicep-modules per domein (netwerk, data, compute) en deploy ze via subscriptions die onder management groups vallen. Dit levert getypeerde, onderhoudbare declaraties, duidelijke scoping en hergebruik op zonder de breedsprakigheid van ARM JSON.
- Gebruik een klein aantal gekoppelde ARM template specs voor gedeelde platformservices die door meerdere teams worden gebruikt. Gekoppelde templates die als template specs worden gehost, bieden geversioneerde, onveranderlijke artefacten en ontkoppelen de cadans van het platform van die van de app-teams.
- Kies Terraform voor cross-cloud edge- en CDN-afhankelijkheden, waarbij de
azurerm-backend de remote state opslaat in Azure Storage per workspace (dev/test/prod) en blob leases gebruikt voor locking. Dit behoudt een uniform pipeline-patroon, terwijl de state veilig wordt geïsoleerd en consistente promotie mogelijk wordt gemaakt. - Centraliseer applicatieconfiguratie en feature flags in Azure App Configuration. Feature flags met percentage-filters en labels maken ring-gebaseerde uitrol mogelijk; configuratiesnapshots zorgen ervoor dat elke deployment-fase een onveranderlijke, geauditeerde set keys gebruikt.
- Sla secrets op in Azure Key Vault en verwijs ernaar vanuit App Configuration. Het oplossen van referenties tijdens runtime met een managed identity maakt key-rotatie mogelijk zonder her-deployments en verwijdert secrets uit de applicatieconfiguratie en pipelines.
- Adopteer immutable images voor VM-workloads door met Packer golden images te bouwen en te publiceren naar een Shared Image Gallery. Een pipeline voert hardening-scripts en InSpec-scans uit, tagt images en promoot alleen versies die slagen. VM Scale Sets gebruiken gallery-images voor blue/green en rolling upgrades, waardoor drift wordt geëlimineerd.
- Dwing guardrails af met Azure Policy-initiatives die blootstelling van publieke IP’s op private subnets weigeren, diagnostische instellingen naar Log Analytics vereisen en automatisch back-upbeleid implementeren. Wijs toe op het niveau van de management group voor brede dekking en maak remediation tasks aan voor bestaande resources om de posture snel te convergeren.
- Beveilig AKS met OPA/Gatekeeper door constraints toe te passen die niet-conforme images en privileged pods blokkeren. Policies worden opgeslagen en geversioneerd in Git, gevalideerd met
conftestin CI en toegepast via GitOps om ervoor te zorgen dat de clusterstatus te allen tijde overeenkomt met het beleid. - Beheer de configuratie van Windows-servers met Azure Automation DSC. Nodes registreren zich met
Register-AzAutomationDscNodeen gebruikenConfigurationMode=ApplyAndAutoCorrectom drift te detecteren en te herstellen; compilatietaken genereren MOF’s per rol, en compliancy-dashboards tonen drift voor nader onderzoek. - Beheer Linux-configuratie en -orkestratie met Ansible met behulp van de
azure_rmdynamische inventory en deazure.azcollection-modules. Azure Pipelines authenticeert met een managed identity, voert playbooks idempotent uit en coördineert updates over services heen, als aanvulling op DSC op Windows. - Maak gebruik van Chef InSpec-profielen voor cross-platform compliance-as-code op zowel images als actieve hosts, en stuur de data naar Chef Automate voor rapportage. Dit brengt auditeerbare, testbare controles in de pipeline en productie, en zorgt ervoor dat wettelijke vereisten continu worden gevalideerd.
Deze combinatie biedt getypeerde, modulaire IaC (Bicep/Terraform), immutable hosts (Packer), gecentraliseerde app-configuratie (App Configuration/Key Vault), continue configuratiehandhaving (Azure Automation DSC, Ansible) en sterke governance (Azure Policy, Gatekeeper). Het vermindert drift, verkort herstel- en uitroltijden en maakt compliancy aantoonbaar.
← CI · Alle domeinen · Containerisatie en Kubernetes →
Oefen deze vragen → · Getimede oefening op ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Slaag voor je examen →