Infrastructuur als code gebruiken om Azure-landingszones bij te werken

In dit artikel worden de voordelen beschreven van het gebruik van infrastructuur als code (IaC) om Azure-landingszones bij te werken. Organisaties moeten hun landingszones bijwerken terwijl ze werken om ervoor te zorgen dat configuraties juist zijn en reageren op de noodzaak van wijzigingen.

IaC kan de hele levenscyclus beheren en excelleert bij het beheren van de resources die worden geïmplementeerd. Organisaties moeten plannen om hun Azure-landingszones te implementeren met IaC. Hiervoor is planning vereist om bestaande niet-IaC-resources uit te lijnen met IaC-resources die worden ondersteund met statusbeheer. U moet de bestaande resources toewijzen aan de gewenste status.

Zie Uw Azure-landingszone up-to-date houden voor meer informatie.

Hoe infrastructuur als code werkt

IaC verwijst naar de praktijk en hulpprogramma's voor het beheren van de levenscyclus van infrastructuurresources met behulp van computerleesbare definitiebestanden. De definitie voor de infrastructuur wordt geschreven, geversied, geïmplementeerd via pijplijnen en wordt vervolgens onderdeel van de implementatie voor workloads.

IaC-technologieën zijn declaratief, wat betekent dat wanneer IaC wordt uitgevoerd, de configuratie wordt ingesteld op wat in de code wordt beschreven, ongeacht de huidige status. Wanneer u infrastructuur configureert via scripts, zoals de Azure CLI of Azure PowerShell, zijn ze noodzakelijk. Imperatieve scripts voeren een reeks acties uit en het resultaat is afhankelijk van de huidige status plus de status na de acties.

Als u dus een infrastructuur als codedefinitie voor een Azure-resource hebt, kunt u die definitie zo vaak als u wilt uitvoeren en wordt er alleen een wijziging gemaakt als:

  • De definitie verandert om nieuwe resources toe te voegen, resources te verwijderen die eerder zijn geïmplementeerd of resources te wijzigen die eerder zijn geïmplementeerd.
  • De geïmplementeerde resource driftt van de configuratie om de configuratie opnieuw in te stellen op de gedefinieerde.

U kunt IaC gebruiken om de status te herstellen door resources te verwijderen die niet meer nodig zijn en de levenscyclus van resources te beheren via veel wijzigingen.

Notitie

De specifieke mechanica voor het verwijderen van resources met IaC varieert. Azure Bicep vereist bijvoorbeeld het gebruik van een complete implementatietype om resources buiten het bereik te herstellen. Deze opdracht werkt alleen in specifieke bereiken. Voor Terraform hebben resources een lifecycle meta-argument dat instructies biedt voor de manier waarop Terraform resources moet verwerken.

Voor Azure-landingszones zijn er twee hoofdopties voor infrastructuur als code:

  • Azure Bicep, een domeinspecifieke taal die wordt gebruikt voor het implementeren van Door Microsoft ontwikkelde Azure-resources. Zie Ontwerpoverwegingen voor Bicep-modules voor meer informatie over Azure-landingszones.
  • Terraform, een product geproduceerd door Hashicorp, om infrastructuur te implementeren in de cloud en on-premises. Terraform heeft specifieke door Microsoft geproduceerde resourceproviders voor de implementatie van Azure-resources. Zie Ontwerpoverwegingen voor Terraform-modules voor meer informatie over Azure-landingszones.

De voordelen van het bijwerken van ALZ met infrastructuur als code

De volgende voordelen beschrijven waarom u infrastructuur als code moet gebruiken om uw landingszone-updates te maken.

Verminder de inspanning

Het kost minder moeite om infrastructuur als code te gebruiken om updates uit te voeren in vergelijking met het aanbrengen van handmatige wijzigingen. De IaC-implementatie helpt de volgende vragen te beantwoorden:

  • Hoe worden resources momenteel geconfigureerd?
  • Hoe wordt deze geconfigureerd door deze update?
  • Welke wijzigingen worden aangebracht om deze in overeenstemming te brengen met deze update?

Wanneer een infrastructuur als codehulpprogrammaset wordt uitgevoerd, kan deze een vergelijking of differentiële leesbewerking van de wijzigingen produceren. Bekijk deze leesbewerking voordat u wijzigingen doorvoert in de omgeving.

De toolset kan de informatie voor de wijziging compileren in plaats van een operator of een engineer.

Verminderingsfout

Vanwege de programmatische aard van de implementaties vermindert infrastructuur als code menselijke fouten terwijl deze wijzigingen aanbrengt. Er worden alleen wijzigingen aangebracht in wat er is gedefinieerd en er zijn preview-opties, zodat er minder storingen optreden die worden veroorzaakt door mislukte of onvolledige wijzigingen. Het heeft ook verbeterde testopties.

Versiebeheer en geschiedenis

Infrastructuur als code-implementaties worden ondersteund door een definitiebestand, zodat u broncodebeheer kunt gebruiken om de versies van uw definities te beheren. Afhankelijk van de methode van IaC die u gebruikt, kunt u verwijzen naar de implementaties in Azure for Bicep of uw statusbestand voor Terraform om de geschiedenis van eerdere implementaties te bekijken.

Wanneer u broncodebeheerprocedures gebruikt, wordt er een nieuwe vertakking van uw IaC gemaakt om wijzigingen en revisies toe te voegen. De geschiedenis van de vertakking in uw broncodebeheersysteem legt de iteraties en wijzigingen vast. U kunt deze gebruiken om wijzigingen in een testomgeving te implementeren totdat u klaar bent om de wijzigingen in productie samen te voegen en te implementeren. Zie Testbenadering voor Azure-landingszones voor meer informatie. Tijdens deze cyclus leggen de implementatierecords de versie vast die wordt gebruikt en de resources die worden geïmplementeerd, wat een zeer zichtbare geschiedenis biedt.

Gebruik deze testmethoden met Bicep voor algemene testdoeleinden. Met deze methoden kunt u testen uitvoeren voordat u de code implementeert en u kunt testen in niet-productieomgevingen vanuit uw vertakking.

Testomgevingen

IaC-implementaties zijn herhaalbaar, dus u kunt dezelfde definitie gebruiken om een tweede (of meer) omgeving te implementeren op basis van de implementatie. Deze methode is waardevol voor het testen van wijzigingen.

Als u bijvoorbeeld uw Azure Firewall wilt vervangen met behulp van de Premium-SKU, kunt u een testomgeving implementeren en de wijzigingen valideren zonder de productie te wijzigen.

Vangstconfiguratiedrifts

IaC biedt een unieke optie om configuratiedrifts tijdens updates te ondervangen. De implementatie onderschept wijzigingen in het definitiebestand en geeft exemplaren weer waarin de resourceconfiguratie verschilt van de definitie.

Updates voor landingszones met IaC kunnen u helpen deze configuratiedrift op te vangen en de code op de juiste wijze bij te werken, deze onjuiste configuraties aan te pakken via de update of op een andere manier te adresseren.

Wanneer u een wijziging aanbrengt in resources via de portal, CLI of een niet-IaC-methode, wordt de wijziging geïmplementeerd. De volgende keer dat u een implementatie uitvoert via IaC, wordt de vergelijking tussen de door code gedefinieerde status en de werkelijke status in de portal gevlagd met behulp van wat-als- of planfuncties. Gebruik deze methode om te bepalen of een omgeving buiten het codebestand wordt gewijzigd.

Nadat de onjuiste uitlijning is geïdentificeerd, kunt u IaC uitvoeren om de implementatie uit te lijnen met de definitie. Gebruik deze methode om problemen te identificeren en scenario's op te lossen, afhankelijk van de aard van de problemen, de aard van de uitvoering en hoe de wijzigingen zijn aangebracht. Terraform probeert bijvoorbeeld de basislijn te herstellen naar resources die zijn geïmplementeerd en een Complete modusimplementatie in Bicep verwijdert resources in een resourcegroep die geen deel uitmaken van de definitie. Deze hulpprogramma's detecteren en herstellen configuratiedrift, maar kunnen niet alle problemen oplossen.

Zie Out-of-band changes and Detecting and managing drift with Terraform (Drift detecteren en beheren met Terraform) voor meer informatie.

Wijzigingen die in de portal zijn gedefinieerd, zijn lastig om terug te implementeren in IaC. U moet de code bijwerken zodat deze overeenkomt met de huidige status. Dit omvat vaak het controleren van elke resourcewijziging en het bijwerken van de parameters, zodat deze overeenkomt met de configuratie 'as is'.

Als u IaC gebruikt om uw landingszone of andere resources te beheren, moet u alleen wijzigingen aanbrengen buiten IaC als onderdeel van een noodgeval. Neem voorzorgsmaatregelen met accounts die rechtstreeks toegang hebben om wijzigingen aan te brengen, zoals Privileged Identity Management.

Bekijk algemene automatiserings- en beveiligingsprocedures in de volgende artikelen:

Volgende stappen

Bekijk een inleiding tot de IaC-hulpprogramma's in de volgende artikelen: