Saturday, December 16, 2017

Building Simple Infrastructure using Terraform

Apa itu Terraform?

adalah sebuah tools yang bisa digunakan untuk membangun, mengubah infrastruktur secara aman yang dituliskan kedalam sebuah kode. Sehingga sering dikenal dengan Terraform = Infrastructure as Code.
Sebagai contoh adalah anda mungkin mempunyai akun di AWS, Azure atau di cloud platform lainnya. Untuk melakukan pengadaan server baru, kita bisa melakukan hal tersebut dengan klik klak di dashboard si provider. Atau bisa juga dengan menjalankan command line dengan menggunakan cli yang sudah disediakan si provider. Hal tersebut sebenarnya tidak menjadi masalah apabila kita diminta hanya membuat 1-2 server, tapi bagaimana kalau kita diminta untuk melakukan hal yang sama terhadap ratusan server bahkan ribuan server. Dan hal itu masih terkait pengadaan server, bagaimana jika terjadi perubahan misalnya size memory, type instance, bahkan konfigurasi file untuk aplikasi yang berjalan di dalam server. Maka dengan itu, Terraform adalah salah satu solusi untuk masalah diatas.

Dengan Terraform kita bisa membuat sejumlah server sekaligus dengan serangkaian kode yang telah kita defenisikan sebelumnya.

Pada sharing kali ini, saya akan coba buat 3 server sekaligus pada Google Cloud Platform,

  1. Sebelumnya, saya asumsikan bahwa rekan sekalian sudah melakukan instalasi terraform terlebih dahulu. Jika belum, bisa dilakukan dengan cara berikut
  2. Jika sudah, kita akan membuat sebuah simple kode untuk membuat server di google cloud
    seperti bahasa pemrograman lain, terraform juga memiliki ekstensi file khusus dengan akhiran .tf
    Berikut adalah contoh kode terraform:
    1. provider "google" {
    2.   credentials = "${file("account.json")}"
    3.   project     = "my-terraform-project"
    4.   region      = "asia-southeast1-a"
    5. }
    6. resource "google_compute_instance" "default" {
    7.   name         = "terraform-${count.index}"
    8.   count        = 3
    9.   machine_type = "n1-standard-1"
    10.   zone         = "asia-southeast1-a"

    11.   tags = ["foo", "bar"]
    12.   network_interface {
    13.     network= "default"  
    14.   }

    15.   boot_disk {
    16.     initialize_params {
    17.       image = "debian-cloud/debian-8"
    18.     }
    19.   }

    Sedikit penjelasan program diatas adalah bahwa kita akan membuat server dengan menggunakan di GCP, dengan menggunakan credential file "account.json". Server ini akan dibuild didalam sebuah project dengan nama "my-terraform-project" di region "asia-southeast1-a"
    Lalu setelah provider kita tentukan, kita akan buat resource apa yang akan kita gunakan dari provider tersebut. Terraform sebenarnya menyediakan resource apa saja yang sudah mereka support untuk setiap provider. Seperti pada halaman berikut untuk google cloud dan masih banyak lagi.
    Nah pada bagian resource, kita tentuin parameter apa aja yang kita perlu selain parameter yang bersifat diharuskan. Pertama ada nama untuk setiap VM yang akan di create. Kedua jumlah VM yang akan di create, jika parameter tidak ada maka server yang di create hanya 1. Lalu tipe machine yang digunakan untuk setiap server. Lalu tentukan zone untuk server yang akan dibuat. Terakhir adalah boot_disk, dimana parameter berfungsi untuk menentukan apa image atau OS yang akan digunakan untuk server tersebut.
    Setelah kode diatas selesai dibuat, dan disimpan dalam file dengan ekstensi *.tf. Kita akan jalankan perintah $terraform init pada direktori file *.tf kita berada.
    Perintah terraform init ini berfungsi untuk mengunduh plugin yang terkait dengan infrastruktur kita. Berikut contoh output setelah menjalankan terraform init.
    Lalu setelah itu, kita akan menjalankan terraform plan. Command ini akan men-generate execution plan, untuk memberikan informasi tentang apa aja yang akan kita buat sesuai dengan kode sebelumnya. Berikut contoh output untuk terraform plan.
    Selanjutnya, jika sudah plan kita sudah sesuai, kita akan eksekusi kode terraform tersebut dengan menjalankan command terraform apply. Setelah kita apply maka akan ada 3 server baru di akun GCP kita. Berikut adalah contoh tampilan dari output terraform apply. Seperti gambar dibawah ada 3 kali proses creating server sesuai dengan count yang kita define di kode sebelumnya.

    Dan juga tampilan server yang baru pada dashboard google cloud.
    Sekian sharing saya kali ini, semoga bermanfaat.




No comments:

Post a Comment