Utilizzare Terraform per creare un'istanza di blocchi note gestiti dall'utente

In questo tutorial imparerai a creare un file di configurazione Terraform ed eseguire il provisioning di un'istanza di blocchi note gestiti dall'utente in Vertex AI in modalità Account di servizio.

Utilizza i seguenti strumenti per completare i passaggi di questo tutorial:

  • Interfaccia a riga di comando Terraform: Terraform è preinstallato in Cloud Shell. Non è necessario installare Terraform separatamente per utilizzare i comandi dell'interfaccia a riga di comando di Terraform.

  • Editor di Cloud Shell: utilizza l'editor di Cloud Shell per creare e gestire il file di configurazione Terraform e per gestire la struttura delle cartelle.

  • Terminale Cloud Shell: utilizza il terminale Cloud Shell per eseguire i seguenti comandi dell'interfaccia a riga di comando Terraform, ad esempio terraform init, terraform plan, terraform apply e terraform destroy.

Prima di iniziare

Prima di creare l'infrastruttura per le risorse Vertex AI utilizzando Terraform, configura un progetto Google Cloud e un ambiente di sviluppo. Questa sezione descrive inoltre come abilitare l'API Vertex AI, utilizzata da Terraform per interagire con le risorse nel tuo progetto.

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva l'API Vertex AI.

    Abilita l'API

  5. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Attiva l'API Vertex AI.

    Abilita l'API

Ruoli obbligatori

Se hai creato tu il progetto, disponi del ruolo IAM Proprietario (roles/owner) per il progetto, che include tutte le autorizzazioni richieste. Passa alla sezione successiva. Se non hai creato tu il progetto, continua in questa sezione.

Per assicurarti che il tuo account utente disponga delle autorizzazioni necessarie per creare un'istanza di blocchi note gestiti dall'utente di Vertex AI Workbench utilizzando Terraform, chiedi all'amministratore di concedere al tuo account utente i seguenti ruoli IAM sul progetto:

  • Amministratore blocchi note (roles/notebooks.admin) per la creazione e l'eliminazione di istanze in Vertex AI Workbench.
  • Utente account di servizio (roles/iam.serviceAccountUser) per eseguire operazioni come account di servizio. Questo tutorial non specifica un account di servizio, quindi l'istanza di blocchi note gestiti dall'utente utilizza l'account di servizio predefinito di Compute Engine.
  • Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) per ispezionare gli stati di servizio e le operazioni, nonché per utilizzare la quota e la fatturazione per le risorse del progetto.

Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

L'amministratore potrebbe anche essere in grado di concedere al tuo account utente le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Crea la struttura delle cartelle e il file di configurazione di Terraform

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  1. Nel terminale Cloud Shell, esegui questo comando per impostare la home directory come attiva:
    cd
  2. Esegui questo comando per creare una nuova cartella denominata terraform:
    mkdir terraform
  3. Avvia l'editor di Cloud Shell.
  4. Nel riquadro Explorer, fai clic con il tasto destro del mouse sulla cartella terraform, quindi fai clic su Nuovo file.
  5. Inserisci main.tf come nome file e fai clic su OK.

Definisci l'infrastruttura nel file di configurazione Terraform

  1. Apri il file main.tf nell'editor di Cloud Shell.

  2. Sostituisci i segnaposto PROJECT_NAME e LOCATION nel seguente esempio di configurazione Terraform, quindi copia l'esempio nel file main.tf:

    resource "google_project_service" "notebooks" {
      provider           = google
      service            = "notebooks.googleapis.com"
      disable_on_destroy = false
    }
    
    resource "google_notebooks_instance" "basic_instance" {
      project      = "PROJECT_ID"
      name         = "notebooks-instance-basic"
      provider     = google
      location     = "LOCATION"
      machine_type = "e2-medium"
    
      vm_image {
        project      = "deeplearning-platform-release"
        image_family = "tf-ent-2-9-cu113-notebooks"
      }
    
      depends_on = [
        google_project_service.notebooks
      ]
    }
    
    • PROJECT_ID: inserisci l'ID progetto Google Cloud.

    • LOCATION: inserisci una regione e una zona per l'istanza di blocchi note gestiti dall'utente. Ad esempio, us-west2-b. Per ottenere le migliori prestazioni di rete, seleziona la regione geograficamente più vicina a te. Consulta le località dei blocchi note gestiti dall'utente disponibili.

  3. Salva il file main.tf.

Inizializza la directory di lavoro contenente il file di configurazione Terraform

  1. Per aprire il terminale Cloud Shell, fai clic su Apri terminale sulla barra degli strumenti dell'editor di Cloud Shell.

  2. Nel terminale Cloud Shell, esegui questo comando per impostare la cartella terraform come directory di lavoro corrente:

    cd ~/terraform
    
  3. Esegui questo comando:

    terraform init
    
  4. Terraform inizializza la directory di lavoro. Viene visualizzato il seguente output:

    Terraform has been successfully initialized!
    
    You may now begin working with Terraform. Try running "terraform plan" to see
    any changes that are required for your infrastructure. All Terraform commands
    should now work.
    
    If you ever set or change modules or backend configuration for Terraform,
    rerun this command to reinitialize your working directory. If you forget, other
    commands will detect it and remind you to do so if necessary.

Visualizza l'anteprima del piano di esecuzione in base alla configurazione di Terraform

Il piano di esecuzione di Terraform indica le modifiche che Terraform intende apportare all'infrastruttura e ai servizi Vertex AI.

Esegui questo comando per visualizzare il piano di esecuzione di Terraform.

terraform plan

Se viene richiesto di autorizzare Cloud Shell, fai clic su Autorizza. Cloud Shell utilizza le credenziali dell'utente per impostazione predefinita dopo l'autorizzazione.

Verrà visualizzato un output simile al seguente:

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following
symbols:
  + create

Terraform will perform the following actions:

  # google_notebooks_instance.basic_instance will be created
  + resource "google_notebooks_instance" "basic_instance" {
      + create_time     = (known after apply)
      + id              = (known after apply)
      + labels          = (known after apply)
      + location        = "us-west2-b"
      + machine_type    = "e2-medium"
      + name            = "notebooks-instance-basic"
      + network         = (known after apply)
      + project         = "my_project"
      + proxy_uri       = (known after apply)
      + service_account = (known after apply)
      + state           = (known after apply)
      + subnet          = (known after apply)
      + update_time     = (known after apply)

      + shielded_instance_config {
          + enable_integrity_monitoring = (known after apply)
          + enable_secure_boot          = (known after apply)
          + enable_vtpm                 = (known after apply)
        }

      + vm_image {
          + image_family = "tf-ent-2-9-cu113-notebooks"
          + project      = "deeplearning-platform-release"
        }
    }

  # google_project_service.notebooks will be created
  + resource "google_project_service" "notebooks" {
      + disable_on_destroy = false
      + id                 = (known after apply)
      + project            = (known after apply)
      + service            = "notebooks.googleapis.com"
    }

Plan: 2 to add, 0 to change, 0 to destroy.
  • my_project indica l'ID progetto Google Cloud specificato.

  • us-west2-b indica la regione e la zona per l'istanza di blocchi note gestiti dall'utente che hai specificato.

Applica le modifiche proposte nel piano di esecuzione

  1. Esegui questo comando per applicare le modifiche del piano di esecuzione all'infrastruttura Vertex AI e creare l'istanza di blocchi note gestiti dall'utente:

    terraform apply
    
  2. Verrà visualizzato un output simile al seguente:

    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following
    symbols:
      + create
    
    Terraform will perform the following actions:
    
      # google_notebooks_instance.basic_instance will be created
      + resource "google_notebooks_instance" "basic_instance" {
          + create_time     = (known after apply)
          + id              = (known after apply)
          + labels          = (known after apply)
          + location        = "us-west2-b"
          + machine_type    = "e2-medium"
          + name            = "notebooks-instance-basic"
          + network         = (known after apply)
          + project         = "my_project"
          + proxy_uri       = (known after apply)
          + service_account = (known after apply)
          + state           = (known after apply)
          + subnet          = (known after apply)
          + update_time     = (known after apply)
    
          + shielded_instance_config {
              + enable_integrity_monitoring = (known after apply)
              + enable_secure_boot          = (known after apply)
              + enable_vtpm                 = (known after apply)
            }
    
          + vm_image {
              + image_family = "tf-ent-2-9-cu113-notebooks"
              + project      = "deeplearning-platform-release"
            }
        }
    
      # google_project_service.notebooks will be created
      + resource "google_project_service" "notebooks" {
          + disable_on_destroy = false
          + id                 = (known after apply)
          + project            = (known after apply)
          + service            = "notebooks.googleapis.com"
        }
    
    Plan: 2 to add, 0 to change, 0 to destroy.
    
    Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.
    
      Enter a value:
    
    • my_project indica l'ID progetto Google Cloud specificato.

    • us-west2-b indica la regione e la zona per l'istanza di blocchi note gestiti dall'utente che hai specificato.

  3. Digita yes e premi Invio. Verrà visualizzato un output simile al seguente:

    Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
    

Visualizza l'istanza di blocchi note gestiti dall'utente

Nella console Google Cloud, vai alla pagina Blocchi note gestiti dall'utente.

Vai ai blocchi note gestiti dall'utente

Il nuovo blocco note denominato "notebooks-instance-basic" viene elencato nella tabella. Tieni presente che dopo l'esecuzione di terraform apply il provisioning della nuova istanza di blocchi note gestiti dall'utente potrebbe richiedere alcuni minuti.

Pulizia del progetto

Esegui la pulizia delle risorse Google Cloud che hai creato durante questo tutorial. Segui questi passaggi per evitare che alcune risorse vengano addebitate in modo imprevisto:

  1. Nel terminale Cloud Shell, esegui questo comando per impostare la cartella terraform come directory di lavoro corrente:

    cd ~/terraform
    
  2. Per eliminare le risorse Vertex AI che hai creato in base alla tua configurazione Terraform, esegui questo comando:

    terraform destroy
    
  3. Verrà visualizzato un output simile al seguente:

    Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
      - destroy
    
    Terraform will perform the following actions:
    
      # google_notebooks_instance.basic_instance will be destroyed
      - resource "google_notebooks_instance" "basic_instance" {
          - create_time            = "2022-12-01T21:14:05.065893475Z" -> null
          - id                     = "projects/my_project/locations/us-west2-b/instances/notebooks-instance-basic" -> null
          - install_gpu_driver     = false -> null
          - labels                 = {
              - "goog-caip-notebook" = ""
            } -> null
          - location               = "us-west2-b" -> null
          - machine_type           = "e2-medium" -> null
          - name                   = "notebooks-instance-basic" -> null
          - network                = "https://www.googleapis.com/compute/v1/projects/my_project/global/networks/default" -> null
          - no_proxy_access        = false -> null
          - no_public_ip           = false -> null
          - project                = "my_project" -> null
          - service_account        = "329223940713-compute@developer.gserviceaccount.com" -> null
          - service_account_scopes = [] -> null
          - state                  = "PROVISIONING" -> null
          - subnet                 = "https://www.googleapis.com/compute/v1/projects/my_project/regions/us-west2/subnetworks/default" -> null
          - tags                   = [] -> null
          - update_time            = "2022-12-01T21:14:19.048432376Z" -> null
    
          - shielded_instance_config {
              - enable_integrity_monitoring = true -> null
              - enable_secure_boot          = false -> null
              - enable_vtpm                 = true -> null
            }
    
          - vm_image {
              - image_family = "tf-ent-2-9-cu113-notebooks" -> null
              - project      = "deeplearning-platform-release" -> null
            }
        }
    
      # google_project_service.notebooks will be destroyed
      - resource "google_project_service" "notebooks" {
          - disable_on_destroy = false -> null
          - id                 = "my_project/notebooks.googleapis.com" -> null
          - project            = "my_project" -> null
          - service            = "notebooks.googleapis.com" -> null
        }
    
    Plan: 0 to add, 0 to change, 2 to destroy.
    
    Do you really want to destroy all resources?
      Terraform will destroy all your managed infrastructure, as shown above.
      There is no undo. Only 'yes' will be accepted to confirm.
    
      Enter a value:
    
    • my_project indica l'ID progetto Google Cloud specificato.

    • us-west2-b indica la regione e la zona per l'istanza di blocchi note gestiti dall'utente che hai specificato.

  4. Digita yes e premi Invio. Verrà visualizzato un output simile al seguente:

    Destroy complete! Resources: 2 destroyed.
    
  5. Per verificare che l'istanza di blocchi note gestiti dall'utente sia stata eliminata, vai alla pagina Blocchi note gestiti dall'utente.

    Vai ai blocchi note gestiti dall'utente

  6. Avvia l'editor di Cloud Shell.

  7. Per eliminare la cartella terraform e i relativi contenuti, fai clic con il pulsante destro del mouse sulla cartella terraform nel riquadro Explorer, quindi fai clic su Elimina.

  8. Quando richiesto, fai clic su OK per confermare.

Altri modi per utilizzare Terraform in Vertex AI

Questo tutorial ti ha mostrato come utilizzare Terraform creando un solo file di configurazione e un'infrastruttura di provisioning basata su una risorsa Terraform. Puoi utilizzare Terraform anche nei seguenti modi:

  • Aggiungere più risorse Terraform allo stesso file di configurazione Terraform. Per un elenco delle risorse Terraform per Vertex AI, consulta Risorse Terraform disponibili per Vertex AI.

  • Crea una struttura di directory composta da più cartelle e file di configurazione Terraform. Ad esempio, puoi creare una cartella e un file di configurazione Terraform separati per ogni tipo di risorsa Terraform.

Passaggi successivi