Accedi / Registrati Account

Automazione

Cosa si intende con Infrastructure as Code (IaC)?

Jump to section

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.

Il controllo delle versioni è un aspetto importante dell'IaC e i file di configurazione dovrebbero essere sottoposti al controllo della sorgente come qualsiasi altro file di codice sorgente 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 significa esonerare gli sviluppatori dalle 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 significa creare un modello di provisioning ripetibile, un'attività che può essere eseguita manualmente ma anche velocizzata con uno strumento di automazione come Red HatAnsible AutomationPlatform

Ansible Automation Platform utilizza i playbook per descrivere lo stato desiderato dell'infrastruttura, il cui provisioning potrà quindi essere eseguito dallo strumento. Puoi utilizzare la piattaforma anche per la gestione della configurazione, in modo da mantenere lo stato desiderato dei sistemi.

 

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.

 

I vantaggi di IaC

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.

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 delle alterazioni alla configurazione
  • Esempi di 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

Scopri come utilizzare Ansible per il provisioning dei sistemi operativi e dei dispositivi di rete, il deployment delle applicazioni e la gestione delle configurazioni.

 

IaC e DevOps

IaC è un componente fondamentale per l'adozione della metodologia DevOps e della pipeline di integrazione e distribuzione continua (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.

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 di 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 ti 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 implementare l'automazione di livello enterprise, inclusi i playbook, una dashboard visiva e gli strumenti di business analytics.

I playbook Ansible, scritti in YAML, descrivono la condizione desiderata dei sistemi, in genere controllati dal codice sorgente. Red Hat Ansible Automation Platform si occupa di portare i sistemi nella condizione desiderata, qualunque sia quella corrente. 

La piattaforma rende affidabili e ripetibili le installazioni, gli aggiornamenti e le attività quotidiane.

Red Hat Ansible Automation Platform è stata nominata "leader" da Forrester Research nel report di Forrester Wave™ "Infrastructure Automation Platforms" per il terzo trimestre 2020.

Con la soluzione di automazione giusta, puoi eseguire il deployment di nuovi servizi e applicazioni più rapidamente, gestire l'infrastruttura IT in modo più efficiente e ottenere una maggiore produttività nello sviluppo delle applicazioni.

La piattaforma indispensabile per l'automazione

Red Hat Ansible Automation Platform

Una piattaforma agentless ideata per semplificare l'automazione del tuo ambiente IT in modo scalabile. Centralizza e controlla la tua infrastruttura IT con dashboard visivo, controllo degli accessi in base al ruolo e molto altro.

Scopri di più sull'automazione