Deploy Ansible AWX di CentOS

AWX adalah perangkat lunak berbasis web yang digunakan sebagai user interface dan penyedia REST API untuk engine Ansible. AWX merupakan versi upstream dari Ansible Tower, sama seperti biasanya Red Hat selalu mewujudkan representatif layanan berbayarnya dengan project - project open source sebagai development version. Jika Ansible Tower membutuhkan biaya untuk subscription, maka AWX sama sekali tidak dipungut biaya.
Ansible
Contoh Kasus
Sebagai contoh misalkan kita memiliki tugas untuk mengganti nameserver menjadi 8.8.8.8
pada puluhan hingga ratusan server. Pada proses tradisional, kita akan melakukan login (misalnya melalui SSH) kemudian memanipulasi file /etc/resolv.conf
pada masing - masing server, tentu saja mengulang-ulang tugas yang sama adalah hal membosankan. Mungkin kita bisa berusaha membuat sebuah shell script (misalnya bash
) yang dijalankan sebagai program untuk melakukan itu semua, tapi tidak semua orang mau melakukan effort tersebut. Maka kita dapat menggunakan Ansible sebagai solusi, cukup install Ansible pada Control Node yang dapat terkoneksi dengan list server. Kemudian memasukkan seluruh list hostname atau alamat IP server ke dalam file inventory, dan menjalankan Ansible Ad-Hoc berisi instruksi perintah untuk mengganti isi file /etc/resolv.conf
lalu masalah terselesaikan. Sedangkan untuk tugas yang lebih rumit kita dapat menulisnya ke dalam script YAML untuk kemudian dieksekusi dengan Ansible Playbook.
Prerequisites
Sebelum melanjutkan lebih jauh, pastikan sudah memenuhi beberapa prasyarat berikut.
System Requirements
Untuk mendapatkan performa yang baik saat pertama kali melakukan deployment, setidaknya dibutuhkan spesifikasi seperti berikut.
- 4 GB Memory
- 2 Core CPU
- 20 GB Storage
Saya akan menggunakan VM Guest CentOS 8 sebagai Control Node. Namun jika ingin menggunakan CentOS 7 setidaknya gunakan CentOS 7.7 atau versi lebih baru.
root
.Disable SELinux
Untuk sementara saya merubah SELinux menjadi permissive
agar proses deployment berjalan lancar.
|
|
EPEL dan Extra Packages
Jalankan perintah berikut ini.
|
|
Instalasi Ansible
Kita membutuhkan Ansible Engine versi 2.8 atau lebih baru. Jalankan perintah berikut ini.
|
|
Paket Tambahan
Jalankan perintah berikut ini untuk memasang beberapa paket tambahan.
|
|
Development Tools
AWX membutuhkan beberapa paket lain dari group Development Tools untuk GNU Make.
|
|
Docker dan Docker Compose
Karena AWX akan dijalankan di container, by-default AWX menyarankan untuk memakai Docker CE.
|
|
Lalu pasang docker-compose
menggunakan pip3
.
|
|
root
maka tambahkan user tersebut ke dalam group docker
kemudian logout dan login kembali. Menambahkan user ke dalam suatu grup dapat dilakukan dengan perintah sudo usermod -aG docker user
Deploy AWX
Clone Repository
Periksa terlebih dahulu release yang tersedia dari remote repository AWX pada halaman releases. Kemudian jalankan clone dengan perintah berikut.
|
|
x.y.z
adalah versi yang akan digunakan, misalnya pada halaman release terdapat versi 17.0.1
. Melakukan clone tanpa definisi versi branch akan diarahkan langsung menuju branch HEAD
yang berisi versi development, hal tersebut tidak disarankan karena sangat tidak stabil.Generate Secret Key
Biasanya AWX membutuhkan Secret Key, kita dapat membuatnya menggunakan openssl
yang sudah tersedia di CentOS 8.
|
|
Catat output yang dihasilkan dari perintah diatas.
Edit Inventory
Buka file inventory yang terdapat dalam direktori instaler AWX misalnya menggunakan vi
.
|
|
Cari dan edit beberapa baris yang ada seperti berikut.
|
|
SECRET_KEY
dengan output yang tadi dihasilkan oleh openssl
, dan ganti PASSWORD_AWX
dengan password untuk login ke dalam user interface.Membuat Direktori Project
Karena kita mengaktifkan variabel project_data_dir
maka kita perlu membuat direktorinya juga.
|
|
Direktori tersebut nantinya akan berisi project yang akan kita gunakan dalam AWX.
Konfigurasi Firewall
Supaya AWX dapat diakses dari luar VM maka kita perlu melakukan beberapa konfigurasi firewall.
|
|
Deployment
Eksekusi file YAML bernama install.yml
menggunakan ansible-playbook
.
|
|
Proses akan memakan waktu cukup lama hingga akhirnya selesai. Apabila tidak ada kendala maka akan muncul tampilan seperti berikut.
|
|
Post-Deployment
Jangan lupa untuk mengembalikan kondisi SELinux menjadi enforcing
dari yang tadinya telah kita manipulasi menjadi permissive
.
|
|
Pengujian
Periksa apakah ada container yang berjalan.
|
|
Jika berhasil maka akan ada 4 container yang dalam status Up
.
|
|
Sekarang coba buka user interface AWX di Web Browser menggunakan alamat IP milik VM. Jika berhasil kita dapat melakukan login memakai username dan password yang sebelumnya telah kita isi pada file inventory
.
Kesimpulan
Berdasarkan FAQ (Frequently Asked Questions) dikatakan bahwa AWX sangat tidak dianjurkan untuk dipakai di production, namun jika untuk sekedar mempelajari fitur-fitur yang ada saya rasa AWX sudah cukup. Jika sudah terbiasa mengoperasikan AWX, kita bisa saja beralih untuk berlangganan Ansible Tower di production environment. Selama saya mencoba melakukan deployment AWX, saya melihat banyak sekali issue masih dalam status Open di repositori Github milik AWX.