Utilizza 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:

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

  • 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, configurare un progetto Google Cloud e una completamente gestito di Google Cloud. Questa sezione descrive anche come attivare l'API Vertex AI, utilizzata da Terraform per interagire con le risorse del 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

Ruoli obbligatori

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

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

  • Amministratore Notebooks (roles/notebooks.admin) per creare ed eliminare 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 la tua istanza di blocchi note gestiti dall'utente utilizza l'account di servizio predefinito di Compute Engine.
  • consumer di Service Usage (roles/serviceusage.serviceUsageConsumer) per l'ispezione degli stati dei servizi e delle operazioni e l'utilizzo di quota e fatturazione per le risorse di progetto.

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

L'amministratore potrebbe anche essere in grado di fornire il tuo account utente le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.

Crea la struttura delle cartelle e il file di configurazione di 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 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 pulsante 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 di 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. Vedi 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 di Terraform

  1. Per aprire il terminale Cloud Shell, nella barra degli strumenti della Nell'editor di Cloud Shell, fai clic su Apri terminale.

  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. Le seguenti l'output visualizzato:

    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 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. Per impostazione predefinita, Cloud Shell utilizza le credenziali dell'utente 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 specificata.

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 gestita 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 specificata.

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

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

Visualizzare l'istanza di notebook gestita dall'utente

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

Vai a Blocchi note gestiti dall'utente

Il nuovo notebook denominato "notebooks-instance-basic" viene visualizzato nella tabella. Tieni presente che potrebbero essere necessari alcuni minuti per il provisioning della nuova istanza di notebook gestita dall'utente dopo l'esecuzione di terraform apply.

Pulizia del progetto

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

  1. Nel terminale Cloud Shell, esegui il seguente 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 che hai specificato.

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

  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 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 Explorer e poi 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 utilizzare Terraform anche nei seguenti modi:

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

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

Passaggi successivi