Mengelola infrastruktur sebagai kode dengan Terraform, Cloud Build, dan GitOps

Tutorial ini menjelaskan cara mengelola infrastruktur sebagai kode dengan Terraform dan Cloud Build menggunakan metodologi GitOps yang populer. Istilah GitOps pertama kali diciptakan oleh Weaveworks, dan konsep utamanya adalah menggunakan repositori Git untuk menyimpan status lingkungan yang Anda inginkan. Terraform adalah alat HashiCorp yang memungkinkan Anda membuat, mengubah, dan meningkatkan infrastruktur cloud secara tepat menggunakan kode. Dalam tutorial ini, Anda menggunakan Cloud Build (layanan continuous integration Google Cloud) untuk menerapkan manifes Terraform secara otomatis ke lingkungan Anda.

Tutorial ini ditujukan bagi developer dan operator yang mencari strategi elegan untuk membuat perubahan pada infrastruktur yang dapat diprediksi. Artikel ini mengasumsikan bahwa Anda sudah familier dengan Google Cloud, Linux, dan GitHub.

Laporan State of DevOps mengidentifikasi kemampuan yang mendorong performa pengiriman software. Tutorial ini akan membantu Anda dengan kemampuan berikut:

Arsitektur

Untuk mendemonstrasikan cara tutorial ini menerapkan praktik GitOps untuk mengelola eksekusi Terraform, pertimbangkan diagram arsitektur berikut. Perhatikan bahwa metode ini menggunakan cabang GitHub—dev dan prod—untuk mewakili lingkungan yang sebenarnya. Lingkungan ini ditentukan oleh jaringan Virtual Private Cloud (VPC)—dev dan prod—ke dalam project Google Cloud.

Infrastruktur dengan lingkungan pengembangan dan produksi

Proses ini dimulai saat Anda mengirim kode Terraform ke cabang dev atau prod. Dalam skenario ini, Cloud Build akan memicu, lalu menerapkan manifes Terraform untuk mencapai status yang Anda inginkan di lingkungannya masing-masing. Di sisi lain, saat Anda mengirim kode Terraform ke cabang lain—misalnya, ke cabang fitur—Cloud Build akan beroperasi untuk menjalankan terraform plan, tetapi tidak ada yang diterapkan ke lingkungan apa pun.

Idealnya, developer atau operator harus membuat proposal infrastruktur ke cabang yang tidak dilindungi, lalu mengirimkannya melalui permintaan pull. Aplikasi Cloud Build GitHub, yang akan dibahas dalam tutorial ini nanti, akan secara otomatis memicu tugas build dan menautkan laporan terraform plan ke permintaan pull ini. Dengan cara ini, Anda dapat membahas dan meninjau potensi perubahan dengan kolaborator dan menambahkan commit tindak lanjut sebelum perubahan digabungkan ke cabang dasar.

Jika tidak ada masalah yang diajukan, Anda harus menggabungkan perubahan ke cabang dev terlebih dahulu. Penggabungan ini memicu deployment infrastruktur ke lingkungan dev, sehingga Anda dapat menguji lingkungan ini. Setelah menguji dan yakin dengan apa yang di-deploy, Anda harus menggabungkan cabang dev ke cabang prod untuk memicu penginstalan infrastruktur ke lingkungan produksi.

Tujuan

  • Menyiapkan repositori GitHub Anda.
  • Konfigurasi Terraform untuk menyimpan status di bucket Cloud Storage.
  • Berikan izin ke akun layanan Cloud Build Anda.
  • Hubungkan Cloud Build ke repositori GitHub Anda.
  • Ubah konfigurasi lingkungan Anda di cabang fitur.
  • Dorong perubahan pada lingkungan pengembangan.
  • Mendorong perubahan pada lingkungan produksi.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.

Prasyarat

  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. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  6. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  7. Di Cloud Shell, dapatkan ID project yang baru saja Anda pilih:
    gcloud config get-value project
    Jika perintah ini tidak menampilkan project ID, konfigurasikan Cloud Shell untuk menggunakan project Anda. Ganti PROJECT_ID dengan project ID Anda.
    gcloud config set project PROJECT_ID
  8. Aktifkan API yang diperlukan:
    gcloud services enable cloudbuild.googleapis.com compute.googleapis.com
    Langkah ini mungkin memerlukan waktu beberapa menit hingga selesai.
  9. Jika Anda belum pernah menggunakan Git di Cloud Shell, konfigurasikan dengan nama dan alamat email Anda:
    git config --global user.email "YOUR_EMAIL_ADDRESS"
    git config --global user.name "YOUR_NAME"
    
    Git menggunakan informasi ini untuk mengidentifikasi Anda sebagai penulis commit yang Anda buat di Cloud Shell.

Menyiapkan repositori GitHub Anda

Dalam tutorial ini, Anda menggunakan satu repositori Git untuk menentukan infrastruktur cloud. Anda mengorkestrasi infrastruktur ini dengan memiliki cabang yang berbeda yang sesuai dengan lingkungan yang berbeda:

  • Cabang dev berisi perubahan terbaru yang diterapkan ke lingkungan pengembangan.
  • Cabang prod berisi perubahan terbaru yang diterapkan ke lingkungan produksi.

Dengan infrastruktur ini, Anda dapat mereferensikan repositori untuk mengetahui konfigurasi yang diharapkan di setiap lingkungan dan mengusulkan perubahan baru dengan menggabungkannya ke dalam lingkungan dev terlebih dahulu. Selanjutnya, promosikan perubahan tersebut dengan menggabungkan cabang dev ke cabang prod berikutnya.

Untuk memulai, Anda harus melakukan fork repositori solutions-terraform-cloudbuild-gitops.

  1. Di GitHub, buka https://github.com/GoogleCloudPlatform/solutions-terraform-cloudbuild-gitops.git.
  2. Di pojok kanan atas halaman, klik Fork.

    Melakukan fork ke repositori.

    Sekarang Anda memiliki salinan repositori solutions-terraform-cloudbuild-gitops dengan file sumber.

  1. Di Cloud Shell, buat clone repositori yang di-fork ini, dengan mengganti YOUR_GITHUB_USERNAME dengan nama pengguna GitHub Anda:

    cd ~
    git clone https://github.com/YOUR_GITHUB_USERNAME/solutions-terraform-cloudbuild-gitops.git
    cd ~/solutions-terraform-cloudbuild-gitops
    

Kode dalam repositori ini disusun sebagai berikut:

  • Folder environments/ berisi subfolder yang merepresentasikan lingkungan, seperti dev dan prod, yang masing-masing memberikan pemisahan logis antara workload pada berbagai tahap kematangan, pengembangan, dan produksi. Meskipun memiliki lingkungan yang semirip mungkin dengan ini merupakan praktik yang baik, setiap subfolder memiliki konfigurasi Terraform-nya sendiri untuk memastikan bahwa lingkungan tersebut dapat memiliki setelan unik sesuai kebutuhan.

  • Folder modules/ berisi modul Terraform inline. Modul ini mewakili pengelompokan logis resource terkait dan digunakan untuk berbagi kode di berbagai lingkungan.

  • File cloudbuild.yaml adalah file konfigurasi build yang berisi petunjuk untuk Cloud Build, seperti cara menjalankan tugas berdasarkan serangkaian langkah. File ini menentukan eksekusi bersyarat yang bergantung pada cabang yang digunakan Cloud Build untuk mengambil kode, misalnya:

    • Untuk cabang dev dan prod, langkah-langkah berikut dijalankan:

      1. terraform init
      2. terraform plan
      3. terraform apply
    • Untuk cabang lain, langkah-langkah berikut dijalankan:

      1. terraform init untuk semua subfolder environments
      2. terraform plan untuk semua subfolder environments

Untuk memastikan bahwa perubahan yang diusulkan sesuai untuk setiap lingkungan, terraform init dan terraform plan dijalankan untuk semua subfolder environments. Sebelum menggabungkan permintaan pull, Anda dapat meninjau paket untuk memastikan bahwa, misalnya, akses tidak diberikan kepada entitas yang tidak sah.

Mengonfigurasi Terraform untuk menyimpan status di bucket Cloud Storage

Secara default, Terraform menyimpan status secara lokal dalam file bernama terraform.tfstate. Konfigurasi default ini dapat menyulitkan tim untuk menggunakan Terraform, terutama ketika banyak pengguna menjalankan Terraform secara bersamaan dan setiap mesin memiliki pemahamannya sendiri tentang infrastruktur saat ini.

Untuk membantu Anda menghindari masalah tersebut, bagian ini mengonfigurasi status jarak jauh yang mengarah ke bucket Cloud Storage. Status jarak jauh adalah fitur backends dan, dalam tutorial ini, dikonfigurasi dalam file backend.tf—misalnya:

# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


terraform {
  backend "gcs" {
    bucket = "PROJECT_ID-tfstate"
    prefix = "env/dev"
  }
}

Pada langkah-langkah berikut, Anda akan membuat bucket Cloud Storage dan mengubah beberapa file agar mengarah ke bucket baru dan project Google Cloud Anda.

  1. Di Cloud Shell, buat bucket Cloud Storage.

    PROJECT_ID=$(gcloud config get-value project)
    gsutil mb gs://${PROJECT_ID}-tfstate
    
    1. Aktifkan Pembuatan Versi Objek untuk menyimpan histori deployment Anda:

    ```sh
    gcloud storage buckets update gs://${PROJECT_ID}-tfstate --versioning
    ```
    
    Enabling Object Versioning increases
    [storage costs](/storage/pricing){: track-type="tutorial" track-name="internalLink" track-metadata-position="body" },
    which you can mitigate by configuring
    [Object Lifecycle Management](/storage/docs/lifecycle){: track-type="tutorial" track-name="internalLink" track-metadata-position="body" } 
    to delete old state versions.
    
    1. Ganti placeholder PROJECT_ID dengan ID project di file terraform.tfvars dan backend.tf:

      cd ~/solutions-terraform-cloudbuild-gitops
      sed -i s/PROJECT_ID/$PROJECT_ID/g environments/*/terraform.tfvars
      sed -i s/PROJECT_ID/$PROJECT_ID/g environments/*/backend.tf
      

      Di OS X/MacOS, Anda mungkin perlu menambahkan dua tanda kutip ("") setelah sed -i, sebagai berikut:

      cd ~/solutions-terraform-cloudbuild-gitops
      sed -i "" s/PROJECT_ID/$PROJECT_ID/g environments/*/terraform.tfvars
      sed -i "" s/PROJECT_ID/$PROJECT_ID/g environments/*/backend.tf
      
    2. Periksa apakah semua file telah diperbarui:

      git status
      

      Outputnya akan terlihat seperti ini:

      On branch dev
      Your branch is up-to-date with 'origin/dev'.
      Changes not staged for commit:
       (use "git add <file>..." to update what will be committed)
       (use "git checkout -- <file>..." to discard changes in working directory)
             modified:   environments/dev/backend.tf
             modified:   environments/dev/terraform.tfvars
             modified:   environments/prod/backend.tf
             modified:   environments/prod/terraform.tfvars
      no changes added to commit (use "git add" and/or "git commit -a")
      
    3. Commit dan kirim perubahan Anda:

      git add --all
      git commit -m "Update project IDs and buckets"
      git push origin dev
      

      Bergantung pada konfigurasi GitHub Anda, Anda harus melakukan autentikasi untuk menerapkan perubahan sebelumnya.

    Memberikan izin ke akun layanan Cloud Build Anda

    Agar akun layanan Cloud Build dapat menjalankan skrip Terraform dengan tujuan mengelola resource Google Cloud, Anda perlu memberinya akses yang sesuai ke project Anda. Untuk mempermudah, akses editor project diberikan dalam tutorial ini. Namun, jika peran editor project memiliki izin yang luas, di lingkungan produksi, Anda harus mengikuti praktik terbaik keamanan IT perusahaan Anda, yang biasanya memberikan akses dengan hak istimewa terendah.

    1. Di Cloud Shell, ambil email untuk akun layanan Cloud Build project Anda:

      CLOUDBUILD_SA="$(gcloud projects describe $PROJECT_ID \
          --format 'value(projectNumber)')@cloudbuild."
      
    2. Berikan akses yang diperlukan ke akun layanan Cloud Build Anda:

      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member serviceAccount:$CLOUDBUILD_SA --role roles/editor
      

    Langsung menghubungkan Cloud Build ke repositori GitHub Anda

    Bagian ini menunjukkan cara menginstal aplikasi Cloud Build GitHub. Penginstalan ini memungkinkan Anda menghubungkan repositori GitHub dengan project Google Cloud, sehingga Cloud Build dapat diterapkan secara otomatis manifes Terraform setiap kali Anda membuat cabang baru atau mengirim kode ke GitHub.

    Langkah-langkah berikut memberikan petunjuk penginstalan aplikasi hanya untuk repositori solutions-terraform-cloudbuild-gitops, tetapi Anda dapat memilih untuk menginstal aplikasi ke lebih banyak atau semua repositori Anda.

    1. Buka halaman GitHub Marketplace untuk aplikasi Cloud Build:

      Buka halaman aplikasi Cloud Build

      • Jika ini pertama kalinya Anda mengonfigurasi aplikasi di GitHub, klik Setup with Google Cloud Build di bagian bawah halaman, lalu klik Grant this app access to your GitHub account.
      • Jika ini bukan pertama kalinya mengonfigurasi aplikasi di GitHub: Klik Configure access. Halaman Applications pada akun pribadi Anda akan terbuka.
    2. Klik Configure di baris Cloud Build.

    3. Pilih Only select repository, lalu pilih solutions-terraform-cloudbuild-gitops untuk terhubung ke repositori.

    4. Klik Save atau Install—label tombol akan berubah bergantung pada alur kerja Anda. Anda sekarang dialihkan ke Google Cloud untuk melanjutkan penginstalan.

    5. Login dengan akun Google Cloud Anda. Jika diminta, izinkan integrasi Cloud Build dengan GitHub.

    6. Di halaman Cloud Build, pilih project Anda. Wizard akan muncul.

    7. Di bagian Select repository, pilih akun GitHub Anda dan repositori solutions-terraform-cloudbuild-gitops.

    8. Jika Anda menyetujui persyaratan dan ketentuan ini, pilih kotak centang, lalu klik Connect.

    9. Di bagian Create a trigger, klik Create a trigger:

      1. Tambahkan nama pemicu, seperti push-to-branch. Catat nama pemicu ini karena Anda akan membutuhkannya nanti.
      2. Di bagian Event, pilih Push to a branch.
      3. Di bagian Source, pilih .* di kolom Branch.
      4. Klik Create.

    Aplikasi GitHub Cloud Build sekarang sudah dikonfigurasi, dan repositori GitHub Anda ditautkan ke project Google Cloud Anda. Mulai sekarang, perubahan pada repositori GitHub akan memicu eksekusi Cloud Build, yang melaporkan hasilnya kembali ke GitHub menggunakan Pemeriksaan GitHub.

    Mengubah konfigurasi lingkungan Anda di cabang fitur baru

    Saat ini, sebagian besar lingkungan Anda telah dikonfigurasi. Jadi, saatnya membuat beberapa perubahan kode di lingkungan pengembangan Anda.

    1. Di GitHub, buka halaman utama repositori Anda yang sudah di-fork.

      https://github.com/YOUR_GITHUB_USERNAME/solutions-terraform-cloudbuild-gitops
      
    2. Pastikan Anda berada di cabang dev.

    3. Untuk membuka file yang akan diedit, buka file modules/firewall/main.tf dan klik ikon pensil.

    4. Di baris 30, perbaiki kesalahan ketik "http-server2" di kolom target_tags.

      Nilai harus berupa "http-server".

    5. Tambahkan pesan commit di bagian bawah halaman, seperti "Perbaiki target firewall http", lalu pilih Create a new branch for this commit and start a pull request.

    6. Klik Propose changes.

    7. Pada halaman berikutnya, klik Create pull request untuk membuka permintaan pull baru dengan perubahan Anda.

      Setelah permintaan pull Anda terbuka, tugas Cloud Build akan dimulai secara otomatis.

    8. Klik Show all checks dan tunggu hingga centang berwarna hijau.

      Show all checks dalam permintaan pull.

    9. Klik Details untuk melihat informasi selengkapnya, termasuk output terraform plan di link View more details on Google Cloud Build.

    Jangan gabungkan permintaan pull Anda.

    Perhatikan bahwa tugas Cloud Build menjalankan pipeline yang ditentukan dalam file cloudbuild.yaml. Seperti yang telah dibahas sebelumnya, pipeline ini memiliki perilaku yang berbeda bergantung pada cabang yang diambil. Build akan memeriksa apakah variabel $BRANCH_NAME cocok dengan folder lingkungan mana pun. Jika demikian, Cloud Build akan menjalankan terraform plan untuk lingkungan tersebut. Jika tidak, Cloud Build akan mengeksekusi terraform plan untuk semua lingkungan guna memastikan perubahan yang diusulkan sesuai untuk semua lingkungan. Jika salah satu rencana ini gagal dijalankan, build akan gagal.

    - id: 'tf plan'
      name: 'hashicorp/terraform:1.0.0'
      entrypoint: 'sh'
      args: 
      - '-c'
      - | 
          if [ -d "environments/$BRANCH_NAME/" ]; then
            cd environments/$BRANCH_NAME
            terraform plan
          else
            for dir in environments/*/
            do 
              cd ${dir}   
              env=${dir%*/}
              env=${env#*/}  
              echo ""
              echo "*************** TERRAFORM PLAN ******************"
              echo "******* At environment: ${env} ********"
              echo "*************************************************"
              terraform plan || exit 1
              cd ../../
            done
          fi 

    Demikian pula, perintah terraform apply yang akan berjalan untuk cabang lingkungan, tetapi sepenuhnya diabaikan dalam kasus lainnya. Di bagian ini, Anda telah mengirimkan perubahan kode ke cabang baru, sehingga tidak ada deployment infrastruktur yang diterapkan ke project Google Cloud Anda.

    - id: 'tf apply'
      name: 'hashicorp/terraform:1.0.0'
      entrypoint: 'sh'
      args: 
      - '-c'
      - | 
          if [ -d "environments/$BRANCH_NAME/" ]; then
            cd environments/$BRANCH_NAME      
            terraform apply -auto-approve
          else
            echo "***************************** SKIPPING APPLYING *******************************"
            echo "Branch '$BRANCH_NAME' does not represent an official environment."
            echo "*******************************************************************************"
          fi

    Menerapkan keberhasilan eksekusi Cloud Build sebelum menggabungkan cabang

    Untuk memastikan penggabungan hanya dapat diterapkan jika setiap eksekusi Cloud Build berhasil, lanjutkan dengan langkah-langkah berikut:

    1. Di GitHub, buka halaman utama repositori Anda yang sudah di-fork.

      https://github.com/YOUR_GITHUB_USERNAME/solutions-terraform-cloudbuild-gitops
      
    2. Di bagian nama repositori Anda, klik Setelan.

    3. Di menu sebelah kiri, klik Branches.

    4. Pada bagian Branch protection rules, klik Add rule.

    5. Di Branch name pattern, ketik dev.

    6. Di bagian Protect matching branches, pilih Require status checks to pass before merging.

    7. Telusuri nama pemicu Cloud Build yang telah Anda buat sebelumnya.

    8. Klik Create.

    9. Ulangi langkah 3–7, tetapkan Branch name pattern ke prod.

    Konfigurasi ini penting untuk melindungi cabang dev dan prod. Artinya, commit harus terlebih dahulu didorong ke cabang lain, dan baru setelah itu dapat digabungkan ke cabang yang dilindungi. Dalam tutorial ini, perlindungan mengharuskan eksekusi Cloud Build berhasil agar penggabungan diizinkan.

    Mendorong perubahan pada lingkungan pengembangan

    Anda memiliki permintaan pull yang menunggu untuk digabungkan. Kini saatnya menerapkan status yang Anda inginkan ke lingkungan dev.

    1. Di GitHub, buka halaman utama repositori Anda yang sudah di-fork.

      https://github.com/YOUR_GITHUB_USERNAME/solutions-terraform-cloudbuild-gitops
      
    2. Di bagian nama repositori Anda, klik Pull requests.

    3. Klik permintaan pull yang baru saja dibuat.

    4. Klik Merge pull request, lalu klik Confirm merge.

      Confirm merge.

    5. Periksa apakah Cloud Build baru telah dipicu:

      Buka halaman Cloud Build

    6. Buka build dan periksa log.

      Setelah build selesai, Anda akan melihat tampilan seperti ini:

      Step #3 - "tf apply": external_ip = EXTERNAL_IP_VALUE
      Step #3 - "tf apply": firewall_rule = dev-allow-http
      Step #3 - "tf apply": instance_name = dev-apache2-instance
      Step #3 - "tf apply": network = dev
      Step #3 - "tf apply": subnet = dev-subnet-01
      
    7. Salin EXTERNAL_IP_VALUE dan buka alamat di browser web.

      http://EXTERNAL_IP_VALUE
      

      Penyediaan ini mungkin memerlukan waktu beberapa detik untuk mem-booting VM dan menerapkan aturan firewall. Terakhir, Anda akan melihat Environment: dev di browser web.

    8. Buka file status Terraform di bucket Cloud Storage Anda.

      https://storage.cloud.google.com/PROJECT_ID-tfstate/env/dev/default.tfstate
      

    Mendorong perubahan pada lingkungan produksi

    Setelah lingkungan pengembangan sudah diuji sepenuhnya, Anda dapat mempromosikan kode infrastruktur ke produksi.

    1. Di GitHub, buka halaman utama repositori Anda yang sudah di-fork.

      https://github.com/YOUR_GITHUB_USERNAME/solutions-terraform-cloudbuild-gitops
      
    2. Di bagian nama repositori Anda, klik Pull requests.

    3. Klik New pull request.

    4. Untuk base repository, pilih repositori yang baru saja diambil.

    5. Untuk base, pilih prod dari repositori dasar Anda sendiri. Untuk compare, pilih dev.

      Bandingkan perubahan.

    6. Klik Create pull request.

    7. Untuk title, masukkan judul seperti Promoting networking changes, lalu klik Create pull request.

    8. Tinjau perubahan yang diusulkan, termasuk detail terraform plan dari Cloud Build, lalu klik Merge pull request.

    9. Klik Confirm merge.

    10. Di konsol Google Cloud, buka halaman Build History untuk melihat perubahan yang Anda terapkan ke lingkungan produksi:

      Buka halaman Cloud Build

    11. Tunggu hingga build selesai, lalu periksa log.

      Di akhir log, Anda akan melihat sesuatu seperti ini:

      Step #3 - "tf apply": external_ip = EXTERNAL_IP_VALUE
      Step #3 - "tf apply": firewall_rule = prod-allow-http
      Step #3 - "tf apply": instance_name = prod-apache2-instance
      Step #3 - "tf apply": network = prod
      Step #3 - "tf apply": subnet = prod-subnet-01
      
    12. Salin EXTERNAL_IP_VALUE dan buka alamat di browser web.

      http://EXTERNAL_IP_VALUE
      

      Penyediaan ini mungkin memerlukan waktu beberapa detik untuk mem-booting VM dan menerapkan aturan firewall. Terakhir, Anda akan melihat Environment: prod di browser web.

    13. Buka file status Terraform di bucket Cloud Storage Anda.

      https://storage.cloud.google.com/PROJECT_ID-tfstate/env/prod/default.tfstate
      

    Anda telah berhasil mengonfigurasi pipeline infrastruktur sebagai kode tanpa server di Cloud Build. Di masa mendatang, Anda dapat mencoba hal berikut:

    • Tambahkan deployment untuk kasus penggunaan terpisah.
    • Buat lingkungan tambahan untuk mencerminkan kebutuhan Anda.
    • Gunakan project per lingkungan, bukan VPC per lingkungan.

    Pembersihan

    Setelah menyelesaikan tutorial, bersihkan resource yang dibuat di Google Cloud sehingga Anda tidak akan ditagih di masa mendatang.

    Menghapus project

    1. Di konsol Google Cloud, buka halaman Manage resource.

      Buka Manage resource

    2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
    3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

    Menghapus repositori GitHub

    Untuk menghindari pemblokiran permintaan pull baru di repositori GitHub, Anda dapat menghapus aturan perlindungan cabang:

    1. Di GitHub, buka halaman utama repositori Anda yang di-fork.
    2. Di bagian nama repositori Anda, klik Setelan.
    3. Di menu sebelah kiri, klik Branches.
    4. Di bagian Branch protection rules, klik tombol Delete untuk baris dev dan prod.

    Secara opsional, Anda dapat meng-uninstal aplikasi Cloud Build sepenuhnya dari GitHub:

    1. Buka setelan Applications GitHub.

      Buka halaman aplikasi GitHub

    2. Di tab Installed GitHub Apps, klik Configure di baris Cloud Build. Kemudian, di bagian Danger zone, klik tombol Uninstall di baris Uninstall Google Cloud Builder.

      Di bagian atas halaman, Anda akan melihat pesan yang menyatakan "You're all set. A job has been queued to uninstall Google Cloud Build."

    3. Di tab Authorized GitHub Apps, klik tombol Revoke di baris Google Cloud Build, lalu I understand, revoke access di jendela pop-up.

    Jika Anda tidak ingin menyimpan repositori GitHub Anda:

    1. Di GitHub, buka halaman utama repositori Anda yang di-fork.
    2. Di bagian nama repositori Anda, klik Setelan.
    3. Scroll ke bawah ke Danger Zone.
    4. Klik Delete this repository, dan ikuti langkah konfirmasi.

    Langkah selanjutnya