クイックスタート: Terraform を使用してワークフローを作成する

このクイックスタートでは、Terraform を使用して最初のワークフローを作成、デプロイ、実行する方法について説明します。Terraform は、コードを使用してクラウド インフラストラクチャを予想どおりに作成、変更、改善できる HashiCorp オープンソース ツールです。このクイックスタートでは、ワークフローがリクエストをサンプル API に送信してから、レスポンスを使用することでリクエストを作成して公開 API に送信します。続いて、ワークフローは公開 API のレスポンスを返します。

このドキュメントでは、Terraform を使用して次のことを行います。

  1. ワークフロー API を有効にします。
  2. ワークフローのサービス アカウントを作成します。
  3. Terraform を使用してワークフローを定義してデプロイします。
  4. gcloud コマンドライン ツールを使用してワークフローを実行します。

Terraform の使用に関するリソースとガイドについては、Google Cloud で Terraform を使用するをご覧ください。

始める前に

組織が Google Cloud 環境に制約を適用すると、このドキュメントの一部の手順が正しく機能しない場合があります。その場合、パブリック IP アドレスやサービス アカウント キーを作成するようなタスクを完了できない場合があります。制約に関するエラーを返すリクエストを行う場合は、制約がある Google Cloud 環境でアプリケーションを開発する方法をご覧ください。

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud SDK をインストールして初期化します。
  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  7. Cloud SDK をインストールして初期化します。
  8. Cloud Console で、Cloud Shell をアクティブにします。

    Cloud Shell をアクティブにする

    Cloud Console の下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。gcloud コマンドライン ツールなどの Cloud SDK がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  9. Cloud Shell には Terraform がすでに統合されています。

Terraform 構成ファイルを作成する

main.tf という Terraform 構成ファイルを作成し、このプロジェクトで使用する Google Cloud リソースを含めます。

  1. ディレクトリを作成します。
    mkdir terraform
  2. terraform ディレクトリに移動します。
    cd terraform
  3. 新しいファイル main.tf をディレクトリに追加します。
    nano main.tf
  4. main.tf ファイルに以下のリソースを追加します。
    1. プロジェクトの ID を割り当てます。
      provider "google" {
       project = "PROJECT_ID"
      }
      

      PROJECT_ID はプロジェクトの ID に置き換えます。

    2. Workflows API を有効にする
      resource "google_project_service" "workflows" {
        service            = "workflows.googleapis.com"
        disable_on_destroy = false
      }
    3. ワークフローのサービス アカウントを作成します。
      resource "google_service_account" "workflows_service_account" {
        account_id   = "sample-workflows-sa"
        display_name = "Sample Workflows Service Account"
      }
    4. ワークフローを定義してデプロイします。
      resource "google_workflows_workflow" "workflows_example" {
        name            = "sample-workflow"
        region          = "us-central1"
        description     = "A sample workflow"
        service_account = google_service_account.workflows_service_account.id
        source_contents = <<-EOF
        # This is a sample workflow, feel free to replace it with your source code
        #
        # This workflow does the following:
        # - reads current time and date information from an external API and stores
        #   the response in CurrentDateTime variable
        # - retrieves a list of Wikipedia articles related to the day of the week
        #   from CurrentDateTime
        # - returns the list of articles as an output of the workflow
        # FYI, In terraform you need to escape the $$ or it will cause errors.
      
        - getCurrentTime:
            call: http.get
            args:
                url: https://us-central1-workflowsample.cloudfunctions.net/datetime
            result: CurrentDateTime
        - readWikipedia:
            call: http.get
            args:
                url: https://en.wikipedia.org/w/api.php
                query:
                    action: opensearch
                    search: $${CurrentDateTime.body.dayOfTheWeek}
            result: WikiResult
        - returnOutput:
            return: $${WikiResult.body[1]}
      EOF
      
        depends_on = [google_project_service.workflows]
      }

ワークフローをデプロイして実行する

Terraform を使用してリソースをデプロイし、ワークフローを作成します。

  1. ディレクトリで Terraform を初期化します。

    terraform init
    
  2. Terraform で示した変更が、想定されているプランと一致していることを確認します。
    terraform plan
    

    -out オプションを使用しないという注意事項は無視できます。

  3. ワークフローを作成します。

    terraform apply
    
  4. [Enter a value] プロンプトで、「yes」と入力してリソースの作成を続行します。
  5. ワークフローが作成されたことを確認します。
    gcloud workflows list --location us-central1
    

    出力は次のようになります。

    NAME                                                                          STATE   REVISION_ID  UPDATE_TIME
    projects/project-name/locations/us-central1/workflows/sample-workflow         ACTIVE  000001-f9a   2021-06-24T13:38:58.353765906Z
    

  6. 必要に応じて、ワークフローを実行できます。
    gcloud workflows execute sample-workflow
    

クリーンアップ

このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

Terraform で作成したすべてのリソースは、次のコマンドで削除できます。

terraform destroy

作成したワークフローを削除することもできます。

  1. 作成したワークフローを削除します。
    gcloud workflows delete sample-workflow
  2. 続行を確認するメッセージが表示されたら、「y」と入力します。

ワークフローが削除されます。

次のステップ