Terraform adalah tools yang berguna untuk mengelola infrastuktur anda dengan code. Dengan terraform sangat memudahkan untuk mendeploy aplikasi high-availability. Ada banyak provider yang terdaftar di Terraform Registry. Infrastructure as code mulai naik daun karena kemudahan dan bisa diprediksi.
Dengan IaC cloning server dengan berbagai konfigurasi yang rumit bisa dilakukan berulang kali dan masih mendapatkan hasil yang sama. Satu hal yang perlu di ingat walaupun anda menggunakan Terraform, anda harus tetap membaca dokumentasi dari masing-masing provider, karena tidak semua kompatibel dengan provider cloud.
Untuk menginstall Terraform sangat mudah, karena hanya butuh satu file untuk dijalankan. Cara ini bisa digunakan untuk menginstall Terraform di semua jenis Linux.
1. Download Terraform
wget https://releases.hashicorp.com/terraform/1.0.1/terraform_1.0.1_linux_amd64.zip
2. Ekstrak file zip
unzip terraform_1.0.1_linux_amd64.zip
hasil ekstrak ini akan menghasilkan satu file terraform
3. Beri akses executable
chmod +x terraform
4. Copy ke PATH /usr/bin/local agar bisa dijalankan darimana saja
proses ini membutuhkan akses sudo/root
sudo cp terraform /usr/bin/local/terraform
langkah ke-4 ini tidak terlalu perlu, karena bisa saja langung menjalankan filenya contoh /home/jaranguda/Download/terraform version
Perintah Dasar Terraform
Sebagai contoh kita akan menggunakan docker sebagai providernya. Sebelum bisa menggunakan untuk docker, terlebih dahulu install dockernya. Untuk menyimpan project terraform kita akan membuat folder baru dengan nama tutorial
mkdir tutorial
di dalam folder tutorial tersebut buat file main.tf
yang berisi
terraform { required_providers { docker = { source = "kreuzwerker/docker" } } } provider "docker" {} data "docker_registry_image" "httpd" { name = "httpd" } resource "docker_container" "httpd" { name = "tutorial-terraform-docker" image = data.docker_registry_image.httpd.name }
lalu jalankan inisialisasi
terraform init # output Initializing the backend... Initializing provider plugins... - Finding latest version of upcloudltd/upcloud... - Installing upcloudltd/upcloud v2.1.1... - Installed upcloudltd/upcloud v2.1.1 (self-signed, key ID 60B4E1988F222907) ... ...
Lakukan provision dengan menjalankan
terraform apply
Saat ditanya “Do you want to perform these actions?” ketik yes lalu tekan enter. Setelah selesai muncul informasi kurang lebih
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Verifikasi apakah pembuatan containter docker berhasil dengan perintah docker ps
> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d2e24ffceab4 httpd "httpd-foreground" 2 minutes ago Up 2 minutes 80/tcp tutorial-terraform-docker
contoh sederhana, kita ingin meng-ekspose port dari container httpd tersebut agar bisa diakses di browser (dari node). Disini kita akan mapping port 80 di container ke port 8000 di node, lakukan perubahan di file main.tf sehingga menjadi
terraform { required_providers { docker = { source = "kreuzwerker/docker" } } } provider "docker" {} data "docker_registry_image" "httpd" { name = "httpd" } resource "docker_container" "httpd" { name = "tutorial-terraform-docker" image = data.docker_registry_image.httpd.name ports { internal = 80 external = 8000 } }
aplikasikan perubahan tersebut dengan menjalankan terraform apply
sekali lagi. Cek kembali dengan docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2e6b048aeeaf httpd "httpd-foreground" 5 seconds ago Up 5 seconds 0.0.0.0:8000->80/tcp tutorial-terraform-docker
lalu buka di browser http://localhost:8000
Bila sudah selesai melakukan testing, kita langsung bisa menghapus semuanya dengan terraform destroy