データアナリティクス事業本部の根本です。最近はWorkflowsやDataformを実装することが多いのですがせっかくなのでWorkflowsのリソース作成をgcloudコマンドではなくTerraformで作りたいなと思い試してみました。
この記事の対象者
- TerraformでWorkflowsワークフローを作成してみたいひと
前提条件
- Workflows、Cloud Shellが使用できること
検証の全体像
- TerraformでWorkflowsが作成できるかどうか
早速やっていきます。
やってみる
まずはTerraformを実装していきます。一応Cloud ShellにTerraformが入っているかコマンドで確認します。
terraform version
コマンドを実行して以下のようなバージョン情報の出力があれば問題ありません。
Terraform v1.5.7
on linux_amd64
Your version of Terraform is out of date! The latest version
is 1.8.2. You can update by downloading from https://www.terraform.io/downloads.html
(今回は検証なのでバージョンは特に気にしません)
それではTerraformを動かす準備をしていきます。
まずはTerraform用のフォルダを作成して、作成したフォルダへ移動します。
mkdir terraform_workflows_test && cd terraform_workflows_test
さて、今回作成するファイルは2つです。
- main.tf(TerraformでWorkflwosワークフローを作成するもの)
- workflow.yaml(Workflowsワークフローの処理).
まずはTeffaformのファイルmain.tf
を作成します。
main.tf
provider "google" {
project = "プロジェクトID"
region = "asia-northeast1"
}
resource "google_workflows_workflow" "test_workflow" {
name = "test-workflow"
description = "Terraformで作成したワークフロー"
source_contents = file("${path.module}/workflow.yaml")
}
source_contents
にて作成対象のWorkflowsワークフローのyamlファイルを指定しています。
それではworkflow.yaml
も実装します。
workflow.yaml
main:
steps:
- call_sys_log:
call: sys.log
args:
text: "terraform作成のworkflowsワークフロー"
severity: "INFO"
作成するWorkflowsのワークフローはログ出力するだけのシンプルなものです。
2つのファイルが準備できたらTerraformを実行していきます。
まずは以下のコマンドを発行します。
terraform init
terraform init
コマンドが成功したらterraform apply
コマンドを発行してWorkflowsワークフローを作成します。
terraform apply
terraform apply
を実行してリソース作成を実行します。
Do you want to perform these actions?
と確認されますので、yes
と入力してEnterキーを押下します。
google_workflows_workflow.test_workflow: Modifying... [id=projects/プロジェクトID/locations/asia-northeast1/workflows/test-workflow]
google_workflows_workflow.test_workflow: Modifications complete after 1s [id=projects/プロジェクトID/locations/asia-northeast1/workflows/test-workflow]
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
上記のようなメッセージが表示されていれば作成成功です。
Workflowsのコンソールから作成されているか確認してみます。
無事作成できていました。
workflow.yaml
のファイル内容通りのソースコードとなっていました。問題なくTerraformでリソース作成ができました。
サービスアカウントも設定してみる
せっかくなのでサービスアカウントも設定してみました。
リファレンスを確認したところ
projects/{project}/serviceAccounts/{account} or {account}.
上記形式でサービスアカウントを指定できるようでしたので、それに則りservice_account
の指定を追加しました。
main.tf
provider "google" {
project = "プロジェクトID"
region = "asia-northeast1"
}
resource "google_workflows_workflow" "test_workflow" {
name = "test-workflow"
description = "Terraformで作成したワークフロー"
service_account = "projects/プロジェクトID/serviceAccounts/サービスアカウント名(メール)"
#↑上記を追加
source_contents = file("${path.module}/workflow.yaml")
}
こちらもterraform apply
を実行してリソース作成をしてみます。
サービスアカウントが設定されたワークフローが作成されていました!
おわりに
簡潔な記述でリソース作成ができて、とても嬉しく思いました。開発時はgcloudコマンドでデプロイしていても、本運用の時にはTerraform化してあると運用保守しやすくて良いかなと個人的には思います。そしてTerraformでリソース作成するのは本当に面白いです。
この記事が誰かのお役に立てば嬉しいです。それではまた。