Panoramica
Con Infrastructure as Code (IaC) intendiamo un approccio alla gestione e al provisioning dell'infrastruttura che avviene tramite codice anziché con processi manuali.
I file di configurazione creati con l'IaC contengono le specifiche dell'infrastruttura e semplificano la modifica e la distribuzione delle configurazioni. Questa soluzione garantisce la ripetibilità del provisioning dello stesso ambiente. Codificando e documentando le specifiche della configurazione, l'IaC facilita la gestione della configurazione e permette di evitare eventuali modifiche ad-hoc non documentate.
Per l'approccio IaC il controllo versione è un aspetto cruciale e i file di configurazione dovrebbero essere sottoposti al controllo della sorgente come qualsiasi altro file di codice sorgente del software. Implementare l'infrastruttura in forma di codice permette la suddivisione in componenti modulari che, attraverso l'automazione, possono essere combinati in modi diversi.
Automatizzare il provisioning dell'infrastruttura con l'IaC alleggerisce il carico sugli sviluppatori, che non devono più svolgere manualmente le attività di provisioning e gestione di server, sistemi operativi, storage e altri componenti dell'infrastruttura ogni volta che sviluppano o distribuiscono un'applicazione. Codificare l'infrastruttura permette di creare un modello di provisioning ripetibile, grazie al quale si è liberi di scegliere se continuare a eseguire il provisioning manualmente oppure velocizzarlo affidandosi a uno strumento di automazione come Red Hat® Ansible® Automation Platform.
Un confronto tra approcci dichiarativi e imperativi all'IaC
Esaminiamo le differenze tra le due modalità di approccio all'IaC.
Un approccio dichiarativo definisce lo stato desiderato del sistema, ovvero le risorse necessarie e le proprietà che queste devono avere; l'esecuzione di questa configurazione è affidata a un apposito strumento IaC.
Questo approccio semplifica la gestione dell'arresto dell'infrastruttura grazie all'impiego di un elenco dello stato effettivo degli oggetti di sistema.
Un approccio imperativo, invece, definisce i comandi specifici necessari per ottenere la configurazione desiderata; questi comandi dovranno essere eseguiti nella sequenza corretta.
Molti strumenti IaC utilizzano un approccio dichiarativo ed eseguono automaticamente il provisioning dell'infrastruttura desiderata. Qualora sia necessario modificare lo stato desiderato, uno strumento IaC dichiarativo applicherà le modifiche. Uno strumento imperativo richiede invece all'utente di strutturare l'applicazione delle modifiche.
Gli strumenti IaC possono in genere operare su entrambi gli approcci, ma tendono a preferire un approccio all'altro.
Risorse da Red Hat
I vantaggi dell'approccio Infrastructure as Code
Il provisioning dell'infrastruttura è da sempre un processo manuale, lungo e costoso. Oggi la gestione dell'infrastruttura non avviene più a livello di hardware fisico ma si sposta nei datacenter (che possono tuttora essere un componente dell'organizzazione), alla virtualizzazione, ai container e al cloud computing.
L'avvento del cloud computing ha generato una crescita del numero dei componenti dell'infrastruttura e del numero di applicazioni rilasciate in produzione ogni giorno, due fattori che rendono necessario attivare, potenziare e arrestare frequentemente l'infrastruttura. Di conseguenza, senza una strategia IaC adeguata, gestire la scalabilità dell'infrastruttura odierna è sempre più difficile.
L'approccio IaC aiuta la tua organizzazione a gestire le richieste dell'infrastruttura IT, offrendo coerenza e riducendo al tempo stesso gli errori e le configurazioni manuali.
Vantaggi
- Riduzione dei costi
- Accelerazione dei deployment
- Riduzione degli errori
- Infrastruttura più coerente
- Eliminazione degli errori di configurazione
Estendi la strategia Infrastructure as Code alle attività di manutenzione
Le aziende scelgono di introdurre la strategia Infrastructure as Code (IaC) per ottenere processi IT completamente automatizzati, qualunque sia la fase del ciclo di vita operativo. IaC permette di standardizzare la creazione, il provisioning e il deployment dell'infrastruttura. Allo stesso modo, i team IT possono adottare l'approccio Operations as Code (OaC) per codificare la gestione e la manutenzione dei sistemi dopo averli distribuiti. La metodologia OaC può essere ulteriormente ampliata se coniugata all'approccio Policy as Code (PaC) per l'automazione dei processi relativi a governance, rischio e conformità delle applicazioni e delle soluzioni.
Sfruttando l'esperienza ottenuta con l'automazione di IaC, i team IT possono applicare gli stessi metodi e strumenti per ottenere un approccio più efficiente e adattabile alle operazioni tramite il ciclo di vita di sviluppo.
Gli strumenti IaC
Gli strumenti di automazione dei server e di gestione della configurazione sono spesso alla base dell'infrastruttura IaC. Esistono anche soluzioni specifiche per l'IaC.
Di seguito un elenco delle scelte più diffuse:
- Chef
- Puppet
- Red Hat Ansible Automation Platform
- Saltstack
- Terraform
- AWS CloudFormation
È possibile utilizzare Ansible Automation Platform anche per il provisioning dei sistemi operativi e dei dispositivi di rete, il deployment delle applicazioni e la gestione delle configurazioni.
IaC e DevOps
L'IaC gioca un ruolo fondamentale nell'adozione della metodologia DevOps e della pipeline di integrazione e distribuzione continue (CI/CD). Evita la maggior parte del lavoro di provisioning agli sviluppatori, ai quali basterà eseguire uno script per rendere operativa la loro infrastruttura.
In questo modo i deployment applicativi non sono vincolati alla disponibilità dell'infrastruttura e gli amministratori di sistema non devono gestire processi manuali ripetitivi.
Il metodo CI/CD introduce l'automazione costante e il monitoraggio continuo in tutto il ciclo di vita delle applicazioni, dalle fasi di integrazione e test a quelle di distribuzione e deployment.
Affinché un ambiente possa essere automatizzato deve essere coerente. L'automazione del deployment nelle applicazioni non può funzionare se i team di sviluppo e quelli operativi distribuiscono le applicazioni o configurano gli ambienti con modalità differenti.
L'allineamento dei due team mediante un approccio DevOps riduce il numero di errori, incoerenze e deployment manuali.
IaC facilita il raggiungimento di questo risultato consentendo a entrambi i team di usare la stessa descrizione per il deployment dell'applicazione, promuovendo così un approccio DevOps.
È importante che lo stesso processo di deployment sia applicato in ogni ambiente, anche in quello di produzione. Ogni utilizzo di IaC genera lo stesso ambiente.
L'approccio IaC evita anche di dover gestire singoli ambienti con configurazioni esclusive che non possono essere riprodotte automaticamente e garantisce anche la coerenza dell'ambiente di produzione.
In IaC le procedure migliori della metodologia DevOps vengono applicate anche all'infrastruttura, che può attenersi alla stessa pipeline CI/CD utilizzata dalle applicazioni durante lo sviluppo software, applicando gli stessi processi di test e controllo della versione al codice dell'infrastruttura.
Perché scegliere Red Hat per l'automazione
La creazione di un approccio all'automazione esteso all'intero ambiente enterprise permette di automatizzare non solo i processi IT, ma anche le tecnologie, i team e l'organizzazione nel suo complesso.
Red Hat® Ansible® Automation Platform include tutti gli strumenti necessari per adottare l'automazione nell'intera azienda, inclusi i playbook, una soluzione guidata dagli eventi, una dashboard visiva e gli strumenti di analisi, e si serve di webhook per automatizzare i flussi di lavoro IaC e per abilitare le pratiche GitOps.
Gli Ansible Playbook, scritti in linguaggio YAML, descrivono la condizione target dei sistemi, controllati in genere dal codice sorgente, mentre Ansible Automation Platform si occupa di portare i sistemi nella condizione target, indipendentemente da quella in cui si trovano.
La piattaforma rende affidabili e ripetibili le installazioni, gli aggiornamenti e le attività quotidiane.
Con la giusta soluzione di automazione, le organizzazioni possono accelerare il deployment di nuovi servizi e applicazioni, gestire l'infrastruttura IT in modo più efficiente e incrementare la produttività delle attività di sviluppo applicativo.
Il blog ufficiale di Red Hat
Leggi gli articoli del blog di Red Hat per scoprire novità e consigli utili sulle nostre tecnologie, e avere aggiornamenti sul nostro ecosistema di clienti, partner e community.