Melanjut dari artikel sebelumnya: Configuration Management Dasar Menggunakan Ansible (Bagian 1). Seperti yang sudah saya bicarakan sebelumnya pada post tersebut, kali ini saya akan coba jelaskan Configuration Management Dasar menggunakan Ansible Playbook.
Sekilas tentang Ansible Playbook, jika sebelumnya kita menjalankan task task secara Ad-Hoc atau satu per satu. Dengan bantuan Ansible Playbook, kita dapat mendefinisikan sekumpulan task ke dalam 1 file (YAML), sehingga dengan hanya menjalankan 1 command, banyak task yang dapat dijalankan/dieksekusi. Hal ini mengacu kepada Dokumentasi Ansible Playbook.
Selain menyederhanakan eksekusi task, file-file YAML yang berisi task juga dapat disimpan ke repository. Sehingga setiap orang atau member yang membutuhkan code tersebut, dapat dengan mudah mengambil atau pull code tersebut. Selain itu jika ada perubahan dan dengan mudah melakukan push dan merge code di repository. Hal ini juga bisa disebut sebagai Infrastructure as a Code (IaC).
Topologi yang digunakan masih sama dengan post di bagian 1. Terdapat total 3 buah nodes server. node1 akan bertindak sebagai control plane dimana Ansible terinstall di node ini. Kemudian akan ada node2 dan node3 yang bertindak sebagai child node dimana nantinya konfigurasi akan diteruskan atau di-push ke node node tesebut.
Skenarionya adalah dari control plane node akan melakukan instalasi aplikasi, namun kali ini dengan menjalankan ansible-playbook dari control plane node dan secara paralel konfigurasi akan berjalan ke semua node
Lingkungan sistem juga masih sama dengan post di bagian 1, yaitu 3 node AWS EC2 Instance yang berjalan menggunakan sistem operasi Ubuntu 20.04. Metode instalasi Ansible menggunakan metode instalasi via pip (Python package manager). Versi Python yang digunakan adalah versi 3.8.5
Berikut langkah-langkah konfigurasinya:
-
Seperti pada post bagian 1, konfigurasi saya lakukan di dalam virtual environment. Kemudian saya buat 1 file baru dengan nama docker-install.yml
cd demo-ansible source bin/activate cd lib/python3.8/site-packages/demo-ansbile touch docker-install.yml
-
Pada contoh kali ini, saya ingin melakukan instalasi awal Docker. Konfigurasi file docker-install.yml seperti berikut
Langkah-langkah di atas mengacu kepada Dokumentasi Instalasi Docker di Ubuntu
-
Sebelum melanjutkan konfigurasi, sekilas saya ingin jelaskan detail detail dari file .yml di atas
Pada bagian ini, kita akan mendifinsikan awal file YAML yaitu ditandai dengan karakter "—". Kemudian saya sebutkan hosts mana saja yang akan dieksekusi (hosts: nodes). Kemudian dengan bantuan command "become: true", kita akan menjalankan command sebagai sudoer. Task pertama yang saya definisikan adalah update apt.
Selanjutnya, sesuai instruksi dari dokumentasi instalasi, saya definisikan task task terkait instalasi dependency, menambahkan GPG file dan menambahkan stable repository.
Terakhir saya definisikan task update apt kembali dan install docker
-
Langkah konfigurasi berikutnya adalah menjalankan command ansible-playbook dengan mengacu kepada file docker-install.yml di atas.
ansible-playbook docker-install.yml
Selanjutnya ansible akan menjalankan task task yang sudah di-definsikan hingga akhir. Pastikan seluruh task berjalan sukses.
-
Setelah semua task selesai dan sukses dijalankan. Selanjutnya kita pastikan bahwa docker sudah terinstall di node2 dan node3.
Dari contoh di atas, kita sudah dapat mensimulasikan configuration management yang lebih efisien menggunakan Ansible Playbook. Dan harapannya akan lebih memudahkan kita juga di saat kita perlu konfigurasi infrastruktur dengan jumlah yang banyak dan terdapat repetisi di dalamnya. Dan dengan metode IaC ini kita juga dapat berkolaborasi dalam menyusun configuration management, karena source code dapat kita simpan dan bagikan via repository.
Sekian artikel kali ini dan semoga bermanfaat.
Tinggalkan Balasan