Sabtu (1/9) pagi merupakan hari yang cerah saat itu, apalagi hari libur bagi saya, hehe. Bangun langsung persiapan menuju acara kece yang diselenggarakan oleh Komunitas Linux Arek Suroboyo (KLAS) di Universitas Narotama. Yaps, acara itu adalah acara Lokakarya Ansible, nah loh, apalagi itu. Sebelum itu, saya kasih pengantar dulu. cekidot ..
Konfigurasi server merupakan makanan sehari-hari bagi para sysadmin. Tidak hanya satu dua aplikasi maupun layanan yang harus disetel di satu komputer, sehingga butuh waktu yang cukup untuk menyelesaikan satu komputer. Namun bagaimana jika seorang sysadmin dengan keterbatasan waktu yang dimilikinya, harus menyetel lebih dari 1 koputer server untuk layanan-layanan yang sama. Tentu saja akan menyiksa jika harus dilakukan secara manual…
Sebenarnya ada cara yang bisa dilakukan, yaitu dengan membangun sebuah skrip bash untuk menyetel konfigurasi tiap komputer. Tapi hal ini terbatas pada sistem operasi yang digunakan maupun komponen-komponen default yang ada di tiap komputer.
Cara yang lebih praktis yaitu menggunakan piranti Ansible. Ansible merupakan piranti otomasi untuk konfigurasi dalam jaringan, baik software maulun konfigurasi peralatan jaringan seperti router (belum coba sih, tapi di modul ansible ada itu).
Nah, itu dulu pengantarnya, sekarang, gimana ya cara pakai ansible ??. Nah, di acara Lokakarya Ansible, pak Benidiktus atau yang kerap disapa pak benben, kita membutuhkan paling tidak 2 mesin linux sebagai bahan lokakarya. Mesin pertama digunakan sebagai mesin pengontrol, mesin kedua digunakan sebagai mesin yang akan dikontrol konfigurasinya
Kita perlu memasang ansible di salah satu mesin saja, dalam lokakarya ini, pak benben mengintruksikan memasang ansible di mesin pengontrol.
Oh iya, dalam hal ini, mesin yang saya gunakan sebagai pengontrol adalah Archlinux, sedangkan yang akan saya kontrol adalah Ubuntu. Untuk mesin yang akan dikontrol harus sudah bisa anda akses melalui jalur ssh
- Untuk memasang ansible ada 2 cara, pakai package manager bawaan OS atau pakai pip (python). Enaknya kalau pakai pip dari python, anda akan mendapati versi ansible terbaru, terlebih karena ansible dikembangkan menggunakan python. Saya akan menggunakan package manager bawaan OS Archlinux (via pacman).
cara pasang di Archlinux:
~ $: sudo pacman -S ansible
Untuk OS lain atau menggunakan pip, bisa cek disini - Setelah memasang,Ā kita perlu direktori kerja, buat folder baru dan masuk ke dalamnya:
~ $: mkdir lokakarya-ansible
~ $: cd lokakarya-ansible
~/lokakarya-ansible $: - Salin berkas konfigurasi default dari ansible yaitu ansible.cfg dan hosts di /etc/ansible ke direktori kerja
~/lokakarya-ansible $: cp /etc/ansible/* .
sebenarnya, itu berkas apa sih??
ansible.cfg -> berkas pengaturan yang dibaca ansible saat menjalankan perintahnya
hosts -> berkas daftar alamat server yang akan dikonfigurasi dengan ansible (lihat langkah nomer 6) - Sebelum lebih jauh, anda harus punya kunci ssh di mesin pengontrol, kalau belum buat, gunakan perintah ssh-keygen, silakan cari di internet caranya ya, hehe.
Setelah kunci ssh dibuat, salin kunci dari mesin pengontrol ke mesin yang akan dikontrol dengan perintah ssh-copy-id. Kata pak benben, biar terasa otomasinya, anda salin kunci privatnya, jadi tidak sering-sering ditanya saat mengkonfigurasi banyak server sekaligus dengan ansible, saya belum coba sih,, silakan coba sendiri ya wkwk - Oke, setelah kunci beres, kita ubah sedikit berkas ansible.cfg, disini saya pakai nano:
~/lokakarya-ansible $: nano ansible.cfg
aktifkan baris
inventory = /etc/ansible/hosts
dengan menghapus tanda pagar di depannya. Lalu tulisan/etc/ansible/hosts
diubah menjadihosts
inventory digunakan oleh ansible untuk membaca server-server yang akan kita kelola yang ada dalam file hosts. Dengan memindahkan lokasi file hosts yang semula ada di /etc/ansible, maka ansible akan membaca file hosts yang berada di direktori kerja saat ini (dalam hal ini lokakarya-ansible).berikut hasilnya:
untuk konfigurasi lain, bisa anda baca lebih lanjut di dokumentasi ansible ya, hehe š
- Untuk file hosts, isikan alamat ip dari server yang akan dikelola. contohnya seperti ini:
anda bisa melakukan grouping dengan membubuhkan tanda kurung siku seperti contoh di atas. Dengan grouping, anda bisa mengklasterkan server-server mana yang serumpun dan memiliki konfigurasi sama, baik itu OS, layanan, maupun hal lain.
- Oh iya, di server yang dikontrol usahakan ada paket python yang terpasang ya!, karena saya pakai ubuntu di mesin yang saya kontrol, saya melakukan pemasangan python dengan perintah:
sudo apt install python
- Untuk menguji coba, coba jalankan perintah ini harus di dalam direktori kerja ya(dalam hal ini: lokakarya-ansible) :
~/lokakarya-ansible $: ansible -m shell -a "whoami" 192.168.83.20
berikut penjelasannya:
-m shell -> merupakan module ansible yang akan dijalankan, sederhananya, kita mau jalanin aplikasi apa?? untuk modul komplitnya silakan cek disini:Ā https://docs.ansible.com/ansible/2.6/modules/ (kalau versi ansible-nya versi 2.6)
-a “whoami” -> merupakan argumen-argumen dari modul yang akan dijalankan, dalam hal ini kita menjalankan modul shell dengan argumen whoami
192.168.83.20 -> merupakan alamat ip server yang akan dikontrol, bisa anda ganti dengan grouping yang telah anda buat di file hosts.
Ya itu saja, selebihnya anda bisa konfigurasi lebih lanjut dengan modul-modul ansible yang telah tersedia dokumentasinya š . Perlu diingat, anda harus memperhatikan kebutuhan dari tiap modul yang hendak dijalankan, dan biasanya itu harus manual dijalankan.
Dari kasus di atas, pak benben memberikan pengalamannya ketika beliau menggunakan openSUSE 15 sebagai mesin pengontrol dan openSUSE 42.3 sebagai mesin yang akan dikontrol, yaitu belum terpasangnya paket xml di openSUSE 42.3 untuk menjalankan suatu modul dari ansible. Maka beliau harus secara manual memasang xml terlebih dahulu di openSUSE 42.3 (yang dikontrol) sebelum menjalankan ansible dari openSUSE 15 (pengontrol)
Oh iya, jika anda seorang sysadmin yang sudah membuat skrip bash untuk mengkonfigurasi server, tidak perlu kecewa, anda bisa mentranslate konfigurasi-konfigurasinya dari bash ke berkas yml untuk digunakan sebagai acuan ansible mengkonfigurasi server anda menggunakan ansible-playbook.
Untuk tutorial ansible-playbook, bisa anda dapatkan melalui internet, atau bisa sharing dengan kami maupun KLAS lain waktu..
Selamat Mencoba!!
Terima kasih KLAS atas ilmunya!
Dokumentasi kegiatan (foto dari KLAS):