Otomasi dan Provisioning Server Menggunakan Ansible
Pada proyek akhir ini, penulis membuat suatu infrastruktur sederhana di suatu cloud platform yang akan di-manage secara otomatis menggunakan Ansible. Infrastruktur yang dibuat terdiri atas satu server yang berfungsi sebagai load balancer dan tiga server yang menyediakan backend services yang berada pada suatu jaringan internal. Server load balancer akan tersambung langsung ke internet dan akan meneruskan request yang datang ke backend service yang sesuai. Backend services yang dibuat terdiri atas dua services yaitu XYZ Service dan ABC Service. Terdapat dua server yang menjalankan XYZ Service dan satu server yang menjalankan ABC Service. Server-server tersebut nantinya akan di-manage oleh Provisioner server yang berfungsi sebagai Ansible Controller. Untuk mempermudah manajemen, server-server yang ada dikelompokkan menjadi beberapa group pada inventory Ansible.
Pembuatan playbook instalasi NGINX dilakukan dengan membuat roles terlebih dahulu. Roles untuk instalasi NGINX diberi nama install_nginx. Di dalam roles tersebut terdapat tiga buah direktori yaitu defaults, tasks, dan templates. Task yang akan dieksekusi ketika menjalankan roles install_nginx meliputi Install NGINX menggunakan apt package manager, membuat file konfigurasi NGINX, ,membuat file konfigurasi service NGINX custom, membuat log file NGINX dan konfigurasi logrotate untuk log file, membuat file html sebagai halaman utama ketika mengakses NGINX, dan restart NGINX dan memastikan NGINX sudah berjalan.
Sama seperti sebelumnya, pembuatan playbook untuk deploy backend service dilakukan dengan membuat roles terlebih dahulu. Roles untuk deploy backend service diberi nama deploy_app. Di dalam roles tersebut terdapat tiga buah direktori yaitu defaults, tasks, dan templates. Task yang akan dieksekusi ketika menjalankan roles deploy_app meliputi Instal python3 dan pip3, clone repository server yang telah dibuat, install library yang dibutuhkan dengan pip3, membuat service configuration, restart service configuration, dan mengecek apakah service configuration sudah berjalan,
Pembuatan playbook untuk service health check juga dilakukan dengan membuat roles . Roles untuk service health check diberi nama health_check. Di dalam roles tersebut terdapat dua buah direktori yaitu defaults dan tasks. Tahapan task yang dieksekusi ketika menjalankan roles ini diawali dengan melakukan HTTP Request ke masing-masing service untuk mendapatkan status dari service. Selanjutnya jika service bermasalah (down), server Provisioner mengirimkan notifikasi status service ke bot Telegram dan service akan di-restart. Kemudian Server Provisioner mengirimkan notifikasi apakah proses restart service berhasil atau tidak ke bot Telegram.
Project Author(s)
Gelar Pambudi A. (18117020), Karisa Ardelia H. (18117022)