Questa pagina fornisce risposte alle domande più comuni che si incontrano quando si utilizza Terraform per gestire le risorse su Google Cloud, in particolare per quanto riguarda le interazioni con le API e l'inizio.
Iniziare a utilizzare Terraform
Questa sezione tratta i concetti fondamentali e i passaggi iniziali per i nuovi utenti di Terraform.
Che cos'è Infrastructure as Code (IaC) e perché dovrei utilizzare Terraform?
Infrastructure as Code (IaC) è la pratica di gestire ed eseguire il provisioning dell'infrastruttura di computing tramite file di definizione leggibili dalla macchina. Per una panoramica completa dei concetti e dei vantaggi di IaC, consulta Che cos'è Infrastructure as Code?.
Terraform è uno strumento IaC open source utilizzato per definire, eseguire il provisioning e gestire le risorse cloud e on-premise. Per scoprire i vantaggi dell'utilizzo di Terraform per il flusso di lavoro IaC, consulta i Vantaggi dell'utilizzo di Terraform.
Come faccio a installare Terraform ed eseguire la mia prima configurazione?
Per iniziare a utilizzare Terraform, devi prima scaricare e installare Terraform CLI sulla tua macchina locale. Le istruzioni sono disponibili sul
sito web
di HashiCorp Terraform. Dopo l'installazione, puoi creare un file di configurazione Terraform, definire una risorsa (ad esempio un bucket Cloud Storage), quindi utilizzare terraform init per inizializzare la directory di lavoro, terraform plan per visualizzare l'anteprima delle modifiche e terraform apply per applicarle.
Che cos'è HashiCorp Configuration Language (HCL) e dove posso imparare la sua sintassi?
HashiCorp Configuration Language (HCL) è il linguaggio di configurazione utilizzato da Terraform. È progettato per essere leggibile dalle persone e dalle macchine, per una scrittura e una comprensione chiare ed efficienti delle definizioni dell'infrastruttura. HCL supporta varie funzionalità come variabili, espressioni, funzioni e moduli. Puoi imparare la sintassi HCL tramite la documentazione ufficiale di HashiCorp Terraform , che fornisce guide ed esempi completi.
Dove posso trovare esempi di configurazioni Terraform per le Google Cloud risorse?
Puoi trovare numerosi esempi di configurazioni Terraform per Google Cloud:
HashiCorp Terraform Registry: il registro Terraform ufficiale per il Google Cloud provider contiene documentazione ed esempi per ogni risorsa e origine dati.
Google Cloud Esempi di Terraform: Google fornisce una varietà di esempi di Terraform che mostrano come eseguire il deployment e gestire le risorse comuni Google Cloud
Repository GitHub: molti repository open source, inclusa l'organizzazione GitHub
terraform-google-modules, offrono esempi e moduli riutilizzabili.
Come posso gestire e testare configurazioni Terraform complesse, soprattutto quando si tratta di molte risorse?
Per le configurazioni complesse, valuta la possibilità di utilizzare le funzionalità di Terraform progettate per la scalabilità e la manutenibilità:
Moduli: incapsula e riutilizza i pattern di infrastruttura comuni.
Workspace: gestisci più istanze distinte di una singola configurazione.
terraform planeterraform validate: utilizza spesso questi comandi per convalidare la sintassi e visualizzare l'anteprima delle modifiche senza il deployment effettivo.Targeting delle risorse (da utilizzare con cautela): per testare parti specifiche, puoi utilizzare temporaneamente
-targetconterraform applyoterraform destroy, anche se in genere questa operazione è sconsigliata per le operazioni di routine a causa della complessità della gestione dello stato.Ambienti dedicati: esegui il deployment negli ambienti di sviluppo o di gestione temporanea per i test prima della produzione.
Google Cloud Domande sull'API
Queste domande riguardano le richieste comuni relative all'interazione di Terraform con Google Cloud le API, incluse le API pubbliche e private.
Posso utilizzare Terraform per gestire o importare API interne o private Google Cloud come dataproc-control.googleapis.com?
No. Le API interne o private Google Cloud fanno parte della Service Infrastructure gestita di Google e non sono esposte per la gestione, l'abilitazione, o l'importazione dirette dei clienti tramite Terraform. Queste API vengono gestite automaticamente da Google Cloud. Se tenti di gestirle direttamente con Terraform, si verificheranno errori.
Per una spiegazione completa, consulta la guida Comprendere Google Cloud le API e Terraform.
Qual è la differenza tra abilitare un'API e importare una risorsa in Terraform?
Abilitare un'API: significa attivare un servizio specifico Google Cloud per il tuo progetto e concedere a quest'ultimo le autorizzazioni necessarie per utilizzare il servizio. Quando utilizzi Terraform su Google Cloud, questa operazione viene in genere eseguita utilizzando la risorsa
google_project_service. Questo è un prerequisito per la creazione di risorse che si basano su questa API.Importare una risorsa: si riferisce all'inserimento di una risorsa Google Cloud esistente (ad esempio, un'istanza Compute Engine, un bucket Cloud Storage) creata al di fuori di Terraform nella gestione di Terraform. Importi risorse, non le API stesse.
Per maggiori dettagli, consulta la guida Comprendere Google Cloud le API e Terraform Guide.
Cosa succede se non gestisco o importo esplicitamente dataproc-control.googleapis.com? Influirà sulla mia capacità di utilizzare Managed Service for Apache Spark?
No, non influirà sulla tua capacità di utilizzare Managed Service for Apache Spark. dataproc-control.googleapis.com è un'API interna utilizzata da Managed Service for Apache Spark per il proprio controllo operativo. La sua funzionalità viene gestita automaticamente da
Google Cloude non richiede l'abilitazione, l'importazione o la gestione esplicita
da parte tua tramite Terraform. I cluster e i job di Managed Service for Apache Spark funzioneranno correttamente senza alcun intervento manuale per quanto riguarda questa API interna.
Come faccio a risolvere gli errori 403 Autorizzazione negata in Terraform?
403 Permission Denied errori in genere indicano che il account di servizio o
le credenziali utente utilizzate da Terraform non dispongono delle autorizzazioni IAM necessarie per
eseguire un'azione richiesta su una Google Cloud risorsa specifica. Per risolvere il problema:
Identifica la risorsa e il metodo API interessati: il messaggio di errore in genere specifica il tipo di risorsa e la chiamata API non riuscita.
Controlla i ruoli IAM: verifica che all'entità (account di servizio o utente) siano assegnati i ruoli IAM corretti al livello appropriato (progetto, cartella, organizzazione o risorsa). Utilizza lo strumento per la risoluzione dei problemi IAM in the Google Cloud console.
Verifica l'abilitazione del servizio: conferma che il servizio Google Cloud API richiesto sia abilitato per il tuo progetto (ad esempio, utilizzando
gcloud services enableogoogle_project_service).Rivedi le policy dell'organizzazione: verifica se sono presenti policy dell'organizzazione che limitano l'azione.
Perché si verificano errori relativi alle quote (429 Troppe richieste o 403 Quota superata)?
Gli errori di quota si verificano quando il progetto tenta di utilizzare più risorse o di effettuare più richieste API di quelle consentite dalle quote attuali. Per risolvere questo problema:
Identifica la quota specifica: il messaggio di errore in genere specifica l'API e il limite di quota superato.
Controlla le quote attuali: visita la pagina Quote nella Google Cloud console per visualizzare l'utilizzo e i limiti attuali.
Richiedi un aumento della quota: se hai bisogno di più capacità, puoi richiedere un aumento della quota direttamente dalla pagina Quote.
Valuta la possibilità di utilizzare
user_project_override: per alcune risorse, se il progetto delle credenziali è diverso dal progetto della risorsa, le richieste API potrebbero essere fatturate in base alla quota del progetto delle credenziali. L'utilizzo diuser_project_override(vedi Riferimento del provider) a volte può risolvere il problema forzando la fatturazione della quota al progetto della risorsa.
Che cos'è un account di servizio predefinito gestito dall'utente e come posso gestirne le autorizzazioni con Terraform?
Alcuni Google Cloud servizi creano automaticamente service account gestiti dall'utente
(spesso chiamati service account predefiniti) quando viene creato un progetto o viene abilitato un
servizio. In genere hanno autorizzazioni ampie. Sebbene siano gestiti dall'utente, vengono creati da Google. Puoi gestirne le autorizzazioni utilizzando le risorse IAM come google_project_iam_member per modificarne i ruoli. Se vuoi intraprendere azioni sui service account predefiniti stessi, ad esempio rimuovere i ruoli predefiniti con privilegi elevati o eliminare completamente gli account, puoi utilizzare la risorsa google_project_default_service_accounts.
Google fornisce anche indicazioni sui tipi di service account di servizio predefiniti.
Che cos'è un account di servizio gestito da Google e come faccio a farvi riferimento nelle configurazioni Terraform?
I service account gestiti da Google vengono creati e gestiti completamente da Google per determinati servizi. Esistono al di fuori dei progetti utente e non sono configurabili direttamente dagli utenti nello stesso modo dei service account gestiti dall'utente. Tuttavia, potrebbe essere necessario concedere loro le autorizzazioni IAM per interagire con le tue risorse. Puoi fare riferimento all'indirizzo email di un service account gestito da Google per un servizio specifico utilizzando l'origine dati o la risorsa google_project_service_identity in Terraform per applicare poi le policy IAM. Ad esempio, questa operazione è comune per servizi come Cloud Build o Managed Service for Apache Airflow.
Cosa succede quando eseguo terraform destroy su una risorsa con disable_on_destroy configurato?
L'argomento disable_on_destroy in google_project_service e in alcune altre risorse (ad esempio, google_storage_bucket) controlla se la risorsa cloud sottostante viene disabilitata o eliminata quando la risorsa Terraform viene eliminata.
Se
disable_on_destroyètrue(o non impostato, poiché spesso è il valore predefinito),terraform destroytenterà di disabilitare (per le API) o eliminare (per i bucket) la risorsa cloud corrispondente.Se
disable_on_destroyèfalse,terraform destroyrimuoverà la risorsa dallo stato di Terraform, ma lascerà intatta la risorsa cloud effettiva (ad esempio, l'API abilitata o il bucket) nel tuo Google Cloud progetto. Questa opzione è spesso preferita per i servizi critici che non devono essere disabilitati o eliminati accidentalmente.