Test-Driven Infrastructure with Ansible
Abstract
Spesso si parla di “Pipeline as Code” e “Infrastructure as Code”… ma cosa significa davvero? Come si mettono in pratica questi concetti? Basta prendere gli script di configurazione e deploy e salvarli in un repository?
No, non può essere solo questo.
Se usiamo un tool come Ansible per gestire l’infrastruttura, scrivere template (Jinja2), definire variabili (YAML) e creare playbook dichiarativi, stiamo a tutti gli effetti scrivendo software usando un DSL.
Se si tratta di software, va trattato come tale! Possiamo applicare i principi dell’eXtreme Programming e della Software Craftsmanship: adottare un branching model, usare linter e analisi statica, scrivere unit e integration test, e persino fare TDD (Test-Driven Development) grazie a strumenti come Molecule e Testinfra.
In questo talk vediamo come trasformare l’automazione dell’infrastruttura in un vero e proprio prodotto software, verificabile attraverso una pipeline di build e delivery affidabile e ripetibile.
Cosa hanno imparato i partecipanti
In questo intervento abbiamo esplorato come cambiare mentalità nel modo di gestire l’infrastruttura, passando dalla semplice automazione alla creazione di software di alta qualità:
- Cosa significa davvero Infrastructure as Code: capire perché automatizzare non basta e come trattare l’infrastruttura come un vero e proprio prodotto software.
- Come applicare il TDD con Ansible e Molecule: utilizzare Molecule (con Docker e Testinfra) per guidare lo sviluppo dei ruoli Ansible tramite test automatici e praticare il refactoring in sicurezza.
- Come garantire la qualità e il supporto multi-OS: verificare le configurazioni su diverse distribuzioni Linux (es. CentOS e Ubuntu) garantendo ripetibilità e stabilità.
- Come integrare l’automazione in una pipeline CI/CD: strutturare build e delivery dell’infrastruttura applicando le stesse buone pratiche adottate per il codice applicativo.
Approfondimenti
Il racconto esteso del live-coding è nell’articolo Test-Driven Infrastructure.