Membuat alur kerja menggunakan Terraform

Panduan memulai ini menunjukkan cara membuat, men-deploy, dan menjalankan alur kerja pertama Anda menggunakan Terraform. Terraform adalah alat infrastructure as code yang memungkinkan Anda membuat, mengubah, dan meningkatkan kualitas infrastruktur cloud secara tepat menggunakan kode. Pelajari cara menggunakan Terraform untuk menyediakan infrastruktur di Google Cloud.

Dalam panduan memulai ini, alur kerja contoh mengirim permintaan ke API publik, lalu menampilkan respons API.

Anda akan menyelesaikan langkah-langkah berikut:

  1. Aktifkan Workflows API menggunakan Terraform.
  2. Buat akun layanan untuk alur kerja menggunakan Terraform.
  3. Tentukan dan deploy alur kerja menggunakan Terraform.
  4. Jalankan alur kerja menggunakan Google Cloud CLI.

Sebelum memulai

Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan yang terbatas Google Cloud .

Perhatikan bahwa Cloud Shell telah mengintegrasikan Terraform. Jika Anda perlu menginstal Terraform, lihat dokumentasi HashiCorp Terraform.

  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. Install the Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

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

  7. Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs:

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com
  8. Install the Google Cloud CLI.

  9. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  10. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  11. Create or select a Google Cloud project.

    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

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

  13. Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs:

    gcloud services enable cloudresourcemanager.googleapis.com iam.googleapis.com
  14. Membuat file konfigurasi Terraform

    Buat file konfigurasi Terraform bernama main.tf dan sertakan resource penyedia Google untuk Terraform yang digunakan dalam panduan memulai ini.

    Perhatikan bahwa Anda dapat menggunakan interpolasi untuk penggantian seperti variabel referensi, atribut resource, dan fungsi panggilan.

    1. Buat direktori:

      mkdir terraform
    2. Buka direktori terraform:

      cd terraform
    3. Tambahkan file baru, main.tf, ke direktori:

      nano main.tf
    4. Tambahkan resource berikut ke file main.tf:

      1. Tetapkan ID project:

        provider "google" {
        project = "PROJECT_ID"
        }

        Ganti PROJECT_ID dengan ID project Anda.

      2. Aktifkan Workflows API:

        # Enable Workflows API
        resource "google_project_service" "default" {
          service            = "workflows.googleapis.com"
          disable_on_destroy = false
        }

      3. Buat akun layanan untuk alur kerja:

        # Create a dedicated service account
        resource "google_service_account" "default" {
          account_id   = "sample-workflows-sa"
          display_name = "Sample Workflows Service Account"
        }

      4. Tentukan alur kerja menggunakan google_workflows_workflow resource:

        # Create a workflow
        resource "google_workflows_workflow" "default" {
          name            = "sample-workflow"
          region          = "us-central1"
          description     = "A sample workflow"
          service_account = google_service_account.default.id
        
          deletion_protection = false # set to "true" in production
        
          labels = {
            env = "test"
          }
          user_env_vars = {
            url = "https://timeapi.io/api/Time/current/zone?timeZone=Europe/Amsterdam"
          }
          source_contents = <<-EOF
          # This is a sample workflow that you can replace with your source code
          #
          # The workflow does the following:
          # - Retrieves the current date from a public API and stores the
          #   response in `currentDate`
          # - Retrieves a list of Wikipedia articles from a public API related
          #   to the day of the week stored in `currentDate`
          # - Returns the list of articles in the workflow output
          #
          # Note that when you define workflows in Terraform, variables must be
          # escaped with two dollar signs ($$) and not a single sign ($)
        
          - getCurrentDate:
              call: http.get
              args:
                  url: $${sys.get_env("url")}
              result: currentDate
          - readWikipedia:
              call: http.get
              args:
                  url: https://en.wikipedia.org/w/api.php
                  query:
                      action: opensearch
                      search: $${currentDate.body.dayOfWeek}
              result: wikiResult
          - returnOutput:
              return: $${wikiResult.body[1]}
        EOF
        
          depends_on = [google_project_service.default]
        }
        

Argumen berikut digunakan dalam alur kerja contoh:

  • name: nama alur kerja Anda.
  • region: lokasi alur kerja Anda.
  • description: deskripsi alur kerja Anda.
  • service_account: alamat email atau ID unik akun layanan yang terkait dengan versi alur kerja terbaru. Akun layanan ini mewakili identitas alur kerja dan menentukan izin apa yang dimiliki alur kerja. Jika Anda tidak menentukan akun layanan selama pembuatan alur kerja, alur kerja akan menggunakan akun layanan default Compute Engine untuk identitasnya. Untuk mengetahui informasi selengkapnya, lihat Memberikan izin alur kerja untuk mengakses resource Google Cloud .
  • labels: daftar pasangan label nilai kunci yang akan ditetapkan ke alur kerja ini yang membantu Anda mengatur instance Google Cloud . Untuk informasi selengkapnya, lihat Apa yang dimaksud dengan label?
  • user_env_vars: variabel lingkungan yang ditentukan pengguna dan terkait dengan revisi alur kerja ini. Untuk mengetahui informasi selengkapnya, lihat Gunakan variabel lingkungan.
  • source_contents: kode Workflows yang akan dieksekusi. Untuk mengetahui batas ukuran file, lihat Batas resource.

Argumen opsional lainnya meliputi:

  • crypto_key_name: ID resource untuk kunci Cloud Key Management Service dalam format berikut:

    projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

    Untuk informasi selengkapnya, lihat Menggunakan kunci enkripsi yang dikelola pelanggan.

  • call_log_level: tingkat logging yang akan diterapkan pada panggilan dan respons panggilan selama eksekusi alur kerja ini. Nilainya dapat berupa:

    • CALL_LOG_LEVEL_UNSPECIFIED
    • LOG_ALL_CALLS
    • LOG_ERRORS_ONLY
    • LOG_NONE

    Untuk mengetahui informasi selengkapnya, lihat Logging panggilan.

  • project: ID project tempat resource berada. Jika tidak diberikan, project penyedia akan digunakan.

  • name_prefix: membuat nama unik yang diawali dengan awalan yang ditentukan. Jika ini dan name tidak ditentukan, nilai acak akan dipilih untuk nama.

Membuat dan menjalankan alur kerja

Deploy resource Terraform Anda untuk membuat alur kerja, lalu jalankan alur kerja.

  1. Lakukan inisialisasi Terraform di direktori:

    terraform init
  2. Periksa apakah perubahan yang Anda usulkan dengan Terraform sesuai dengan rencana yang diharapkan:

    terraform plan

    Anda dapat mengabaikan catatan terkait tidak menggunakan opsi -out.

  3. Buat alur kerja:

    terraform apply
  4. Pada perintah Enter a value, ketik yes untuk melanjutkan pembuatan resource.

  5. Pastikan alur kerja dibuat:

    gcloud workflows list --location us-central1

    Outputnya akan mirip dengan berikut ini:

    NAME                                                                    STATE   REVISION_ID  UPDATE_TIME
    projects/project-name/locations/us-central1/workflows/sample-workflow   ACTIVE  000001-f9a   2024-02-24T13:38:58.353765906Z
  6. Secara opsional, Anda dapat menjalankan alur kerja:

    gcloud workflows execute sample-workflow

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan di halaman ini, hapus project Google Cloud yang berisi resource tersebut.

  1. Hapus semua resource yang Anda buat dengan Terraform:
    terraform destroy
  2. Hapus alur kerja yang Anda buat:
    gcloud workflows delete sample-workflow
    Saat ditanya apakah Anda ingin melanjutkan, tekan y.
  3. Atau, Anda dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus project akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut. Google Cloud

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

Langkah berikutnya