Membuat konfigurasi Terraform

Saat menyeleksi solusi Katalog Layanan untuk organisasi Anda, Anda dapat membuat konfigurasi Terraform, atau config, yang di-deploy pengguna Anda menggunakan Terraform. Setelah membuat konfigurasi, Anda dapat membagikannya kepada pengguna dengan menetapkannya ke katalog.

Dalam panduan ini, Anda menggunakan Cloud Build untuk menjalankan perintah Terraform dalam image Docker Terraform versi terbaru, dan Anda menggunakan Cloud Storage untuk menyimpan dan mengelola resource Terraform seperti modul dan file status.

Untuk mengetahui resource dan panduan tentang penggunaan Terraform, lihat Menggunakan Terraform dengan Google Cloud.

Sebelum memulai

  • Anda harus memiliki peran Identity and Access Management (IAM) berikut:

    • Admin Katalog ATAU Pengelola Katalog untuk Google Cloud organisasi yang terkait dengan project Google Cloud yang telah mengaktifkan Service Catalog. Jika Anda tidak memiliki peran ini, hubungi Administrator Organisasi Anda untuk meminta akses.
    • Storage Admin untuk project Google Cloud tempat Anda ingin membuat solusi. Jika konfigurasi Terraform Anda berada dalam project yang berbeda, Anda juga harus memiliki peran Admin Storage untuk project yang berisi konfigurasi Terraform Anda.
    • Cloud Build Editor untuk project Google Cloud tempat Anda ingin membuat solusi.

    Jika berencana menggunakan akun layanan Anda sendiri, Anda juga harus memiliki peran Pengguna Akun Layanan untuk project Google Cloud yang berisi akun layanan yang akan Anda gunakan.

    Jika Anda tidak memiliki peran ini, hubungi Administrator Organisasi Anda untuk meminta akses.

  • Jika Anda berencana menggunakan akun layanan Anda sendiri, akun layanan Anda harus memiliki peran IAM berikut:

    • Storage Admin untuk project Google Cloud tempat Anda ingin membuat solusi. Jika konfigurasi Terraform Anda berada dalam project yang berbeda, akun layanan Anda juga harus memiliki peran Storage Object Viewer untuk project yang berisi konfigurasi Terraform.
    • Logs Writer untuk Google Cloud project tempat Anda ingin membuat solusi.

    Jika Anda tidak memiliki peran ini, hubungi Administrator Organisasi Anda untuk meminta akses.

  • Siapkan Cloud Build di project tempat Anda membuat konfigurasi:

    1. Enable the Cloud Build API.

      Enable the API

      Mengaktifkan API akan otomatis membuat akun layanan Cloud Build yang Anda gunakan pada langkah berikutnya.
    2. Buka halaman Cloud Build.
    3. Di Panel Kiri, pilih Setelan.
    4. Gunakan akun layanan yang diberikan di bagian Service account email.
    5. Jika Anda tidak menggunakan akun layanan Anda sendiri, berikan peran IAM berikut ke akun layanan. Untuk mengetahui langkah-langkah pemberian peran, lihat Mengonfigurasi akses untuk Akun Layanan Cloud Build.

Mengupload file konfigurasi ke Cloud Storage

Anda menggunakan Cloud Storage untuk mengelola file konfigurasi Terraform untuk Service Catalog.

Membuat bucket Cloud Storage

Untuk menyiapkan Cloud Storage, buat bucket di project yang sama tempat Anda mengaktifkan Service Catalog untuk organisasi Anda:

  1. In the Google Cloud console, go to the Cloud Storage Buckets page.

    Go to Buckets

  2. Click Create.
  3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
    1. In the Get started section, do the following:
      • Enter a globally unique name that meets the bucket naming requirements.
      • To add a bucket label, expand the Labels section (), click Add label, and specify a key and a value for your label.
    2. In the Choose where to store your data section, do the following:
      1. Select a Location type.
      2. Choose a location where your bucket's data is permanently stored from the Location type drop-down menu.
      3. To set up cross-bucket replication, select Add cross-bucket replication via Storage Transfer Service and follow these steps:

        Set up cross-bucket replication

        1. In the Bucket menu, select a bucket.
        2. In the Replication settings section, click Configure to configure settings for the replication job.

          The Configure cross-bucket replication pane appears.

          • To filter objects to replicate by object name prefix, enter a prefix that you want to include or exclude objects from, then click Add a prefix.
          • To set a storage class for the replicated objects, select a storage class from the Storage class menu. If you skip this step, the replicated objects will use the destination bucket's storage class by default.
          • Click Done.
    3. In the Choose how to store your data section, do the following:
      1. Select a default storage class for the bucket or Autoclass for automatic storage class management of your bucket's data.
      2. To enable hierarchical namespace, in the Optimize storage for data-intensive workloads section, select Enable hierarchical namespace on this bucket.
    4. In the Choose how to control access to objects section, select whether or not your bucket enforces public access prevention, and select an access control method for your bucket's objects.
    5. In the Choose how to protect object data section, do the following:
      • Select any of the options under Data protection that you want to set for your bucket.
        • To enable soft delete, click the Soft delete policy (For data recovery) checkbox, and specify the number of days you want to retain objects after deletion.
        • To set Object Versioning, click the Object versioning (For version control) checkbox, and specify the maximum number of versions per object and the number of days after which the noncurrent versions expire.
        • To enable the retention policy on objects and buckets, click the Retention (For compliance) checkbox, and then do the following:
          • To enable Object Retention Lock, click the Enable object retention checkbox.
          • To enable Bucket Lock, click the Set bucket retention policy checkbox, and choose a unit of time and a length of time for your retention period.
      • To choose how your object data will be encrypted, expand the Data encryption section (), and select a Data encryption method.
  4. Click Create.

Mengaktifkan Pembuatan Versi Objek

Anda harus menggunakan Pembuatan Versi Objek untuk bucket Anda guna melindungi konfigurasi Terraform Anda agar tidak dihapus atau ditimpa. Untuk mengaktifkan Pembuatan Versi Objek, lihat dokumentasi Cloud Storage tentang Menggunakan Pembuatan Versi Objek.

Memberikan akses ke bucket Anda

Saat pengguna di organisasi Anda men-deploy konfigurasi, akun layanan Cloud Build mereka harus memiliki akses baca ke bucket Anda. Jika bucket Anda disimpan dalam project Google Cloud yang sama tempat pengguna men-deploy konfigurasi, maka akun layanan sudah memiliki akses ini.

Jika pengguna Anda men-deploy konfigurasi di projectGoogle Cloud yang berbeda, beri akses ke bucket menggunakan salah satu metode berikut:

  • Berikan peran Storage Object Viewer (roles/storage.objectViewer) kepada akun layanan Cloud Build pengguna Anda, atau ke Google Cloud resource tempat pengguna Anda men-deploy konfigurasi Terraform, seperti project, folder, atau organisasi.

  • Gunakan Daftar Kontrol Akses (ACL) untuk mengelola akses ke bucket.

Untuk mengetahui detail tentang cara mengelola akses ke bucket, lihat Ringkasan kontrol akses Cloud Storage.

Membuat dan mengupload modul Terraform

Setelah menyiapkan bucket Cloud Storage, Anda harus membuat dan mengupload modul Terraform, yang merupakan container dari semua file konfigurasi Anda. Service Catalog menggunakan modul untuk otomatis membuat file skema JSON guna menentukan variabel konfigurasi Anda.

Saat memanggil modul di luar direktori saat ini, gunakan jalur jarak jauh, bukan jalur relatif. Misalnya, gunakan source = "GoogleCloudPlatform/cloud-run/google", bukan source = "../../".

Untuk modul kasus penggunaan umum, lihat Blueprint dan modul Terraform untuk Google Cloud. Google Cloud

Contoh kode berikut menggambarkan file konfigurasi Terraform, main.tf:


variable "machine_type" {
  type    = string
  default = "n1-standard-1"
}

variable "zone" {
  type    = string
  default = "us-central1-a"
}

variable "deployment_identifier" {
  description = "The unique name for your instance"
  type        = string
}

resource "google_compute_instance" "default" {
  name         = "vm-${var.deployment_identifier}"
  machine_type = var.machine_type
  zone         = var.zone

  boot_disk {
    device_name = "boot"
    auto_delete = true
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {
      // Ephemeral IP
    }
  }
}

Setelah membuat modul, kompresi file menjadi file zip. Pastikan modul disimpan di root file zip.

Untuk memastikan penyimpanan modul yang tepat saat Anda mengompresi file Terraform, jalankan perintah berikut: none zip solution.zip file1.tf file2.tf file3.tf

Kemudian, upload file zip ke bucket Anda. Untuk mengetahui langkah-langkah mengupload file ZIP, lihat dokumentasi Cloud Storage tentang Mengupload objek.

Membuat konfigurasi di Service Catalog

Setelah menyiapkan bucket Cloud Storage dengan modul Terraform, Anda membuat solusi Katalog Layanan yang menyertakan bucket tersebut.

Untuk membuat konfigurasi Terraform sebagai solusi Katalog Layanan:

  1. Buka halaman Service Catalog Admin Solutions di konsol Google Cloud .
    Buka halaman Solusi

  2. Untuk memilih Google Cloud project, klik Pilih.

  3. Klik Buat solusi. Di menu drop-down, pilih Create Terraform config.

  4. Masukkan nama, deskripsi, dan tagline untuk konfigurasi Terraform Anda. Tagline adalah deskripsi singkat solusi yang dilihat pengguna saat menjelajahi Katalog Layanan.

  5. Di kolom Link ke konfigurasi Terraform, berikan link ke bucket Cloud Storage yang berisi file ZIP untuk modul Terraform Anda, seperti gs://my-terraform-bucket/my-zip-file.zip.

  6. Jika perlu, upload ikon untuk solusi. Dimensi yang direkomendasikan untuk ikon adalah 80 x 80 piksel.

  7. Jika mau, masukkan link dukungan dan informasi kontak untuk kreator.

  8. Secara opsional, tambahkan link ke dokumentasi untuk solusi.

  9. Pilih versi Terraform yang ingin Anda gunakan untuk men-deploy solusi.

  10. Secara opsional, Anda dapat memberikan akun layanan Anda sendiri dengan mencentang kotak di samping Pilih atau masukkan akun layanan Anda sendiri. Jika akun layanan Anda berada di project yang sama dengan tempat Anda membuat solusi, pilih Pilih akun layanan dari project saat ini, lalu pilih akun layanan Anda dari menu drop-down. Google Cloud Jika akun layanan Anda berada di project yang berbeda Google Cloud dari solusi Anda, pilih Masukkan email akun layanan dari project mana pun, lalu masukkan email akun layanan Anda.

  11. Klik BUAT.

Solusi dibuat dan muncul di halaman Solusi Admin Katalog Layanan.

Screenshot berikut mengilustrasikan pembuatan konfigurasi Terraform:

Membuat konfigurasi Terraform

Langkah berikutnya