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
eterraform 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.
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI API.
-
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. -
In the Google Cloud console, 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.
- Nel terminale Cloud Shell, esegui questo comando per impostare la home directory come directory attiva:
cd
- Esegui il comando seguente per creare una nuova cartella denominata
terraform
:
mkdir terraform
- Avvia l'editor di Cloud Shell.
- Nel riquadro Explorer, fai clic con il tasto destro del mouse sulla cartella
terraform
e poi su Nuovo file. - Inserisci
main.tf
come nome file e fai clic su Ok. Apri il file
main.tf
nell'editor di Cloud Shell.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.
Salva il file
main.tf
.Per aprire il terminale Cloud Shell, fai clic su Apri terminale nella barra degli strumenti dell'editor di Cloud Shell.
Nel terminale Cloud Shell, esegui questo comando per impostare la cartella
terraform
come directory di lavoro corrente:cd ~/terraform
Esegui questo comando:
terraform init
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.
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.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
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.
Digita
yes
e premi Invio. Vedrai un output simile al seguente:Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
Nel terminale Cloud Shell, esegui questo comando per impostare la cartella
terraform
come directory di lavoro corrente:cd ~/terraform
Per eliminare le risorse Vertex AI che hai creato in base alla configurazione di Terraform, esegui questo comando:
terraform destroy
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.
Digita
yes
e premi Invio. Vedrai un output simile al seguente:Destroy complete! Resources: 2 destroyed.
Per verificare che l'istanza dei blocchi note gestiti dall'utente sia stata eliminata, vai alla pagina Blocchi note gestiti dall'utente.
Per eliminare la cartella
terraform
e i relativi contenuti, fai clic con il tasto destro del mouse sulla cartellaterraform
nel riquadro Esplora risorse e poi fai clic su Elimina.Quando richiesto, fai clic su Ok per confermare.
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.
Scopri di più sulla risorsa Terraform
google_notebooks_instance
nel registro Terraform.Scopri di più sui notebook gestiti dall'utente e su Vertex AI Workbench.
Installa Terraform nell'interfaccia a riga di comando locale.
Scopri di più su Terraform sul sito web per sviluppatori di Terraform.
Consulta la documentazione sulle risorse Terraform nel registro Terraform.
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:
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
Definisci l'infrastruttura nel file di configurazione Terraform
Inizializza la directory di lavoro contenente il file di configurazione Terraform
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.
Applica le modifiche proposte nel piano di esecuzione
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:
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: