Blog Personal Inganta

Berbagi pengetahuan untuk memperkaya pemahaman

03 Apr 2020

Menjajal Layanan Terraform Cloud

Terraform merupakan alat berbasis baris perintah yang populer digunakan untuk mengadakan dan mengelola sumber daya pada penyedia komputasi awan. Dalam penggunaannya, Terraform membutuhkan media penyimpanan untuk melacak dan memelihara kondisi sumber daya saat ini. Secara bawaan, Terraform menyimpan keadaan sumber daya pada berkas sistem lokal. Kondisi ini menyulitkan dalam melakukan kolaborasi dengan pengguna lainnya. Diperlukan layanan penyimpanan keadaan sumber daya terpusat yang dapat diakses oleh seluruh pengguna terraform.

Salah satu opsi penyimpanan sumber daya terpusat tersebut adalah Terraform Cloud. Terraform Cloud adalah layanan terkelola yang menyediakan penyimpanan terpusat untuk kondisi sumber daya yang dikelola oleh terraform. Fitur lain yang disediakan oleh Terraform Cloud untuk mendukung kerja sama dalam tim adalah mekanisme penguncian kondisi sumber daya. Tanpa mekanisme pengucian ini, pengguna dapat menjalankan terraform secara bersamaan yang berpotensi menimbulkan konflik. kedua fitur ini merupakan fitur kunci yang dibutuhkan untuk penggunaan terraform yang baik dan aman di dalam tim.

Terraform Cloud sebagai backend dari Terraform CLI

Pada contoh ini akan ditunjukan penggunaan Terraform Cloud sebagai media penyimpanan dan penguncian keadaan sumber daya terraform. Pastikan terraform sudah terinstall pada mesin lokal. Panduan ini dibuat pada mesin dengan sistem operasi macOS Catalina dan terraform versi v0.12.24.

  1. Kunjungi halaman https://app.terraform.io/signup/account untuk membuat akun Terraform Cloud.
  2. Masuk ke layanan Terraform Cloud.
  3. Buat organisasi baru pada akun Terraform Cloud jika belum ada.
  4. Buat token pengguna API baru melalui halaman https://app.terraform.io/app/settings/tokens
    1. Klik tombol Create an API Token Pembuatan token pada TF Cloud
    2. Isi deskripsi pada isian Description kemudian klik tombol Create API token TF Cloud deskripsi token
    3. Salin token sebelum menekan tombol Done Token baru pada TF Cloud
  5. Buat berkas pada lokasi $HOME/.terraformrc dengan isian sebagai berikut
    credentials "app.terraform.io" {
        token = "<Ganti aku dengan token Terraform Cloud>"
    }
    
  6. Buat berkas main.tf dengan isi sebagai berikut
    terraform {
        backend "remote" {
            organization = "<Ganti aku dengan nama organisasi Terraform Cloud>"
    
            workspaces {
                name = "try-tf-cloud"
            }
        }
    }
    
  7. Buka terminal dengan lokasi kerja direktori dimana berkas main.tf berada dan inisialisasi Terraform dengan menjalankan perintah terraform init
  8. Eksekusi terraform dengan perintah terraform apply. Keluaran dari perintah terraform apply akan muncul pada layar konsol dan bisa juga dilihat pada layar web Terraform Cloud Detil eksekusi pada TF Cloud

Simulasi menjalankan 2 perintah terraform secara bersamaan

Terraform Cloud mengelola antrian eksekusi beberapa perintah terraform apply. Hal ini memastikan beberapa perintah terraform apply dijalankan secara serial sehingga menghindari kemungkinan terjadinya konflik.

  1. Buka terminal dengan lokasi direktori kerja dimana berkas main.tf berada.
  2. Inisialisasi terraform dengan perintah terraform init.
  3. Eksekusi script terraform dengan perintah terraform apply.
  4. Buka terminal baru dengan lokasi direktori kerja dimana berkas main.tf berada.
  5. Eksekusi script terraform dengan perintah terraform apply. Perintah akan menunggu giliran seperti pada keluaran di bawah.
    Running apply in the remote backend. Output will stream here. Pressing Ctrl-C
    will cancel the remote apply if it's still pending. If the apply started it
    will stop streaming the logs, but will not stop the apply running remotely.
    
    Preparing the remote apply...
    
    To view this run in a browser, visit:
    https://app.terraform.io/app/roy-trial/try-tf-cloud/runs/run-n6gqkVMpJNSY9nXB
    
    Waiting for 1 run(s) to finish before being queued...
    Waiting for 1 run(s) to finish before being queued... (30s elapsed)
    

    Antrian juga dapat dilihat pada dasbor web Terraform Cloud seperti pada gambar di bawah Daftar antrian pada TF Cloud

Terraform Cloud sebagai lingkungan eksekusi jarak jauh Terraform

Selain sebagai penyimpanan terpusat keadaan sumber daya, Terraform Cloud juga mendukung layanan eksekusi Terraform. Layanan ini membutuhkan koneksi ke layanan version control sebagai sumber script terraform yang akan dijalankan. Panduan berikut akan memberi gambaran integrasi antara Terraform Cloud dan Github.

  1. Buat repositori baru untuk menyimpan kode Terraform di Github.
  2. Buka terminal, buat direktori baru, dan pindah ke direktori baru tersebut.
    mkdir try-tf-cloud
    cd try-tf-cloud
    
  3. Buat berkas dengan name main.tf dengan isi seperti di bawah.
    terraform {
        backend "remote" {
            organization = "<Ganti aku dengan nama organisasi Terraform Cloud>"
        }
    }
    
    resource "null_resource" "parallel_run" {
        provisioner "local-exec" {
            command = "ls -l; whoami; uname -a; sleep 10"
        }
    }
    
  4. Simpan perubahan ke dalam repositori dan setor ke Github
    git init
    git add .
    git commit -m 'Initial commit'
    git remote add origin <Alamat repositori GH> # Ganti Alamat repositori GH dengan alamat repositori yang dibuat pada langkah #1
    git push -u origin master
    
  5. Masuk ke layanan Terraform Cloud, dan klik tombol New workspace untuk mulai membuat area kerja baru.
    1. Pilih Github pada daftar sistem kontrol versi Pilih Github
    2. Authorisasi Terraform Cloud untuk mengakses repositori pada Github Authorisasi TF Cloud
    3. Pilih repositori dimana kode sumber Terraform berada Pilih kode sumber
    4. Atur nama area kerja, kemudian klik tombol Create workspace untuk membuat area kerja baru Nama area kerja
  6. Jalankan Terraform Cloud dengan menekan tombol Queue plan. Hal ini diperlukan untuk mengeksekusi terraform pertama kali.
  7. Klik tombol Confirm & Apply untuk melanjutkan eksekusi Konfirmasi dan terapkan.
  8. Isi pesan konfirmasi dan klik tombol Confirm Plan untuk menerapkan perubahan Pesan konfirmasi
  9. Berikut contoh laporan ringkasan eksekusi terraform yang berhasil dilakukan oleh Terraform Cloud. Ringkasan hasil eksekusi TF Cloud

Terraform Cloud akan menjalankan kode sumber terraform setiap kali ada perubahan yang disetor ke cabang utama repositori di Github.