3.4 Infrastructure as Code (IaC) en CI/CD:

────────────────────────────────────────────
📁 File Formats voor IaC
────────────────────────────────────────────
Formaat Omschrijving
YAML : ("YAML Ain’t Markup Language") Menselijk leesbare datastructuur. Veel gebruikt in Ansible, Kubernetes, Docker Compose.
JSON : (JavaScript Object Notation) Compacte, machinevriendelijke datastructuur. Veel gebruikt in APIs, Terraform, en cloud-templates.

YAML is gemakkelijker voor mensen, JSON beter voor machines (maar minder overzichtelijk bij grote bestanden).

────────────────────────────────────────────
🧰 IaC Utilities
────────────────────────────────────────────
Tool Beschrijving
Ansible : Agentloos, werkt via SSH. Declaratief. Gebruikt YAML voor playbooks. Makkelijk te leren.
Puppet : Client-server model met eigen DSL. Gebruikt manifests voor systeemconfiguraties. Sterk in grote enterprise-omgevingen.
Chef : Ruby-gebaseerde configuratiebeheerder. Gebruikt recipes en cookbooks.
SaltStack : Schaalbare tool met push/pull-modellen. YAML-gebaseerde states.
Terraform : Tool voor provisioning van infrastructuur (cloud, netwerk, VM’s). Declaratief, gebruikt HCL of JSON. Werkt met o.a. AWS, Azure, GCP, VMware.

────────────────────────────────────────────
🔁 CI/CD (Continuous Integration / Continuous Deployment)
────────────────────────────────────────────
Begrip Uitleg
Continuous Integration : Automatisch bouwen, testen en valideren bij elke wijziging in de code (bijv. via GitHub Actions, Jenkins).
Continuous Deployment : Automatisch uitrollen van wijzigingen naar productie of staging zodra CI succesvol is afgerond.
Use cases : Betere codekwaliteit, snellere feedback, snellere releases, minder handwerk, consistentie.

────────────────────────────────────────────
🔀 Advanced Git Topics
────────────────────────────────────────────
Commando / Begrip Beschrijving
git merge : Combineert wijzigingen van twee branches. Creëert merge commit.
git rebase : Herschrijft commitgeschiedenis om wijzigingen "opnieuw toe te passen" bovenop een andere branch. Houdt de geschiedenis schoner.
Pull request (PR) : Aanvraag om wijzigingen samen te voegen naar een centrale branch (zoals main). Wordt vaak gecombineerd met code review en CI-tests.

────────────────────────────────────────────
✅ Samenvatting per categorie
────────────────────────────────────────────
Categorie Voorbeelden
Bestandsformaten : YAML, JSON
IaC-tools : Ansible, Puppet, Chef, Salt, Terraform
CI/CD: Automatisch testen & deployen
Geavanceerde Git : merge, rebase, pull requests