Terraform State-beheer

Terraform State Beheer



Infrastructure as Code is de procedure voor het beheren en inrichten van de IT-infrastructuur door middel van code die de complexiteit van het op grote schaal inrichten en beheren van de IT-resources handmatig en herhaaldelijk helpt overwinnen. Terraform van HashiCorp is een open-source IaC-tool die een statusbeheersysteem gebruikt om wijzigingen bij te houden en de statusbestanden te beheren. Het statusbeheersysteem is een van de belangrijkste kenmerken en helpt om infrastructuurveranderingen effectief bij te houden. Dit artikel gaat dieper in op hoe het Terraform-statusbeheer werkt en hoe u het effectief kunt gebruiken.

Terraform staat

De huidige staat van onze infrastructuur, inclusief informatie over de bronnen die we in onze code definiëren, wordt vastgelegd als Terraform-status. Terraform gebruikt deze status om de wijzigingen te bepalen die nodig zijn om onze infrastructuur in de gewenste staat te brengen wanneer een opdracht zoals Terraform 'apply' wordt uitgevoerd. Na het uitvoeren van de wijzigingen (maken, wijzigen en verwijderen), werkt Terraform het statusbestand bij met de nieuwe status van uw infrastructuur.

Laten we een voorbeeld nemen om het concept duidelijk te begrijpen:







bron 'lokaal_bestand' 'John' {

bestandsnaam = '/home/Jan.txt'

inhoud = 'Ik houd van huisdieren'

}

Hier maken we een Terraform-bestand met de naam 'main.tf'. Binnenin bevindt zich een bron van het type local_file met de naam 'John' met twee attributen: bestandsnaam en inhoud.



Het brontype local_file wordt gebruikt om een ​​bestand te maken op het lokale bestandssysteem van de computer waarop Terraform wordt uitgevoerd. In dit geval wordt het bestand gemaakt met de naam 'John.txt' in de map '/ home' en de inhoud van het bestand is 'I love pets'.



Laten we nu de Terraform-stroom uitvoeren - Terraform init, plannen en toepassen. Wanneer we de Terraform 'apply' -opdracht voor de eerste keer in ons project uitvoeren, maakt Terraform automatisch het statusbestand met de naam 'terraform.tfstate' in de hoofdmap van ons Terraform-project. Het bevat alle informatie over de huidige staat van onze infrastructuur in JSON-formaat.





Hier is het statusbestand voor de bron die we hebben gemaakt:



Laten we nu zeggen dat we de huidige bron willen verwijderen en een andere bron van het type random_pet willen maken met de naam 'mijn-huisdier' met attributen - voorvoegsel, lengte en scheidingsteken.

bron 'willekeurig_huisdier' 'mijn huisdier' {

voorvoegsel = 'Dhr'

lengte = '1'

scheidingsteken = '.'

}

Hier verwijderen we de local_file-resource en voegen we een random_pet-resource toe. Onze gewenste status is om alleen de random_pet-bron te hebben. Laten we de opdrachten Terraform init, plannen en toepassen uitvoeren.

Zoals te zien is in de vorige illustratie, toont het, wanneer we de opdracht Terraform 'plan' uitvoeren, de acties die Terraform onderneemt om de gewenste status te bereiken. Wanneer we de opdracht Terraform 'apply' uitvoeren, wordt de bron 'my-pet' gemaakt en wordt de bron 'John' verwijderd. Ook wordt het statusbestand bijgewerkt door de metadata van de local_file-resource te vernietigen en de metadata van de random_pet-resource toe te voegen.

Hier is de inhoud van het bijgewerkte statusbestand:

Hoe werkt Terraform the Manage State?

Met behulp van een backend beheert Terraform de status. Een backend is een externe service of een lokaal bestandssysteem dat Terraform gebruikt om de statusgegevens op te slaan en op te halen. Afhankelijk van onze wensen kunnen we een geschikte backend kiezen.

Terraform ondersteunt verschillende ingebouwde backends, waaronder lokaal, Amazon S3, HashiCorp Consul, Vault en Azure Storage. We kunnen ook een aangepaste backend maken als geen van de ingebouwde opties aan de behoeften voldoet.

In de vorige voorbeelden werden de statusbestanden opgeslagen in de lokale backend. Maar het opslaan in een externe backend is de beste praktijk, omdat het samenwerking oproept en de beveiliging verhoogt.

Belang van staatsbeheer

Statusbeheer in tools zoals Terraform is essentieel vanwege de volgende belangrijke punten:

Bepaal de huidige staat van uw infrastructuur

Het statusbestand biedt een nauwkeurige momentopname van de bestaande bronnen en hun huidige kenmerken. Deze gegevens zijn absoluut noodzakelijk om onze infrastructuur te begrijpen en ervoor te zorgen dat deze in de gewenste staat verkeert.

Houd wijzigingen in de infrastructuur in de loop van de tijd bij

Elke keer dat we de wijzigingen toepassen met Terraform, wordt het statusbestand bijgewerkt om de nieuwe status van onze infrastructuur weer te geven. Dit stelt ons in staat om te volgen hoe onze infrastructuur is geëvolueerd en biedt een audittrail van alle wijzigingen.

Automatisering

Door de gewenste infrastructuurstatus in code te definiëren, kunnen we de creatie en het beheer van onze infrastructuur automatiseren. Staatsmanagement garandeert dat onze infrastructuur gewenst blijft, ook als de wijzigingen in de loop van de tijd worden doorgevoerd.

Afhankelijkheden beheren

Met Terraform kunnen we de relaties tussen bronnen in ons configuratiebestand definiëren en Terraform gebruikt het statusbestand om ervoor te zorgen dat die relaties worden onderhouden. Dit zorgt ervoor dat de wijzigingen in één resource niet onbedoeld van invloed zijn op andere resources.

Noodherstel

Als er een storing of storing optreedt, kunnen we het statusbestand gebruiken om de infrastructuur in een bekende staat te herstellen. Dit kan helpen om de downtime te minimaliseren en ervoor te zorgen dat onze infrastructuur snel en efficiënt wordt hersteld.

Best practices voor effectief staatsbeheer

Hier zijn enkele tips die we kunnen volgen om de staten effectief te beheren:

Gebruik een externe backend

Een externe backend biedt verschillende voordelen ten opzichte van een lokale backend. Het stelt meerdere gebruikers in staat om aan dezelfde infrastructuur te werken en ze bieden ook een betere beveiliging en betrouwbaarheid dan de lokale backends.

Schakel versiebeheer in

Door het statusbestand te versiebeheer, kunnen we de wijzigingen in de loop van de tijd volgen en indien nodig teruggaan naar een vorige versie. Versiebeheer biedt ook een audittrail en helpt ervoor te zorgen dat de wijzigingen op de juiste manier worden gedocumenteerd.

Gebruik een vergrendelingsmechanisme

We kunnen een vergrendelingsmechanisme gebruiken dat conflicten helpt voorkomen wanneer meerdere gebruikers aan dezelfde infrastructuur werken. Terraform ondersteunt verschillende vergrendelingstools, waaronder DynamoDB, Consul en S3.

Maak een back-up van uw staatsbestand

We kunnen gegevensbeschadiging herstellen als we regelmatig een back-up van het statusbestand maken. We moeten de back-ups op een veilige locatie opslaan en alle relevante nalevingsvereisten volgen.

Conclusie

We hadden een korte inleiding tot IaC en Terraform terwijl we de statusbestanden begrepen en deze aan de hand van voorbeelden beheerden. Als we begrijpen hoe Terraform werkt, kunnen we veelvoorkomende valkuilen vermijden en ervoor zorgen dat onze infrastructuur gewenst blijft. Door de best practices voor het beheren van staten te volgen, kunnen we Terraform met vertrouwen en effectief gebruiken.