Guida rapida: crea un'istanza VM utilizzando Terraform

In questa guida rapida imparerai a utilizzare Terraform per creare un'istanza di macchina virtuale (VM) Compute Engine e a connetterti a questa istanza VM.

Hashicorp Terraform è uno strumento Infrastructure as Code (IaC) che consente di eseguire il provisioning e di gestire l'infrastruttura cloud. Il provider Terraform per Google Cloud (providerGoogle Cloud ) consente di eseguire il provisioning e gestire Google Cloud l'infrastruttura.

Prima di iniziare

  1. Per utilizzare un terminale online con gcloud CLI già configurata, attiva Cloud Shell:

    Nella parte inferiore di questa pagina viene avviata una sessione di Cloud Shell e viene visualizzato un prompt della riga di comando. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Per installare Terraform CLI, segui le istruzioni di HashiCorp.

  3. Crea o seleziona 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'autorizzazione resourcemanager.projects.create. Scopri come concedere i ruoli.
    • Creare un progetto Google Cloud :

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il progetto Google Cloud che stai creando.

    • Seleziona il progetto Google Cloud che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del progetto Google Cloud .

  4. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .

  5. 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.

    gcloud services enable compute.googleapis.com
  6. Concedi ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM: roles/compute.instanceAdmin.v1

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Sostituisci quanto segue:

Prepara l'ambiente

  1. Clona il repository GitHub contenente gli esempi di Terraform:

    git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
    
  2. Vai alla directory che contiene l'esempio di guida rapida:

    cd terraform-docs-samples/compute/quickstart/create_vm
    

Rivedi i file Terraform

Esamina il file main.tf. Questo file definisce le Google Cloud risorse che vuoi creare.

cat main.tf

L'output è simile al seguente:

resource "google_compute_instance" "default" {
  name         = "my-vm"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-minimal-2210-kinetic-amd64-v20230126"
    }
  }

  network_interface {
    network = "default"
    access_config {}
  }
}

Questo file descrive la risorsa google_compute_instance, che è la risorsa Terraform per l'istanza VM Compute Engine. google_compute_instance è configurato per avere le seguenti proprietà:

  • name è impostato su my-vm.
  • machine_type è impostato su n1-standard-1.
  • zone è impostato su us-central1-a.
  • boot_disk imposta il disco di avvio per l'istanza.
  • network_interface è impostato per utilizzare la rete predefinita nel tuo Google Cloud progetto.

Crea l'istanza VM di Compute Engine

  1. In Cloud Shell, esegui questo comando per verificare che Terraform sia disponibile:

    terraform
    

    L'output dovrebbe essere simile al seguente:

    
    Usage: terraform [global options] <subcommand> [args]
    
    The available commands for execution are listed below.
    The primary workflow commands are given first, followed by
    less common or more advanced commands.
    
    Main commands:
      init          Prepare your working directory for other commands
      validate      Check whether the configuration is valid
      plan          Show changes required by the current configuration
      apply         Create or update infrastructure
      destroy       Destroy previously-created infrastructure
    
    
  2. Inizializza Terraform eseguendo il seguente comando. Questo comando prepara il workspace in modo che Terraform possa applicare la configurazione.

    terraform init
    

    L'output dovrebbe essere simile al seguente:

    
    Initializing the backend...
    
    Initializing provider plugins...
    - Finding latest version of hashicorp/google...
    - Installing hashicorp/google v5.35.0...
    - Installed hashicorp/google v5.35.0 (signed by HashiCorp)
    
    Terraform has created a lock file .terraform.lock.hcl to record the provider
    selections it made above. Include this file in your version control repository
    so that Terraform can guarantee to make the same selections by default when
    you run "terraform init" in the future.
    
    Terraform has been successfully initialized!
    
    
  3. Convalida la configurazione Terraform eseguendo il comando seguente. Questo comando esegue le seguenti azioni:

    • Verifica che la sintassi di main.tf sia corretta.
    • Mostra un'anteprima delle risorse che verranno create.
    terraform plan
    

    L'output dovrebbe essere simile al seguente:

    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.
    
  4. Applica la configurazione per eseguire il provisioning delle risorse descritte nel file main.tf:

    terraform apply
    

    Quando richiesto, inserisci yes.

    Terraform chiama le API Google Cloud per creare l'istanza VM definita nel file main.tf.

    L'output dovrebbe essere simile al seguente:

    Apply complete! Resources: 1 added, 0 changed, 0 destroyed
    

Connettiti all'istanza VM

Connettiti all'istanza VM che hai appena creato eseguendo il seguente comando:

gcloud compute ssh --zone=us-central1-a my-vm

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.

In Cloud Shell, esegui questo comando per eliminare le risorse Terraform:

terraform destroy

Quando richiesto, inserisci yes.

L'output dovrebbe essere simile al seguente:

Destroy complete! Resources: 1 destroyed.

Passaggi successivi