Tools DevOps
Terraform
Pada tulisan saya kali ini, saya akan berbagi pengetahuan terkait tool DevOps yang sering digunakan dalam iterasi pengembangan perangkat lunak. Pengetahuan dan materi ini saya peroleh setelah saya menonton video pembelajaran oleh mas Giri Kuncoro seputar Terraform.
Selamat membaca!
Saya akan membagi tulisan ini kedalam beberapa bagian, yaitu:
- Apa itu Terraform?
- Terraform untuk apa?
- Perbedaan Terraform dan Ansible
- Cara kerja Terraform dan perintah dasar
- contoh file Terraform
Apa itu Terraform?
Terraform ada alat yang digunakan untuk:
1. Otomasi infrastruktur
2. platform diatas infrastruktur
3. Service diatas Platform
Kelebihan Terraform
- Open Source
- Instruksi bersifat/bergaya deklaratif = tulis hasil yang kita inginkan (What)
Terraform untuk Provision Infrastruktur
Terraform sering digunakan untuk provision/membuat infrastruktur pada Cloud Services seperti GCP (GCE) atau AWS (EC2), seperti:
- membuat VPC
- Menjalankan dan membuat virtual machines/server
- Membuat user dan policy
- instal Docker dan lainnya
Provision Infrastruktur ini biasanya dilakukan oleh team DevOps sehingga Software Developer bisa dengan mudah deploy aplikasi yang telah dibuat oleh team DevOps tersebut.
Persamaan dan Perbedaan Terraform dan Ansible
Persamaan
Keduanya sama-sama merupakan tool Infrastuktur as Code. Artinya, kedua tool ini sama-sama mengotomasi -> provision, Konfigurasi, dan manage infrastruktur
Perbedaan
- Terraform biasanya hanya dipakai untuk provision infra. Sementara, Ansible adalah tool untuk konfigurasi infra yang sudah ada/sudah jadi.
- Terraform lumayan baru sementara ansible lebih mature.
Kelebihan Terraform
Membuat infrastruktur di cloud
Tools untuk otomasi perubahan infrastuktur terus-menerus. Misalnya: Menambah 4 VM baru, mengubah spesifikasi/kapasitas VM, mengubah firewall, whitelist Public IP yang baru dengan partner yang akses aplikasi kita.
Replikasi Infrastuktur
Kita dapat menggunakan terraform untuk set-up infrastruktur yang sama di stagging environment dan menerapkannya di Production environment. Dengan cara menggunakan file Infra as Code yang sama dari environment sebelumnya di environment target.
Cara Kerja Terraform
Pertanyaannya adalah bagaimana cara Terraform terhubung ke cloud/platform provider seperti GCP, aws dan lainnya? Jawabannya akan kita temukan setelah kita tahu arsitektur Terraform itu seperti apa dan terdiri dari apa-apa saja.
Arsitektur Terraform (TF)
- Core Component
Core Component membutuhkan 2 input yaitu: TF config dan State.
Lalu Core component akan menerima 2 input ini dan membuatkan TF Plan. Maksudnya adalah TF plan akan membandingkan State sekarang vs State yang diinginkan (Config file), apa yang perlu di buat/update/hapus?. TF plan akan cari tahu langkah-langkah apa / plan apa yang perlu dilakukan dari state sekarang supaya bisa sampai ke state yang diinginkan.
2. Provider
Provider Berfungsi untuk menghubungkan terraform ke penyedia resource, seperti GCP/AWS/Azure, kubernetes dan juga service-service lainnya seperti mysql dan postgresql providers. Jadi Terraform dapat dipakai untuk setup aplikasi secara lengkap dari mulai infrastuktur seperti vm atau user, resource pada kubernetes seperti deployment dan namespace dan juga setup ke 10.000 ++ service-service provider lainnya.