Condividi tramite


Che cos'è l'infrastruttura come codice (IaC)?

'infrastruttura distribuita come codice (IaC) usa la metodologia DevOps e il controllo delle versioni con un modello descrittivo per definire e distribuire l'infrastruttura, ad esempio reti, macchine virtuali, servizi di bilanciamento del carico e topologie di connessione. Proprio come lo stesso codice sorgente genera sempre lo stesso file binario, un modello IaC genera lo stesso ambiente ogni volta che distribuisce.

Diagramma dell'infrastruttura come codice che definisce l'ambiente in un file con versione.

IaC è una pratica DevOps chiave e un componente di consegna continua. Con IaC, i team DevOps possono collaborare con un set unificato di procedure e strumenti per distribuire applicazioni e l'infrastruttura di supporto in modo rapido e affidabile su larga scala.

Evitare la configurazione manuale per applicare la coerenza

IaC si è evoluto per risolvere il problema della deriva degli ambienti nelle pipeline di rilascio. Senza IaC, i team devono gestire singolarmente le impostazioni dell'ambiente di distribuzione. Nel corso del tempo, ogni ambiente diventa un "fiocco di neve", una configurazione univoca che non può essere riprodotta automaticamente. L'incoerenza tra gli ambienti può causare problemi di distribuzione. L'amministrazione e la manutenzione dell'infrastruttura comportano processi manuali soggetti a errori e difficili da tenere traccia.

IaC evita la configurazione manuale e applica la coerenza rappresentando gli stati dell'ambiente desiderati tramite codice ben documentato in formati come JSON. Le distribuzioni dell'infrastruttura con IaC sono ripetibili e impediscono problemi di runtime causati dalla deriva della configurazione o dalle dipendenze mancanti. Le pipeline di versione eseguono le descrizioni dell'ambiente e i modelli di configurazione della versione per configurare gli ambienti di destinazione. Per apportare modifiche, il team modifica la fonte, non la destinazione.

Idempotenza, la capacità di una determinata operazione di produrre sempre lo stesso risultato, è un importante principio IaC. Un comando di distribuzione imposta sempre l'ambiente di destinazione nella stessa configurazione, indipendentemente dallo stato iniziale dell'ambiente. L'idempotenza viene ottenuta configurando automaticamente la destinazione esistente o rimuovendo la destinazione esistente e ricreando un ambiente nuovo.

Strumenti utili

Distribuire rapidamente ambienti di test stabili su larga scala

IaC aiuta i team devOps a testare le applicazioni in ambienti simili alla produzione all'inizio del ciclo di sviluppo. Teams può effettuare il provisioning di più ambienti di test in modo affidabile su richiesta. Il cloud effettua dinamicamente il provisioning e smantella gli ambienti in base alle definizioni IaC. Il codice dell'infrastruttura stesso può essere convalidato e testato per evitare problemi di distribuzione comuni.

Utilizzare file di definizione dichiarativa

Se possibile, IaC deve usare file di definizione dichiarativi. Un file di definizione descrive i componenti e la configurazione richiesti da un ambiente, ma non necessariamente come ottenere tale configurazione. Ad esempio, il file potrebbe definire una versione e una configurazione del server necessarie, ma non specificare il processo di installazione e configurazione del server. Questa astrazione consente una maggiore flessibilità per l'uso di tecniche ottimizzate fornite dal provider di infrastruttura. Le definizioni dichiarative consentono anche di ridurre il debito tecnico associato al mantenimento del codice imperativo, come gli script di distribuzione, che può accumularsi nel tempo.

Non esiste una sintassi standard per IaC dichiarativo. La sintassi per descrivere IaC dipende in genere dai requisiti della piattaforma di destinazione. Piattaforme diverse supportano formati di file, ad esempio YAML, JSON e XML.

Distribuire IaC su Azure

Azure offre supporto nativo per IaC tramite il modello di Azure Resource Manager . Teams può definire modelli dichiarativi ARM usando la sintassi JSON o Bicep per specificare l'infrastruttura necessaria per distribuire soluzioni. Sono disponibili anche soluzioni di terze parti come Terraform tramite provider di Azure specifici.