Melihat pak Andi Sugandi menggunakan vagrant untuk menyediakan lab VM saat beliau mengajar, saya pun jadi penasaran. Karena provisioning VM menggunakan vagrant ini sepertinya mengasyikkan, terutama karena….. Nanti deh saya ceritain apa, dan mengapa ini penting saya utarakan.
Apa itu Vagrant?
Tampilan Website Vagrant |
Vagrant merupakan sebuah perangkat lunak yang digunakan untuk penyiapan (provisioning) lingkungan virtual, misalnya menggunakan VirtualBox, vmware, dan lain-lain, sehingga kita dapat membuat lingkungan development secara portabel, konsisten, dan lebih fleksibel.
Lalu mengapa saya membutuhkan ini? Kenapa ya? saya kan bukan developer, hehehee. Oke, Iya, pekerjaan saya lebih banyak berurusan dengan infra (server, network, dan cloud provider). Namun justru di situ, karena Vagrant ini juga berurusan dengan Mesin Virtual (VM), saya pun untuk hal tertentu membutuhkannya.
Misalnya, untuk keperluan demo pada saat mengajar, atau saat mencoba/riset akan sebuah aplikasi yang akan dipasang di server. Pada titik tertentu saya perlu menyiapkan serbuah VM untuk testing, dan VM tersebut dapat disiapkan dengan secepat kilat ketika saya menggunakan Vagrant. Ini yang membuat Vagrant menjadi menarik, hehehe…
Vagrant Provider
Nah, ini yang menjadi alasan kenapa saya menulis postingan ini adalah…. jeng jeng jeng… Libvirt. Libvirt merupakan sebuah Virtualization API (demikian singkatnya) favorit saya untuk saya jalankan di laptop untuk membuat VM. Pembaca yang budiman mungkin sudah mengenal yang namanya VirtualBox. Kira-kira hampir mirip lah, bedanya kalo libvirt itu hanya menyediakan Virtualization API saja.
Kalo VirtualBox dia memiliki GUI yang dapat kita klak-klik untuk membuat sebuah VM, di libvirt saya menggunakan virt-manager
untuk GUI-nya dan virsh
untuk CLI-nya. Jadi, alasan saya menulis ini karena si Vagrant sudah mendukung libvirt sebagai provider-nya untuk membuat VM, dan saya yakin belum ada orang yang menulis panduan instalasi untuk openSUSE Leap 15.2 dalam bahasa Indonesia (meskipun saya belum sempat googling untuk membuktikan keyakinan saya yang satu ini).
Proses instalasi
Seperti tertulis di judul, saya menggunakan sistem operasi openSUSE Leap 15.2 di laptop saya sebagai kendaraan kerja sehari-hari (daily driver). Jadi, perintah-perintah berikut akan relevan dijalankan pada sistem operasi tersebut. Jika pembaca menggunakan sistem operasi lain dan hanya membutuhkan referensi pada catatan ini, silakan melanjutkan membaca atau langsung menuju pada bagian referensi di bawah.
Catatan: Jangan copas perintah apapun tanpa memahami fungsi dari perintah tersebut.
Pertama, kita install libvirt
beserta virt-manager
sebagai komponen utama pada tutorial ini. Meskipun sebenarnya paket virt-manager
ini opsional, tetap saya pasang karena saya membutuhkannya sebagai antar muka grafisnya.
sudo zypper install virt-manager qemu libvirt qemu-kvm
Kira-kira seperti ini nih penampakan grafisnya di laptop saya:
Oke, selanjutnya kita pasang vagrant
beserta vagrant-libvirt
, yaitu plugin libvirt untuk vagrant. Ini penting agar vagrant dapat terhubung ke libvirt.
sudo zypper install vagrant vagrant-libvirt vagrant-vim
Catatan: Perhatikan bahwa perintah-perintah pada catatan ini dijalankan dengan user biasa. Jika pembaca mengikuti catatan ini dan terlanjur menggunakan root
, silakan ubah variabel $USER
di bawah dengan user yang dimaksud (user biasa).
sudo usermod -aG libvirt $USER
Perintah tersebut berfungsi untuk menambahkan user
biasa ke dalam grup libvirt
. Lakukan verifikasi dengan perintah berikut:
grep libvirt /etc/group
Jika hasilnya sebagai berikut (perhatikan ada penambahan user samsul
atau user yang dimaksud di akhir baris):
libvirt:x:453:samsul
maka perintah tadi berhasil. Selanjutnya kita edit file konfigurasi libvirt sebagai berikut:
sudo vim /etc/libvirt/libvirtd.conf
Hapus komentar pada baris-baris yang berisi teks berikut:
unix_sock_group = "libvirt"
unix_sock_ro_perms = "0777"
unix_sock_rw_perms = "0770"
unix_sock_admin_perms = "0700"
Simpan dan keluar dengan menekan tombol Escape
, lalu :wq
. Selanjutnya agar perubahan tadi dapat berpengaruh ke sistem, lalukan restart service libvirtd
sebagai berikut.
sudo systemctl restart libvirtd
sudo systemctl status libvirtd
Sampai di sini, vagrant dengan provider libvirt siap digunakan. Langkah berikutnya saatnya kita menggunakan vagrant. Pastikan perintah vagrant
dapat dieksekusi di terminal kita.
vagrant --version
Lalu kita siapkan direktori project-nya, misalnya saya akan membuat seperti berikut :
mkdir project1
cd project1
vagrant init centos/8 --box-version 1905.1
Perintah-perintah tersebut secara berurutan, kita membuat sebuah folder bernama project1
, pindah ke dalam folder tersebut, lalu kita inisiasi project vagrant dengan perintah vagrant init
. Perintah terakhir akan membuat sebuah file bernama Vagrantfile
, di dalam file tersebut dideskripsikan tipe mesin, OS, dan versi yang akan digunakan. Referensi lengkap tentang Vagrantfile dapat dibaca di sini.
Untuk menjalankannya kita eksekusi perintah berikut :
vagrant up --provider=libvirt
Untuk lebih jelasnya saya buatkan screencast sebagai berikut:
VM yang dibuat oleh vagrant juga dapat dilihat/dimodifikasi/diapain aja melalui Virt Manager :
Perintah-perintah Vagrant
Daftar perintah berikut merupakan perintah yang sering digunakan, khususnya saya sendiri dalam pekerjaan sehari-hari. Untuk merujuk daftar yang lebih lengkap dapat dilihat dengan perintah vagrant --help
atau merujuk langsung ke dokumentasinya.
- up
Perintah ini akan membuat dan menjalankan mesin guest berdasarkan file Vagrantfile
yang dibuat. Ini merupakan perintah yang paling penting, karena digunakan untuk membuat mesin Vagrant. Siapa pun yang menggunakan Vagrant pastinya akan menggunakan perintah ini untuk pekerjaan sehari-harinya.
- ssh
Perintah ssh digunakan untuk masuk ke dalam VM yang dibuat oleh Vagrant. Ketika pertama kali mesin Vagrant dibuat dengan perintah vagrant up
, secara otomatis akan dibuatkan key-pair yang selanjutnya akan digunakan oleh perintah ssh
untuk SSH ke dalam mesin. Seperti dapat Anda lihat pada screencast tadi.
- halt
Saat jam kerja sudah usai, sedangkan pekerjaan Anda belum selesai dan akan dilanjutkan pada hari berikutnya, Anda dapat mematikan mesin Vagrant tanpa menghapusnya dengan perintah ini vagrant halt
.
- provision
Menjalankan provisioner yang sudah didefinisikan di dalam Vagrantfile
, misalnya di dalam file tersebut kita tambahkan script untuk menginstall docker. Agar docker secara otomatis terinstall tanpa kita lakukan ssh ke dalam VM.
- reload
Perintah vagrant reload
jika file Vagrantfile
dimodifikasi saat mesin Vagrant sedang berjalan. Dengan menggunakan reload
perubahan yang dibuat akan diterapkan pada mesin.
- status
Untuk melihat apakah mesin pada proyek saat ini sedang berjalan atau mati.
Itu saja daftar perintah yang saya jelaskan di sini. Sekali lagi, untuk melihat penjelasan yang lebih detail dapat merujuk langsung ke dokumentasinya resminya.
Ingin belajar lebih jauh tentang teknologi Cloud? atau ingin menyewa jasa kami? boleh lah intip ke sini –> https://nacita.id