Infrastruttura come codice

Completato

Con infrastruttura come codice (IaC) si intende il processo di gestione e provisioning delle risorse dell'infrastruttura cloud tramite codice leggibile dal computer archiviato nel controllo del codice sorgente. La possibilità di gestire l'infrastruttura come qualsiasi altro codice sorgente è il motivo per cui questa procedura viene chiamata infrastruttura come codice.

IaC è un componente chiave di DevOps, perché consente l'automazione della configurazione e della distribuzione dell'infrastruttura. Questa automazione riduce il tempo e l'impegno necessari per gestire e effettuare il provisioning dell'infrastruttura, assicurando allo stesso tempo che l'infrastruttura sia configurata in modo coerente e affidabile. IaC contribuisce anche a garantire che l'infrastruttura sia sicura e conforme ai criteri dell'organizzazione.

Strumenti nativi di Azure e indipendenti dal cloud

Uno dei fattori più importanti nella scelta di uno strumento IaC è l'ambiente cloud:

  • Strumenti nativi di Azure: gli strumenti IaC, ad esempio l'interfaccia della riga di comando di Azure, Azure PowerShell e Bicep sono disponibili solo in Azure. Poiché la stessa azienda offre sia l'infrastruttura cloud che gli strumenti IaC, il vantaggio è il tempo ridotto tra il rilascio di una funzionalità del cloud e il supporto negli strumenti.

  • Strumenti indipendenti dal cloud: gli strumenti IaC come Terraform consentono di gestire l'infrastruttura come codice in ambienti cloud misti. A seconda dello strumento IaC, le nuove funzionalità di Azure rilasciate potrebbero non essere immediatamente supportate.

Strumenti IaC imperativi e dichiarativi

Esistono due tipi di strumenti di configurazione IaC:

  • Strumenti IaC imperativi: uno strumento, o un linguaggio, imperativo prevede che il codice specifichi in modo esplicito cosa fare e come. Il codice scritto esegue azioni in un ordine specifico, un passaggio alla volta, per configurare l'infrastruttura. La maggior parte degli strumenti IaC imperativi non è idempotente perché la configurazione viene eseguita passo-passo.

    Gli strumenti IaC imperativi per gestire le risorse ed effettuarne il provisioning in Azure includono:

    • L'interfaccia della riga di comando di Azure
    • Azure PowerShell
  • Strumenti IaC dichiarativi: uno strumento, o un linguaggio, dichiarativo consente di specificare il risultato desiderato anziché il modo in cui si vuole eseguire ogni passaggio. La maggior parte degli strumenti IaC dichiarativi è conforme a un modello comune. Dopo aver creato la definizione dell'infrastruttura, eseguire un comando per effettuare il provisioning di ciò che è stato definito. Gli strumenti IaC dichiarativi sono idempotenti perché la configurazione può essere applicata più volte, indipendentemente dallo stato della configurazione dell'infrastruttura. Questa capacità consente di evitare deviazioni della configurazione, ripristinando la conformità di un'infrastruttura non conforme.

    Gli strumenti IaC dichiarativi per gestire le risorse ed effettuarne il provisioning in Azure includono:

    • Bicep
    • Terraform

Consigli

  • Adottare un approccio IaC per la distribuzione, la gestione, la governance e il supporto delle distribuzioni di Azure.
  • Usare gli strumenti nativi di Azure per IaC negli scenari seguenti:
    • Si vogliono usare solo strumenti nativi di Azure. L'organizzazione ha esperienza con la distribuzione di modelli di Azure Resource Manager (modelli di ARM).
    • L'organizzazione vuole supportare immediatamente tutte le versioni di anteprima e disponibili a livello generale dei servizi di Azure.
  • Usare strumenti non nativi per IaC negli scenari seguenti:
    • L'organizzazione gestisce l'infrastruttura in ambienti cloud misti.
    • L'organizzazione non necessita del supporto immediato per tutte le versioni di anteprima e disponibili a livello generale dei servizi di Azure.