Het beheren van de IT-infrastructuur is een zware klus, maar de afgelopen jaren hebben cloudproviders het eenvoudiger gemaakt om elk aspect van het leven van een systeembeheerder te automatiseren. Infrastructure as Code is de volgende stap: het definiëren van al uw services in een configuratiebestand dat kan worden gevolgd via bronbeheer.
Hoe werkt Infrastructure as Code?
Infrastructure as Code (IaC) is in theorie vrij eenvoudig. Al uw serverimplementaties, cloudservices en de bijbehorende configuratie worden allemaal opgeslagen in één centraal aanpasbaar configuratiebestand of een set configuratiebestanden, meestal YAML of iets dergelijks. Elk configuratiebestand bevat de nodige instructies en richtlijnen om uw volledige cloudoplossing helemaal opnieuw te creëren.
Dit kernprincipe houdt in dat wijzigingen aan deze infrastructuur kunnen worden gevolgd met bronbeheer. Wil je een nieuwe server lanceren? U moet uw implementatieconfiguratie wijzigen en een update pushen. Als er iets misgaat, kunt u altijd terugkeren naar een eerdere versie van uw implementatie, wat erg handig kan zijn voor systemen met hoge beschikbaarheid waar een verkeerd geconfigureerde implementatie veel geld kan kosten.
Dit betekent dat IaC erg alles-of-niets is. Het is geen goed idee om IaC naast handmatig beheerde implementaties uit te voeren, hoewel u dit zeker kunt doen, vooral als de systemen gescheiden zijn.
In de praktijk is infrastructuur als code behoorlijk ingewikkeld. Als u dacht dat reguliere sysadmining een moeilijke klus was, zal het converteren van uw volledige implementatie naar IaC geen eenvoudige taak zijn. Maar als u eenmaal het moeilijke deel van het instellen hebt gedaan, wordt het onderhouden van uw implementatie en het aanbrengen van wijzigingen veel eenvoudiger. Niet langer zullen al uw implementatie-instellingen in het hoofd van uw sysadmin leven - met IaC, het is allemaal duidelijk gedefinieerd in code.
En aangezien het allemaal in code is gedefinieerd, kunt u ook eenvoudig het proces van het uitvoeren van ontwikkel-, staging-, test- en productieomgevingen automatiseren. Op deze manier kunt u wijzigingen in uw volledige implementatie testen voordat u deze bijwerkt. U kunt desgewenst zelfs IaC-eenheidstests automatiseren.
Hoewel het vrij ingewikkeld is om op te zetten, wegen de voordelen voor grotere projecten zeker op tegen de mogelijke kopzorgen.
Infrastructuur gebruiken als code
Natuurlijk kan het coderen van uw gehele infrastructuur een moeizaam proces zijn. U hoeft de YAML-sjabloon echter niet altijd handmatig te maken; De CloudFormation IaC-oplossing van AWS beschikt over een webgebaseerde "Designer", die uw hele productstapel visueel weergeeft. Hier is bijvoorbeeld een van de voorbeeldsjablonen, voor een WordPress-implementatie met automatische schaling, load-balanced, waarbij een RDS-instantie als database wordt gebruikt.

Elk afzonderlijk knooppunt moet worden geconfigureerd, maar uiteindelijk zal het een sjabloonbestand produceren dat u kunt gebruiken om de hele implementatie van te maken.

De exacte implementatie is afhankelijk van de provider, maar AWS CloudFormation zorgt ervoor dat alle resources in de juiste volgorde worden aangemaakt. Als u bijvoorbeeld een EC2-instantie met een beveiligingsgroep hebt, zorgt CloudFormation ervoor dat eerst de beveiligingsgroep wordt gemaakt en vervolgens de instantie met die beveiligingsgroep. Het enige wat je hoeft te doen is ze aan elkaar te koppelen in de console.
Voor meer informatie over CloudFormation kun je onze handleiding lezen om ermee aan de slag te gaan.