Vertex AI WorkbenchインスタンスをTerraformで作成するチュートリアルをやってみた

Vertex AI関連リソースの作成をTerraformでやってみた!
2023.09.15

みなさんこんにちは!

クルトンです。

今回は、Vertex AI関連のリソースをIaC化してみたいと考えていたところ、Terraformを使って作成するナイスなチュートリアルを見つけたのでやってみます。

やってみた

まずCloud Shellを立ち上げます。

以降は、Cloud Shell上で入力してください。

  1. ホームディレクトリへ移動するためにcdします
  2. mkdir terraformで今回使用するファイルの置き場所(フォルダ)を作成します
  3. cd terraformで作成したフォルダへ移動します
  4. nano main.tfvim main.tfで作成するリソースに関して記述したファイルを作成します

main.tfファイルには以下の内容を書き、リソースgoogle_notebooks_instanceprojectlocationの値をご自身の環境に合わせて書き換えてください。

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
  ]
}

ちなみに東京リージョンは"asia-northeast1"ですので自分はasia-northeast1-aと書きました。PROJECT_IDについては、Google Cloudのトップ画面で表示されています。

fig1

ファイルが用意できましたら、次にterraform initコマンドを打ちます。以下のような文言がCloud Shell上で確認できましたらOKです!

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.

ここまで出来ますと、あとは実際にリソース作成が可能になります。

ここからのGoogle Cloudリソース作成の手順としては、以下のようになります。

  1. terraform planコマンドを叩く
    • 作成するGoogle Cloudリソースがどのようなものか表示される。エラーがあればここで表示されます。
    • Enter a value:と聞かれた場合はYesと入力する
  2. terraform applyコマンドを叩く
    • 実際にGoogle Cloudリソースを作成する。
    • Enter a value:と聞かれた場合は、リソース作成してOKか確認後にYesと入力する

上記コマンドを実際に順番に打っていきGoogle Cloudリソースの作成を完了してください。

ちなみに、コマンドを打つと以下の画像のような画面が出てくる場合は承認をクリックしてください。

fig2

お使いの環境によってはterraform planで以下のようなエラーが出るかもしれません。

Planning failed. Terraform encountered an error while generating this plan.

╷
│ Error: Error when reading or editing Project Service <プロジェクトID>/notebooks.googleapis.com: googleapi: Error 403: Cloud Resource Manager API has not been used in project <プロジェクトID> before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/cloudresourcemanager.googleapis.com/overview?project=<プロジェクトID> then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
│ Details:
│ [
│   {
│     "@type": "type.googleapis.com/google.rpc.Help",
│     "links": [
│       {
│         "description": "Google developers console API activation",
│         "url": "https://console.developers.google.com/apis/api/cloudresourcemanager.googleapis.com/overview?project=<プロジェクトID>"
│       }
│     ]
│   },
│   {
│     "@type": "type.googleapis.com/google.rpc.ErrorInfo",
│     "domain": "googleapis.com",
│     "metadata": {
│       "consumer": "projects/<プロジェクトID>",
│       "service": "cloudresourcemanager.googleapis.com"
│     },
│     "reason": "SERVICE_DISABLED"
│   }
│ ]
│ , accessNotConfigured
│ 
│   with google_project_service.notebooks,
│   on main.tf line 1, in resource "google_project_service" "notebooks":
│    1: resource "google_project_service" "notebooks" {
│ 
╵

上記エラーが出た場合は、Cloud Resource Manager APIを有効にしてください。Cloud Shell上に表示されているURLをクリックすると、有効化できる画面が表示できますので便利です。

fig3

terraform applyコマンドでGoogle Cloudリソースの作成が完了すると、Apply complete! Resources: added, changed, destroyed.のような文言がCloud Shellで表示されます。

作成したものはVertex AIの画面、左ペインの中にあるワークベンチを触ると確認できます。

fig4

fig5

クリーンアップ

今回作成したGoogle Cloudリソースを全て削除するには、terraform destroyコマンドを作成したmain.tfファイルがあるフォルダで実行してください。 Enter a value:と聞かれますが、Yesと入力すると削除開始します。

終わりに

今回はGoogle Cloudの機械学習サービスであるVertex AIに関連したリソースを作成しました。インフラ構築というと、時間が掛かったり大変なイメージが個人的にあるのですが、Cloud Shell上でTerraformを使うととても簡単にできました。

今回取り扱わなかったですが、作成したGoogle Cloudリソースのインスタンスタイプを随時変更するなども簡単にできそうなので、Terraformは今後も使っていきたいですね。

今回はここまで。

それでは、また!