Driftdetectie van spoke-configuratie¶
Nadat een spoke is gedeployd, belet niets de eigenaren om de baseline-resources te wijzigen. Dat is bewust: zo blijven de rollen eenvoudig en de spoke flexibel. Workload teams zijn niet bedoeld om de baseline-resources van het spoke canvas te wijzigen (Wat je krijgt, Beperkingen). De pipeline voor spoke driftdetectie laat zien wat er toch is gewijzigd.
Hij werkt zoals de wekelijkse driftcontrole van de hub (Onderhoudskalender), voor elk spoke-bestand: de pipeline plant elke spoke en rapporteert of het plan resources wil wijzigen. Een geplande wijziging betekent dat Azure niet meer overeenkomt met de code.
Wat het detecteert
De detectie is beperkt. Ze vindt wat een Terraform plan vindt: een verschil tussen de state en de code, in de baseline-resources van het spoke canvas. Ze controleert niet wat het workload team bovenop de baseline in de spoke deployt.
Herkomst van deze pagina
De pipeline komt uit het spoke canvas van eerdere versies en is een Azure DevOps-pipeline. Controleer of jouw codeversie hem meelevert voordat je hem inricht. De bestandsnamen en variabelenamen hieronder zijn die van de starterbestanden en kunnen in jouw platform afwijken.
Vereisten: waar de rapporten heen gaan¶
De pipeline schrijft zijn rapporten naar een storage account. Kies een van twee opties.
Optie 1: het storage account van een spoke (voorkeur)¶
Een volledig gedeployde spoke heeft een storage account dat past. Maak een spoke voor het platformteam, of gebruik een bestaande, en
stel een groep van de mensen die de rapporten nodig hebben in als ProductTeamGroupNames in het spoke-bestand
(Spoke-JSON-referentie). Dan, na de spoke-deployment:
- Maak een container in het storage account, bijvoorbeeld
driftdetection. - Geef de
Readers-groep van de spoke de rol Storage Blob Data Reader op het storage account, zodat ze de bestanden kunnen lezen. Hebben meer mensen toegang nodig, maak dan een groep voor hen en geef die groep de rol. - Controleer de netwerktoegang van het storage account. Die is normaal beperkt tot het private endpoint. Mogelijk moet je haar aanpassen zodat de lezers erbij kunnen, wat op zijn beurt een policy-uitzondering kan vragen.
Optie 2: een ander storage account¶
Gebruik een gewoon storage account (geen data lake, geen hierarchical namespace):
- Maak een container, bijvoorbeeld
driftdetection. - Zorg dat de deployment-agents het storage account kunnen bereiken, direct of bij voorkeur via een private endpoint.
- Geef de service principal van de spoke-deployment de rol Storage Blob Data Contributor erop.
De pipeline aanmaken¶
Het pipelinebestand maakt deel uit van de configuratierepository van de spokes (starternaam SpokeConfigurationDriftReporter.yaml
in de map pipelines).
- Maak in het Azure DevOps-project een nieuwe pipeline van een bestaand YAML-bestand in de configuratierepository, branch
main, en het pad van dat bestand. Sla hem op zonder te draaien. - Hernoem hem, bijvoorbeeld
Spoke Configuration-drift Detection. -
Stel de agent pool in het bestand in op de pool die je gebruikt:
pool: <agent-pool> -
Maak de hieronder beschreven variable library aan.
- Draai de pipeline één keer met de hand. Azure DevOps vraagt toestemming om de pool en de library te gebruiken. Een geplande run kan daar niet om vragen, dus hij faalt totdat de eerste handmatige run is goedgekeurd.
Variable library¶
De pipeline leest het storage account en de container uit een variable group. De starterpipeline verwacht de naam
xms-spoke-driftdetection.
| Sleutel | Waarde |
|---|---|
DriftDetectionStorageAccountName |
De exacte naam van het storage account. Kleine letters, geen spaties aan het begin of einde. |
DriftDetectionStorageContainerName |
De container. Voorstel: driftdetection. Dezelfde regels. |
Schema¶
Het schema staat in het pipelinebestand:
schedules:
- cron: "<minutes> <hours> <days> <months> <days-of-week>"
| Veld | Bereik |
|---|---|
| minuten | 0 tot 59 |
| uren | 0 tot 23 |
| dagen | 1 tot 31 |
| maanden | 1 tot 12 (namen worden ook geaccepteerd) |
| dagen van de week | 0 tot 6, waarbij 0 zondag is (namen worden ook geaccepteerd) |
* betekent elke waarde. Azure DevOps rekent de tijd in UTC. Draai hem minstens wekelijks, in lijn met de
Onderhoudskalender.
Een rapport ophalen¶
Elke run slaat het rapport twee keer op in de container:
| Gebruik | Naam |
|---|---|
| Historie: een unieke naam per run | ConfigurationDriftReport_<yyyy-MM-dd HHmm>.json |
| Automatisering: altijd het nieuwste rapport | ConfigurationDriftReport_lastest.json (zo gespeld in de bron) |
Om er een te lezen, open je het storage account in de Azure portal, dan Storage browser, Blob containers en de
container driftdetection. Je hebt de rol Storage Blob Data Reader nodig. Automatisering kan het latest-bestand lezen.
Handelen op een rapport¶
Voor elke spoke in het rapport die wijzigingen toont:
- Zoek uit wie wat heeft gewijzigd (Azure activity log) en waarom.
- Is de wijziging nodig, breng hem dan in code: een spoke-wijziging.
- Zo niet, draai dan de spoke-deployment, die hem terugdraait (Spoke-deployment).
- Neem het aantal driftende spokes mee in de maandelijkse health check.