Menggunakan Terraform untuk membuat instance notebook yang dikelola pengguna

Dalam tutorial ini, Anda akan mempelajari cara membuat file konfigurasi Terraform dan menyediakan instance notebook yang dikelola pengguna di Vertex AI dalam Mode akun layanan.

Gunakan alat berikut untuk menyelesaikan langkah-langkah dalam tutorial ini:

  • Terraform CLI: Terraform sudah diinstal sebelumnya di Cloud Shell. Anda tidak perlu menginstal Terraform secara terpisah untuk menggunakan perintah Terraform CLI.

  • Cloud Shell Editor: Gunakan Cloud Shell Editor untuk membuat dan mengelola file konfigurasi Terraform, serta mengelola struktur folder.

  • Terminal Cloud Shell: Gunakan terminal Cloud Shell untuk menjalankan perintah Terraform CLI berikut, seperti terraform init, terraform plan, terraform apply, dan terraform destroy.

Sebelum memulai

Sebelum Anda dapat membangun infrastruktur untuk resource Vertex AI menggunakan Terraform, siapkan project Google Cloud dan lingkungan pengembangan. Bagian ini juga menjelaskan cara mengaktifkan Vertex AI API, yang digunakan Terraform untuk berinteraksi dengan resource di project Anda.

  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. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  4. Aktifkan API Vertex AI.

    Mengaktifkan API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  7. Aktifkan API Vertex AI.

    Mengaktifkan API

Peran yang diperlukan

Jika Anda membuat project, Anda memiliki peran IAM Pemilik (roles/owner) di project tersebut, yang mencakup semua izin yang diperlukan. Lewati ke bagian berikutnya. Jika Anda tidak membuat project sendiri, lanjutkan di bagian ini.

Untuk memastikan bahwa akun pengguna Anda memiliki izin yang diperlukan untuk membuat instance notebook yang dikelola pengguna Vertex AI Workbench menggunakan Terraform, minta administrator untuk memberi akun pengguna Anda peran IAM berikut di project:

  • Admin Notebook (roles/notebooks.admin) untuk membuat dan menghapus instance di Vertex AI Workbench.
  • Pengguna Akun Layanan (roles/iam.serviceAccountUser) untuk menjalankan operasi sebagai akun layanan. Tutorial ini tidak menentukan akun layanan, sehingga instance notebook yang dikelola pengguna menggunakan akun layanan Compute Engine default.
  • Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) untuk memeriksa status dan pengoperasian layanan, serta menggunakan kuota dan penagihan untuk resource project.

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada akun pengguna Anda melalui peran khusus atau peran bawaan lainnya.

Membuat struktur folder dan file konfigurasi Terraform

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  1. Di terminal Cloud Shell, jalankan perintah berikut untuk menetapkan direktori utama sebagai direktori aktif:
    cd
  2. Jalankan perintah berikut untuk membuat folder baru bernama terraform:
    mkdir terraform
  3. Luncurkan Cloud Shell Editor.
  4. Di panel Penjelajah, klik kanan folder terraform, lalu klik File Baru.
  5. Masukkan main.tf sebagai nama file, lalu klik OK.

Menentukan infrastruktur di file konfigurasi Terraform

  1. Buka file main.tf di Cloud Shell Editor.

  2. Ganti placeholder PROJECT_NAME dan LOCATION di contoh konfigurasi Terraform berikut, lalu salin contoh tersebut ke 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: Masukkan project ID Google Cloud.

    • LOCATION: Masukkan region dan zona untuk instance notebook yang dikelola pengguna. Contoh, us-west2-b. Untuk mendapatkan performa jaringan terbaik, pilih region yang paling dekat secara geografis dengan Anda. Lihat lokasi notebook yang dikelola pengguna yang tersedia.

  3. Simpan file main.tf.

Melakukan inisialisasi direktori kerja yang berisi file konfigurasi Terraform

  1. Untuk membuka terminal Cloud Shell, pada toolbar Cloud Shell Editor, klik Buka Terminal.

  2. Di terminal Cloud Shell, jalankan perintah berikut untuk menetapkan folder terraform sebagai direktori kerja saat ini:

    cd ~/terraform
    
  3. Jalankan perintah berikut:

    terraform init
    
  4. Terraform menginisialisasi direktori kerja. Output berikut akan muncul:

    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.

Melihat pratinjau rencana eksekusi berdasarkan konfigurasi Terraform

Rencana eksekusi Terraform menunjukkan perubahan yang akan dilakukan Terraform pada infrastruktur dan layanan Vertex AI.

Jalankan perintah berikut untuk melihat rencana eksekusi Terraform.

terraform plan

Jika diminta untuk memberikan otorisasi pada Cloud Shell, klik Authorize Cloud Shell menggunakan kredensial pengguna secara default setelah memberikan otorisasi.

Anda akan melihat output yang mirip dengan berikut ini:

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 menunjukkan project ID Google Cloud yang Anda tentukan.

  • us-west2-b menunjukkan region dan zona untuk instance notebook yang dikelola pengguna yang Anda tentukan.

Menerapkan perubahan yang diusulkan dalam rencana eksekusi

  1. Jalankan perintah berikut untuk menerapkan perubahan dari rencana eksekusi ke infrastruktur Vertex AI dan membuat instance notebook yang dikelola pengguna:

    terraform apply
    
  2. Anda akan melihat output yang mirip dengan berikut ini:

    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 menunjukkan project ID Google Cloud yang Anda tentukan.

    • us-west2-b menunjukkan region dan zona untuk instance notebook yang dikelola pengguna yang Anda tentukan.

  3. Ketik yes dan tekan Enter. Anda akan melihat output yang mirip dengan berikut ini:

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

Melihat instance notebook yang dikelola pengguna

Di konsol Google Cloud, buka halaman Notebook yang dikelola pengguna.

Buka Notebook yang dikelola pengguna

Notebook baru bernama "notebooks-instance-basic" muncul tercantum dalam tabel. Perhatikan bahwa instance notebook yang dikelola pengguna baru mungkin memerlukan waktu beberapa menit untuk disediakan setelah Anda menjalankan terraform apply.

Membersihkan project

Bersihkan resource Google Cloud yang Anda buat selama berlangsungnya tutorial ini. Ikuti langkah-langkah berikut untuk menghindari biaya tidak terduga dari beberapa resource:

  1. Di terminal Cloud Shell, jalankan perintah berikut untuk menetapkan folder terraform sebagai direktori kerja saat ini:

    cd ~/terraform
    
  2. Untuk menghapus resource Vertex AI yang Anda buat berdasarkan konfigurasi Terraform, jalankan perintah berikut:

    terraform destroy
    
  3. Anda akan melihat output yang mirip dengan berikut ini:

    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 menunjukkan project ID Google Cloud yang Anda tentukan.

    • us-west2-b menunjukkan region dan zona untuk instance notebook yang dikelola pengguna yang Anda tentukan.

  4. Ketik yes dan tekan Enter. Anda akan melihat output yang mirip dengan berikut ini:

    Destroy complete! Resources: 2 destroyed.
    
  5. Untuk memverifikasi bahwa instance notebook yang dikelola pengguna telah dihapus, buka halaman Notebook yang dikelola pengguna.

    Buka Notebook yang dikelola pengguna

  6. Luncurkan Cloud Shell Editor.

  7. Untuk menghapus folder terraform beserta isinya, klik kanan folder terraform di panel Penjelajah, lalu klik Hapus.

  8. Saat diminta, klik OK untuk mengonfirmasi.

Lebih banyak cara untuk menggunakan Terraform di Vertex AI

Tutorial ini menunjukkan cara menggunakan Terraform dengan hanya membuat satu file konfigurasi dan menyediakan infrastruktur berdasarkan satu resource Terraform. Anda juga dapat menggunakan Terraform dengan cara berikut:

  • Menambahkan beberapa resource Terraform ke file konfigurasi Terraform yang sama. Untuk mengetahui daftar resource Terraform untuk Vertex AI, lihat Resource Terraform yang tersedia untuk Vertex AI.

  • Membuat struktur direktori yang terdiri dari beberapa folder dan file konfigurasi Terraform. Misalnya, Anda dapat membuat folder dan file konfigurasi Terraform terpisah untuk setiap jenis resource Terraform.

Langkah berikutnya