Questa pagina fornisce risposte alle domande comuni riscontrate durante l'utilizzo di Terraform per gestire le risorse su Google Cloud, in particolare per quanto riguarda le interazioni API e le operazioni preliminari.
Introduzione a Terraform
Questa sezione tratta i concetti di base e i passaggi iniziali per i nuovi utenti di Terraform.
Che cos'è Infrastructure as Code (IaC) e perché devo utilizzare Terraform?
Infrastructure as Code (IaC) è la pratica di gestione e 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 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
l'interfaccia a riga di comando Terraform 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) e poi 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 e comprensibile sia per gli esseri umani che per le 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 consultando la documentazione ufficiale di HashiCorp Terraform, che fornisce guide ed esempi completi.
Dove posso trovare esempi di configurazioni Terraform per le risorse Google Cloud ?
Puoi trovare numerosi esempi di configurazioni Terraform per Google Cloud:
HashiCorp Terraform Registry:il registro Terraform ufficiale per il provider Google Cloud contiene documentazione ed esempi per ogni risorsa e origine dati.
Google Cloud Esempi di Terraform: Google fornisce una serie di esempi di Terraform che mostrano come eseguire il deployment e gestire 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 ho a che fare con molte risorse?
Per configurazioni complesse, valuta la possibilità di utilizzare le funzionalità di Terraform progettate per scalabilità e gestibilità:
Moduli:incapsulano e riutilizzano pattern di infrastruttura comuni.
Spazi di lavoro:gestisci più istanze distinte di una singola configurazione.
terraform plan
eterraform validate
: utilizza spesso questi comandi per convalidare la sintassi e visualizzare l'anteprima delle modifiche senza il deployment effettivo.Risorse di targeting (da utilizzare con cautela): per testare parti specifiche, puoi utilizzare temporaneamente
-target
conterraform apply
oterraform destroy
, anche se questa operazione è generalmente sconsigliata per le operazioni di routine a causa della complessità della gestione dello stato.Ambienti dedicati:esegui il deployment negli ambienti di sviluppo o 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 le APIGoogle Cloud , incluse quelle pubbliche e private.
Posso utilizzare Terraform per gestire o importare API interne o private come dataproc-control.googleapis.com
? Google Cloud
No. Le API interne o private Google Cloud fanno parte dell'Service Infrastructure gestita di Google e non sono esposte per la gestione, l'attivazione o l'importazione dirette da parte dei clienti utilizzando Terraform. Queste API vengono gestite automaticamente da Google Cloud. Se provi a gestirli direttamente con Terraform, si verificheranno errori.
Per una spiegazione completa, consulta la guida Understanding Google Cloud APIs and Terraform.
Qual è la differenza tra attivare un'API e importare una risorsa in Terraform?
Abilitazione di 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.Importazione di una risorsa: si riferisce all'importazione di una risorsa esistente Google Cloud (ad esempio, un'istanza Compute Engine, un bucket Cloud Storage) creata al di fuori di Terraform nella gestione di Terraform. Importi le risorse, non le API stesse.
Per maggiori dettagli, consulta la Guida all'utilizzo delle API Google Cloud e di Terraform.
Cosa succede se non gestisco o importo esplicitamente dataproc-control.googleapis.com? Influenzerà la mia capacità di utilizzare Dataproc?
No, non influirà sulla tua capacità di utilizzare
Dataproc. dataproc-control.googleapis.com
è un'API interna utilizzata da Dataproc
per il proprio controllo operativo. La sua funzionalità è gestita automaticamente da
Google Cloude non richiede l'attivazione, l'importazione o la gestione esplicita
da parte tua utilizzando Terraform. I tuoi cluster e job Dataproc funzioneranno correttamente
senza alcun intervento manuale in merito a questa API interna.
Come faccio a risolvere gli errori 403 Permission Denied in Terraform?
Gli errori 403 Permission Denied
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 risorsa Google Cloud specifica. Per risolvere il problema:
Identifica la risorsa e il metodo API interessati:il messaggio di errore di solito specifica il tipo di risorsa e la chiamata API non riuscita.
Controlla i ruoli IAM:verifica che al principal (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 nella console Google Cloud .
Verifica l'abilitazione del servizio:conferma che il servizio API Google Cloud richiesto sia abilitato per il tuo progetto (ad esempio, utilizzando
gcloud services enable
ogoogle_project_service
).Rivedi le policy dell'organizzazione: verifica se alcune policy dell'organizzazione limitano l'azione.
Perché si verificano errori relativi alla quota (429 Troppe richieste o 403 Quota superata)?
Gli errori di quota si verificano quando il tuo progetto tenta di utilizzare più risorse o effettuare più richieste API di quanto consentito 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 console Google Cloud 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.
Considera
user_project_override
: per alcune risorse, se il progetto delle credenziali è diverso dal progetto delle risorse, le richieste API potrebbero essere fatturate in base alla quota del progetto delle credenziali. L'utilizzo diuser_project_override
(vedi Riferimento del fornitore) 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 servizi Google Cloud creano automaticamente service account gestiti dall'utente
(spesso chiamati service account predefiniti) quando viene creato un progetto o viene abilitato un servizio. In genere, questi hanno autorizzazioni ampie. Sebbene siano
gestiti dall'utente, vengono creati da Google. Puoi gestire le autorizzazioni
utilizzando risorse IAM come google_project_iam_member
per modificare i ruoli. Se vuoi intervenire sugli account di servizio predefiniti,
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 account di servizio predefiniti.
Che cos'è un account di servizio gestito da Google e come faccio a farvi riferimento nelle configurazioni Terraform?
Gli account di servizio gestiti da Google vengono creati e gestiti interamente da Google per
determinati servizi. Esistono al di fuori dei progetti utente e non sono direttamente
configurabili dagli utenti nello stesso modo in cui lo sono i service account gestiti dall'utente. Tuttavia, potresti dover concedere loro le autorizzazioni IAM per interagire con le tue risorse. Puoi fare riferimento all'indirizzo email di un account di servizio gestito da Google per un servizio specifico utilizzando l'origine dati o la risorsa google_project_service_identity
in Terraform per poi applicare i criteri IAM. Ad esempio,
questo è comune per servizi come Cloud Build o Cloud Composer.
Cosa succede quando terraform destroy
una risorsa per cui è stato configurato disable_on_destroy
?
L'argomento disable_on_destroy
su google_project_service
e su alcune altre
risorse (ad esempio google_storage_bucket
) controlla se la risorsa cloud
sottostante viene disattivata o eliminata quando la risorsa Terraform viene eliminata.
Se
disable_on_destroy
ètrue
(o non è impostato, come spesso accade per impostazione predefinita),terraform destroy
tenterà di disattivare (per le API) o eliminare (per i bucket) la risorsa cloud corrispondente.Se
disable_on_destroy
èfalse
,terraform destroy
rimuoverà la risorsa dallo stato Terraform, ma lascerà intatta la risorsa cloud effettiva (ad es. l'API abilitata o il bucket) nel tuo progetto Google Cloud . Questa opzione è spesso preferita per i servizi critici che non devono essere disattivati o eliminati accidentalmente.