In questo tutorial imparerai a iniziare a utilizzare Terraform creando un server web di base su Compute Engine.
In questo tutorial imparerai a:
- Utilizza Terraform per creare una VM in Google Cloud.
- Avvia un server Python Flask di base.
Costi
In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.
Prima di iniziare
Preparati a iniziare il tutorial.
Seleziona o crea un progetto
-
Nella console Google Cloud , vai alla pagina di selezione del progetto.
-
Seleziona o crea un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere i ruoli.
Configurare le autorizzazioni
Assicurati di disporre delle autorizzazioni Compute Engine necessarie per il tuo account utente:
compute.instances.*compute.firewalls.*
Scopri di più su ruoli e autorizzazioni.
Abilita l'API
Abilita l'API Compute Engine, se non è già abilitata.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo dei servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.
Avvia Cloud Shell
Cloud Shell è una macchina virtuale Compute Engine.
Le credenziali di servizio associate a questa macchina virtuale sono automatiche, quindi non è necessario configurare o scaricare una chiave delaccount di serviziot.
Terraform è integrato con Cloud Shell e Cloud Shell autentica automaticamente Terraform, consentendoti di iniziare con meno configurazione.
Crea la VM Compute Engine
Innanzitutto, definisci le impostazioni della VM in un file di configurazione Terraform. Poi, esegui i comandi Terraform per creare la VM nel tuo progetto.
Crea la directory
Crea una nuova directory. Nella nuova directory, crea un file
main.tf per la configurazione di Terraform. Il contenuto di questo file
descrive tutte le risorse Google Cloud da creare nel progetto.
In Cloud Shell:
mkdir tf-tutorial && cd tf-tutorial
nano main.tf
Crea la rete e la subnet del virtual private cloud
In questa sezione, crei una rete Virtual Private Cloud (VPC) e una subnet per l'interfaccia di rete della VM.
Aggiungi le seguenti risorse Terraform al file main.tf che hai creato:
Crea la risorsa VM di Compute Engine
In questa sezione, creerai una singola istanza Compute Engine che esegue Debian. In questo tutorial utilizzi il tipo di macchina più piccolo disponibile. In un secondo momento, puoi eseguire l'upgrade a un tipo di macchina più grande.
Aggiungi la seguente risorsa Terraform google_compute_instance al file main.tf che hai creato.
Il codice campione imposta la zona Google Cloud su us-west1-a. Puoi modificarlo
e impostare una zona diversa.
Inizializza Terraform
A questo punto, puoi eseguire terraform init per aggiungere i plug-in necessari e creare la directory .terraform.
terraform init
Output:
Initializing the backend... Initializing provider plugins... ... Terraform has been successfully initialized!
Convalida la configurazione Terraform
(Facoltativo) Puoi convalidare il codice Terraform che hai creato finora. Esegui
terraform plan, che esegue le seguenti operazioni:
- Verifica che la sintassi di
main.tfsia corretta. - Mostra un'anteprima delle risorse che verranno create
terraform plan
Output:
... Plan: 1 to add, 0 to change, 0 to destroy. Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.
Applica la configurazione
Per creare la VM, esegui terraform apply.
terraform apply
Quando richiesto, inserisci yes.
Terraform chiama le API Google Cloud per configurare la nuova VM. Controlla la pagina Istanze VM per visualizzare la nuova VM.
Esegui un server web su Google Cloud
I passaggi successivi consistono nel creare un'applicazione web, eseguirne il deployment sulla VM e creare una regola firewall per consentire le richieste client all'applicazione web.
Aggiungere una regola firewall SSH personalizzata
La regola firewall default-allow-ssh nella rete default ti consente di utilizzare
SSH per connetterti alla VM. Se preferisci utilizzare una regola firewall personalizzata, puoi aggiungere la seguente risorsa alla fine del file main.tf:
Esegui terraform apply per creare la regola firewall.
Connettiti alla VM tramite SSH
A questo punto, verifica che tutto sia configurato correttamente connettendoti alla VM tramite SSH.
Vai alla pagina Istanze VM.
Trova la VM con il nome
flask-vm.Nella colonna Connetti, fai clic su SSH.
Si apre una finestra del terminale SSH nel browser per la VM in esecuzione.
Per saperne di più, vedi Connessione alle VM.
Crea l'app Flask
Per questo tutorial, crei un'app Python Flask in modo da avere un unico file che descriva il server web e gli endpoint di test.
Nel terminale SSH nel browser, crea un file denominato
app.py.nano app.py
Aggiungi quanto segue al file
app.py:from flask import Flask app = Flask(__name__) @app.route('/') def hello_cloud(): return 'Hello Cloud!' app.run(host='0.0.0.0')Corsa
app.py:python3 app.py
Flask gestisce il traffico su
localhost:5000per impostazione predefinita.Apri una seconda connessione SSH:
- Vai alla pagina Istanze VM.
- Trova la VM denominata
flask-vme fai clic su SSH.
Nella seconda connessione SSH, esegui
curlper verificare che venga restituito il messaggio di saluto che hai configurato inapp.py.curl http://0.0.0.0:5000
L'output di questo comando è
Hello Cloud.
Apri la porta 5000 sulla VM
Per connetterti al server web dal computer locale, la VM deve avere la porta 5000 aperta. Google Cloud Ti consente di aprire le porte al traffico utilizzando le regole firewall.
Aggiungi la seguente risorsa Terraform google_compute_firewall alla fine del file main.tf.
In Cloud Shell, esegui terraform apply per creare la regola firewall.
Aggiungi una variabile di output per l'URL del server web
Alla fine di
main.tf, aggiungi una variabile di output di Terraform per generare l'URL del server web:// A variable for extracting the external IP address of the VM output "Web-server-URL" { value = join("",["http://",google_compute_instance.default.network_interface.0.access_config.0.nat_ip,":5000"]) }Esegui
terraform apply.terraform apply
Quando richiesto, inserisci
yes. Terraform stampa sullo schermo l'indirizzo IP esterno e la porta 5000 della VM, come segue:Web-server-URL = "http://IP_ADDRESS:5000"
In qualsiasi momento, puoi eseguire
terraform outputper restituire questo output:terraform output
Fai clic sull'URL del passaggio precedente e visualizza il messaggio "Hello Cloud!".
Ciò significa che il server è in esecuzione.
Risoluzione dei problemi
Se un'API richiesta non è abilitata, Terraform restituisce un errore. Il messaggio di errore include un link per abilitare l'API. Dopo aver abilitato l'API, puoi eseguire di nuovo
terraform apply.Se non riesci a connetterti alla VM tramite SSH:
- Assicurati di aggiungere la regola firewall SSH.
- Assicurati che la VM includa l'argomento
tags = ["ssh"].
Esegui la pulizia
Al termine del tutorial, puoi eliminare tutto ciò che hai creato per non incorrere in ulteriori costi.
Terraform ti consente di rimuovere tutte le risorse definite nel file di configurazione eseguendo il comando terraform destroy:
terraform destroy
Inserisci yes per consentire a Terraform di eliminare le risorse.