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.
- Kunjungi halaman https://app.terraform.io/signup/account untuk membuat akun Terraform Cloud.
- Masuk ke layanan Terraform Cloud.
- Buat organisasi baru pada akun Terraform Cloud jika belum ada.
- Buat token pengguna API baru melalui halaman https://app.terraform.io/app/settings/tokens
- Klik tombol Create an API Token
- Isi deskripsi pada isian Description kemudian klik tombol Create API token
- Salin token sebelum menekan tombol Done
- Buat berkas pada lokasi $HOME/.terraformrc dengan isian sebagai berikut
credentials "app.terraform.io" { token = "<Ganti aku dengan token Terraform Cloud>" }
- Buat berkas main.tf dengan isi sebagai berikut
terraform { backend "remote" { organization = "<Ganti aku dengan nama organisasi Terraform Cloud>" workspaces { name = "try-tf-cloud" } } }
- Buka terminal dengan lokasi kerja direktori dimana berkas main.tf berada dan inisialisasi Terraform dengan menjalankan perintah
terraform init
- Eksekusi terraform dengan perintah
terraform apply
. Keluaran dari perintahterraform apply
akan muncul pada layar konsol dan bisa juga dilihat pada layar web Terraform 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.
- Buka terminal dengan lokasi direktori kerja dimana berkas main.tf berada.
- Inisialisasi terraform dengan perintah
terraform init
. - Eksekusi script terraform dengan perintah
terraform apply
. - Buka terminal baru dengan lokasi direktori kerja dimana berkas main.tf berada.
- 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
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.
- Buat repositori baru untuk menyimpan kode Terraform di Github.
- Buka terminal, buat direktori baru, dan pindah ke direktori baru tersebut.
mkdir try-tf-cloud cd try-tf-cloud
- 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" } }
- 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
- Masuk ke layanan Terraform Cloud, dan klik tombol New workspace untuk mulai membuat area kerja baru.
- Pilih Github pada daftar sistem kontrol versi
- Authorisasi Terraform Cloud untuk mengakses repositori pada Github
- Pilih repositori dimana kode sumber Terraform berada
- Atur nama area kerja, kemudian klik tombol Create workspace untuk membuat area kerja baru
- Jalankan Terraform Cloud dengan menekan tombol Queue plan. Hal ini diperlukan untuk mengeksekusi terraform pertama kali.
- Klik tombol Confirm & Apply untuk melanjutkan eksekusi .
- Isi pesan konfirmasi dan klik tombol Confirm Plan untuk menerapkan perubahan
- Berikut contoh laporan ringkasan eksekusi terraform yang berhasil dilakukan oleh Terraform Cloud.
Terraform Cloud akan menjalankan kode sumber terraform setiap kali ada perubahan yang disetor ke cabang utama repositori di Github.