L'Infrastructure as Code (IaC) è il processo di provisioning e gestione dell'infrastruttura delle applicazioni software utilizzando codice anziché interfacce utente grafiche o script a riga di comando.
Il provisioning dell'infrastruttura delle applicazioni prevede in genere la configurazione e la gestione di macchine virtuali, connessioni al database, archiviazione e altri elementi dell'infrastruttura. La gestione manuale di questa infrastruttura è lunga e soggetta a errori, soprattutto quando si gestiscono applicazioni su larga scala.
IaC ti consente di definire l'infrastruttura con file di configurazione, che ti consentono di crearla, modificarla e gestirla in modo sicuro e ripetibile. Puoi definire configurazioni delle risorse di cui puoi creare una versione, riutilizzare e condividere. La IaC ti consente di specificare lo stato desiderato della tua infrastruttura. Puoi quindi eseguire il deployment della stessa configurazione più volte per creare ambienti di sviluppo, test e produzione riproducibili.
L'IaC ti consente di trattare il provisioning e la configurazione dell'infrastruttura nello stesso modo in cui gestisci il codice dell'applicazione. Puoi memorizzare la logica di configurazione del provisioning nel controllo del codice sorgente e sfruttare le pipeline di integrazione e deployment continui (CI/CD).
Vantaggi dell'IaC
L'utilizzo dell'IaC per configurare e gestire l'infrastruttura delle applicazioni è una best practice per una serie di casi d'uso comuni. Google gestisce i propri sistemi con IaC e lo ha stabilito come pratica standard interna.
L'IaC offre i seguenti vantaggi:
- Puoi definire l'infrastruttura in base ai tuoi requisiti e riutilizzare la stessa configurazione per creare più ambienti in modo coerente.
- Puoi automatizzare la creazione e la gestione delle risorse cloud, incluso per gli ambienti di test e di deployment.
- Puoi trattare le modifiche dell'infrastruttura come le modifiche dell'applicazione. Ad esempio, puoi assicurarti che le modifiche alla configurazione vengano esaminate e convalidate automaticamente. La gestione degli ambienti di produzione tramite processi controllati tramite modifiche che utilizzano l'IaC è una best practice.
- Puoi conservare una cronologia di tutte le modifiche alla configurazione. Le modifiche possono essere controllate e annullate.
- Puoi avere un'unica fonte attendibile per la tua infrastruttura cloud.
Strumenti IaC per Google Cloud
Google Cloud è integrato perfettamente con molti strumenti IaC. Scegli uno dei seguenti strumenti in base al tuo caso d'uso:
Terraform
In generale, per configurare e gestire l'infrastruttura Google Cloud utilizzando il codice, utilizza il provider Terraform per Google Cloud.
HashiCorp Terraform è uno strumento IaC che consente di definire le risorse in cloud e on-premise in file di configurazione leggibili da persone che puoi versionare, riutilizzare e condividere. Puoi quindi utilizzare un flusso di lavoro coerente per eseguire il provisioning e gestire tutta l'infrastruttura durante il suo ciclo di vita. Per ulteriori informazioni, consulta la panoramica di Terraform su Google Cloud.
Infrastructure Manager
Se vuoi automatizzare il deployment della configurazione Terraform, utilizza Infrastructure Manager (Infra Manager).
Infra Manager automatizza il deployment e la gestione delle risorse dell'infrastruttura Google Cloud utilizzando Terraform. Infra Manager ti consente di eseguire il deployment in modo programmatico su Google Cloud, il che ti consente di utilizzare questo servizio anziché gestire una toolchain diversa per lavorare con Terraform su Google Cloud. Per ulteriori informazioni, consulta la panoramica di Infra Manager.
Terraform Cloud e Terraform Enterprise
Se hai bisogno di una gestione completa delle modifiche con Terraform nell'intera organizzazione, utilizza Terraform Cloud o Terraform Enterprise.
Terraform Cloud è un'applicazione Software as a Service (SaaS) che esegue Terraform in un ambiente remoto stabile e archivia in modo sicuro stato e segreti. Terraform Cloud si integra anche con la CLI Terraform e si connette a sistemi di controllo della versione (VCS) comuni come GitHub, GitLab e Bitbucket. Quando colleghi un'area di lavoro Terraform Cloud a un repository VCS, i nuovi commit e le nuove modifiche possono attivare automaticamente i piani Terraform. Terraform Cloud offre anche un'API, che ti consente di integrarlo nei flussi di lavoro esistenti.
Terraform Enterprise ti consente di configurare una distribuzione self-hosted di Terraform Cloud. Offre limiti di risorse personalizzabili ed è ideale per le organizzazioni con requisiti rigorosi di sicurezza e conformità.
Per ulteriori informazioni, consulta la pagina Versioni di Terraform nella documentazione di Hashicorp.
Cloud Development Kit per Terraform
Se vuoi generare l'infrastruttura con un linguaggio di programmazione generico anziché utilizzare HashiCorp Configuration Language (HCL), utilizza Cloud Development Kit for Terraform (CDKTF).
CDKTF ti consente di configurare Terraform utilizzando un linguaggio di programmazione per definire e eseguire il provisioning dell'infrastruttura Google Cloud e di utilizzare la tua toolchain esistente per processi come test e gestione delle dipendenze.
Pulumi
Pulumi è un altro strumento che puoi utilizzare per eseguire il provisioning dell'infrastruttura utilizzando i linguaggi di programmazione. Puoi utilizzare il provider Google Cloud per Pulumi per scrivere codice di infrastruttura utilizzando linguaggi di programmazione come TypeScript, Python, Go, C#, Java o YAML.
Config Controller e Config Connector
Per gestire le risorse Google Cloud tramite Kubernetes, utilizza Config Controller e Config Connector.
Config Controller e Config Connector ti consentono di configurare servizi e risorse Google Cloud utilizzando gli strumenti Kubernetes. Puoi utilizzare strumenti GitOps come Config Sync e API Kubernetes, nonché configurare e utilizzare primitive di progettazione della piattaforma come webhook e operatori di ammissione.
Per ulteriori informazioni, consulta la Panoramica di Config Controller e la Panoramica di Config Connector.
Crossplane
Un'altra opzione per gestire le risorse Google Cloud tramite Kubernetes è utilizzare Crossplane.
Crossplane connette il cluster Kubernetes a risorse esterne non Kubernetes e consente ai team della piattaforma di creare API Kubernetes personalizzate per utilizzare queste risorse. Crossplane agisce come controller Kubernetes per monitorare lo stato delle risorse esterne e applicare lo stato. Con Crossplane installato in un cluster Kubernetes, gli utenti comunicano solo con Kubernetes. Crossplane gestisce la comunicazione con risorse esterne come Google Cloud. Se qualcosa modifica o elimina una risorsa al di fuori di Kubernetes, Crossplane annulla la modifica o ricrea la risorsa eliminata.
Per ulteriori informazioni, consulta la documentazione di Crossplane.
Ansible
Se vuoi automatizzare il provisioning, la gestione della configurazione, il deployment delle applicazioni, l'orchestrazione e altre procedure IT, utilizza Ansible. Per ulteriori informazioni, consulta Ansible per Google Cloud.
Passaggi successivi
- Scopri di più su Terraform
- Scopri come creare un server web di base su Compute Engine utilizzando Terraform
- Scopri come archiviare lo stato di Terraform in un bucket Cloud Storage