Infrastructure as Code (IaC) è un approccio per la fornitura automatizzata di infrastrutture IT. Non è configurato manualmente, ma programmato come un software.
Il termine Infrastructure as Code esprime già l'essenza: L'infrastruttura non è intesa come un costrutto più o meno complesso assemblato da componenti hardware e software, ma è trattata come una pura architettura software. La potenza di calcolo, lo stoccaggio e le risorse di rete sono forniti automaticamente con i parametri desiderati tramite codice leggibile dalla macchina. A questo scopo, i singoli componenti dell'ambiente IT sono descritti e le loro dipendenze con l'aiuto di modelli, in modo che siano configurati secondo le specifiche senza intervento manuale. L'infrastruttura è quindi programmata come un software invece di essere implementata in modo classico.
Questo approccio non solo offre il vantaggio di una maggiore velocità rispetto all'integrazione convenzionale del sistema. Una volta creati, i modelli possono anche essere riutilizzati tutte le volte che si vuole e portano sempre allo stesso stato di destinazione. Gli standard definiti per la conformità e la sicurezza sono rispettati in modo affidabile. Inoltre, gli errori accidentali, che a volte possono verificarsi con la configurazione manuale, sono praticamente eliminati. Poiché lo sviluppo dell'infrastruttura è simile allo sviluppo del software, le procedure che si sono dimostrate lì, come i test e il controllo delle versioni, possono essere applicate anche all'IaC. Questo significa che le modifiche ai modelli possono essere tracciate senza soluzione di continuità e facilmente invertite se necessario.
Radici nella gestione della configurazione
IaC è spesso usato per costruire e gestire architetture cloud. L'approccio è anche usato in scenari DevOps per automatizzare il provisioning di ambienti specifici per lo sviluppo, il test, la messa in scena e la produzione. Storicamente, tuttavia, l'approccio risale a molto tempo fa, prima della comparsa del cloud. Le sue radici tecnologiche si trovano nella gestione della configurazione. Il primo strumento IaC fu il prodotto open-source CFEngine, che fu introdotto già nel 1993 e fu usato per configurare i server Unix. Strumenti più recenti come Puppet, Chef, Saltstack o Ansible sono stati sviluppati per configurare automaticamente i server. Sono emersi tra il 2005 e il 2012 come progetti open source sostenuti da aziende commerciali. Ansible è stato rilevato da Red Hat nel 2015, Chef e Salt da Progress e VMware nel 2020.
In linea di principio, gli strumenti si basano su una sintassi del linguaggio che definisce lo stato dei server, che può poi essere assegnato a qualsiasi numero di macchine. Alcune soluzioni seguono un approccio dichiarativo, in cui lo stato di configurazione desiderato è descritto e realizzato dal software, mentre altre adottano un approccio istruttivo e specificano i singoli passi di comando.
Dalla configurazione all'orchestrazione
Gli strumenti di orchestrazione, che automatizzano la fornitura di stack di infrastrutture (server, storage, rete, firewall, load balancer, database, ecc. Coordinano l'interazione tra i gruppi del sistema. Gli strumenti di configurazione hanno anche funzioni di orchestrazione in una certa misura. In pratica, entrambi i tipi di strumenti sono spesso usati insieme. Una soluzione di orchestrazione comune è il prodotto open-source Terraform, dietro il quale si trova la società Hashicorp. Con AWS Cloudformation, Azure Resource Manager e Google Cloud Deployment Manager, gli hyperscaler offrono strumenti comparabili, ma il loro uso è limitato ad ambienti specifici del provider. Per gestire scenari ibridi o multi-cloud, gli utenti dipendono da soluzioni indipendenti come Terraform.