Utilizzare Terraform per creare un'istanza di notebook gestiti dall'utente

In questo tutorial imparerai a creare un file di configurazione Terraform e a eseguire il provisioning di un'istanza di notebook gestiti dall'utente in Vertex AI in modalità Service Account.

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

  • CLI Terraform: Terraform è preinstallato in Cloud Shell. Non è necessario installare Terraform separatamente per utilizzare i comandi della CLI Terraform.

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

  • Terminale Cloud Shell: utilizza il terminale Cloud Shell per eseguire i seguenti comandi Terraform CLI, ad esempio terraform init, terraform plan, terraform apply e terraform destroy.

Prima di iniziare

Prima di poter creare l'infrastruttura per le risorse Vertex AI utilizzando Terraform, configura un progetto Google Cloud e un ambiente di sviluppo. Questa sezione descrive anche come attivare l'API Vertex AI, che Terraform utilizza per interagire con le risorse del tuo progetto.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Enable the API

  8. Ruoli obbligatori

    Se hai creato 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 ottenere le autorizzazioni necessarie per creare un'istanza di notebook gestiti dall'utente di Vertex AI Workbench utilizzando Terraform, chiedi all'amministratore di concederti i seguenti ruoli IAM per il progetto:

    • Amministratore notebook (roles/notebooks.admin) per la creazione ed eliminazione di istanze in Vertex AI Workbench.
    • Utente service account (roles/iam.serviceAccountUser) per l'esecuzione di operazioni come account di servizio. Questo tutorial non specifica un account di servizio, quindi l'istanza di notebook gestiti dall'utente utilizza il account di servizio predefinito di Compute Engine.
    • Consumer utilizzo servizi (roles/serviceusage.serviceUsageConsumer) per analizzare gli stati di servizio e le operazioni e utilizzare la quota e la fatturazione per le risorse del progetto.

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

    Crea la struttura delle cartelle e il file di configurazione Terraform

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    1. Nel terminale Cloud Shell, esegui questo comando per impostare la home directory come directory attiva:
      cd
    2. Esegui il comando seguente 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 e poi 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' Google Cloud ID progetto.

      • 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 posizioni 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 nella 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 l'output seguente:

      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 Terraform

    Il piano di esecuzione di Terraform indica le modifiche che Terraform prevede di 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 al momento dell'autorizzazione.

    Vedrai 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 che hai 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 il seguente comando per applicare le modifiche del piano di esecuzione all'infrastruttura Vertex AI e creare l'istanza di notebook gestiti dall'utente:

      terraform apply
      
    2. Vedrai 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 che hai 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. Vedrai un output simile al seguente:

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

    Visualizzare l'istanza di blocchi note gestiti dall'utente

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

    Vai a Blocchi note gestiti dall'utente

    Il nuovo notebook denominato "notebooks-instance-basic" viene visualizzato nell'elenco della tabella. Tieni presente che il provisioning della nuova istanza di notebook gestiti dall'utente potrebbe richiedere alcuni minuti dopo l'esecuzione di terraform apply.

    Pulizia del progetto

    Esegui la pulizia delle Google Cloud risorse che hai creato durante questo tutorial. Segui questi passaggi per evitare addebiti imprevisti da alcune risorse:

    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 configurazione di Terraform, esegui questo comando:

      terraform destroy
      
    3. Vedrai 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 che hai 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. Vedrai un output simile al seguente:

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

      Vai a 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 tasto destro del mouse sulla cartella terraform nel riquadro Esplora risorse e poi 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 ed eseguendo il provisioning dell'infrastruttura in base a una risorsa Terraform. Puoi anche utilizzare Terraform nei seguenti modi:

    • Aggiungi 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 separata e un file di configurazione Terraform per ogni tipo di risorsa Terraform.

    Passaggi successivi