Terraform Infrastructure as Code

Home Technologieën Terraform Infrastructure as Code

Overzicht

Infrastructure as Code is de praktijk van het definiëren en beheren van cloud infrastructuur — servers, databases, netwerken, load balancers, DNS records, IAM beleid — door middel van code in plaats van handmatige configuratie in cloud provider consoles. Terraform is het dominante Infrastructure as Code hulpmiddel dat een declaratieve configuratietaal (HCL) en een providerecosysteem biedt dat AWS, Google Cloud, Azure en honderden andere cloud en SaaS providers dekt.

Het operationele argument voor Infrastructure as Code is eenvoudig. Infrastructuur gedefinieerd in code kan worden versie-gecontroleerd — elke wijziging wordt bijgehouden, elke historische configuratie is herstelbaar. Infrastructuur gedefinieerd in code is reproduceerbaar. Infrastructuur gedefinieerd in code is auditeerbaar.

Wij gebruiken Terraform voor de infrastructuurprovisioning van de cloud-geïmplementeerde applicaties die wij bouwen, en bieden Terraform infrastructuurontwikkeling en migratieDiensten voor bestaande infrastructuur.


Wat Terraform Infrastructure als Code Dekt

Provider configuratie en staatsbeheer. Provider configuratie. Staat backends: AWS S3 met DynamoDB vergrendeling, Terraform Cloud, GCS. Staatsbeheer operaties: terraform import, terraform state mv, terraform state rm.

AWS infrastructuur. Compute: EC2 instanties, Auto Scaling Groups, Elastic Load Balancers. Netwerken: VPC, publieke en privé subnetten, Internet gateway, NAT gateways, Route tables, Security groups. Databases: RDS instanties, RDS Aurora clusters. Container infrastructuur: ECS clusters, ECS services, EKS clusters. Caching en berichtenverkeer: ElastiCache Redis, SQS, SNS, EventBridge. Opslag: S3, CloudFront. IAM: IAM rollen, GitHub Actions OIDC provider.

Netwerken en beveiliging. Multi-tier netwerken: drie-tier architectuur met publieke, applicatie en dataTiers. VPC peering en Transit Gateway. AWS WAF.

Geheimen en configuratiebeheer. AWS Secrets Manager. AWS Systems Manager Parameter Store.

Module ontwikkeling. Module structuur: main.tf, variables.tf, outputs.tf, versions.tf. Module register. Module versiebeheer.

Omgevingsbeheer. Workspace-gebaseerde omgevingsbeheer. Directory-gebaseerde omgevingsbeheer: environments/dev/, environments/staging/, environments/prod/.

Terragrunt voor DRY configuratie. terragrunt.hcl configuratie. Afhankelijkheidsblokken.


CI/CD Integratie voor Infrastructuur

Plan bij pull request. Een CI taak die terraform plan uitvoert bij elke pull request naar infrastructuurconfiguratie.

Toepassen bij samenvoegen. Geautomatiseerde terraform apply getriggerd door samenvoeging naar de hoofdbranch.

Checkov en tfsec voor beveiligingsscanning. Statische analyse tools die Terraform configuraties scannen op beveiligingsMisconfigurations.


Gebruikte Technologieën

  • Terraform — primair Infrastructure als Code hulpmiddel
  • HCL (HashiCorp Configuration Language) — Terraform's configuratietaal
  • Terragrunt — DRY Terraform omhulsel voor multi-omgeving configuraties
  • AWS provider — Amazon Web Services resourcebeheer
  • Google Cloud provider — Google Cloud Platform resourcebeheer
  • Azure provider — Microsoft Azure resourcebeheer
  • AWS S3 / DynamoDB — remote staat backend en staatsvergrendeling
  • Terraform Cloud — beheerde Terraform uitvoering en staatsopslag
  • Checkov / tfsec — Terraform beveiligingsscanning
  • GitHub Actions — CI/CD pijplijn voor geautomatiseerd plan en toepassen
  • AWS IAM / OIDC — sleutelloze authenticatie voor CI/CD Terraform uitvoering
  • AWS ECS / EKS — container infrastructuur geprovisioned door Terraform
  • AWS RDS / ElastiCache — beheerde database en cache infrastructuur
  • AWS VPC / Security Groups — netwerk infrastructuur
  • AWS Secrets Manager / Parameter Store — geheimen en configuratiebeheer

Infrastructuur die Overeenkomt met Zijn Definitie

De operationele belofte van Terraform is dat de infrastructuur die in productie draait overeenkomt met de infrastructuur gedefinieerd in de repository. Deze belofte wordt alleen gehouden als Terraform het exclusieve mechanisme is voor het maken van infrastructuurwijzigingen — geen handmatige consolwijzigingen, geen niet-gedocumenteerde resourcecreatie, geen configuratiedrift.


Infrastructuur Gedefinieerd, Beheerd en Auditeerbaar

Terraform infrastructuurontwikkeling die cloud infrastructuur onder versie-gecontroleerd, beoordeelbaar, reproduceerbaar beheer brengt — of voor nieuwe infrastructuur gebouwd van scratch of voor bestaande infrastructuur gemigreerd van handmatige configuratie naar Terraform beheer.