Belajar Ansible dari Nol: Tips dan Trik Supaya Tidak Pusing di Awal
Saya masih ingat awal-awal jadi admin server, ketika setiap update kecil harus saya kerjakan satu per satu lewat SSH. Bayangkan ada sepuluh server, dan saya harus install paket yang sama, edit file konfigurasi yang sama, restart service yang sama, sepuluh kali. Selain capek, saya jadi rawan salah ketik dan lupa mana server yang sudah dikerjakan.
Sampai akhirnya saya kenal Ansible, dan semua kerepotan itu langsung berkurang drastis. Di tulisan ini saya ingin berbagi pengalaman belajar Ansible dengan gaya yang ramah pemula, tanpa terlalu banyak command, dan fokus ke konsep serta kebiasaan baik yang menurut saya wajib dipahami sejak awal.
Apa Itu Ansible?
Sederhananya, Ansible adalah alat otomasi. Kalian tulis sekali apa yang ingin dilakukan di server, lalu Ansible yang akan menjalankannya ke semua server tujuan. Tidak peduli kalian punya satu server atau seratus, perlakuannya sama.
Yang membuat Ansible enak dipakai untuk pemula adalah beberapa hal berikut. Pertama, tidak butuh install agent di server tujuan, cukup ada SSH dan Python (yang biasanya sudah ada di Linux). Kedua, bahasa konfigurasinya YAML, yang strukturnya mirip dengan menulis catatan biasa. Ketiga, kalau salah dan dijalankan dua kali, hasilnya tetap sama, tidak merusak server.
Instalasi: Pilih Cara yang Aman
Cara paling cepat di Ubuntu memang apt install ansible, namun saya sarankan selalu membaca dokumentasi resmi untuk instalasi ansible:
https://docs.ansible.com/projects/ansible/latest/installation_guide/installation_distros.html
# apt update
# apt install software-properties-common
# add-apt-repository --yes --update ppa:ansible/ansible
# apt install ansible
# ansible --version
Kalau perintah terakhir menampilkan versi Ansible, berarti instalasi sudah berhasil.

Tiga Konsep Utama
Sebelum mulai mengetik playbook, ada tiga istilah yang akan kalian temui terus. Saya jelaskan dengan analogi sederhana.
- Inventory adalah buku alamat. Berisi daftar server yang mau kalian kelola, lengkap dengan alamat IP dan grupnya. Misalnya grup “web”, grup “database”, dan seterusnya.
- Playbook adalah resep masakan. Berisi langkah-langkah yang ingin kalian jalankan: install paket A, copy file B, restart service C. Format file-nya YAML dengan ekstensi
.yml. - Module adalah alat dapur. Tiap pekerjaan punya modul khusus, misalnya modul
aptuntuk install paket di Ubuntu, modulcopyuntuk menyalin file, modulserviceuntuk mengatur service. Ansible sudah punya ratusan modul bawaan.
Jadi alur kerjanya: kalian tulis playbook (resep) yang memanggil modul-modul (alat), lalu dijalankan ke server-server di inventory (alamat). Sesederhana itu.

Tips dan Trik
Bagian ini paling penting. Semua tips di bawah saya pelajari dari pengalaman, sebagian besar setelah mengalami “kecelakaan” di server. Semoga kalian tidak perlu mengulanginya.
1. Tes konektivitas dulu sebelum apa-apa
Sebelum jalankan playbook, pastikan Ansible bisa menjangkau semua server di inventory. Pakai perintah ini:
ansible all -m ping
Kalau semua hijau dan muncul pong, artinya aman. Kalau ada yang merah, selesaikan dulu masalah SSH atau Python sebelum lanjut. Banyak pemula yang langsung jalankan playbook tanpa cek ini, lalu bingung kenapa error.
2. Selalu coba dulu dengan mode --check
Ansible punya fitur seperti “preview”. Tambahkan --check dan --diff saat menjalankan playbook, dan Ansible akan menampilkan apa yang akan dia ubah, tanpa benar-benar mengubahnya:
ansible-playbook site.yml --check --diff
Anggap saja seperti tombol “preview” sebelum publish artikel. Ini menyelamatkan saya berkali-kali dari salah ketik yang efeknya fatal.
3. Jangan hardcode informasi penting di playbook
Jangan tulis IP server, password, atau port langsung di dalam playbook. Pisahkan ke folder khusus bernama group_vars/ (untuk variabel per grup) atau host_vars/ (untuk variabel per host). Playbook jadi lebih bersih, dan kalian bisa pakai playbook yang sama untuk environment berbeda hanya dengan mengganti variabel.
4. Password dan secret harus dienkripsi pakai Ansible Vault
Ini wajib. Jangan pernah commit password dalam bentuk plaintext ke Git. Ansible sudah menyediakan tool bawaan untuk enkripsi:
ansible-vault encrypt secrets.yml
File yang sudah dienkripsi tetap bisa dipakai playbook, asal kalian masukkan password vault saat eksekusi. Anggap saja seperti ZIP berkata sandi, tapi terintegrasi langsung dengan Ansible.
5. Pahami konsep idempotensi (jangan takut dengan istilahnya)
Idempotensi terdengar seperti istilah medis, padahal artinya sederhana: playbook yang baik bisa dijalankan berkali-kali tanpa merusak hasil sebelumnya. Misalnya kalau kalian sudah install nginx, jalankan playbook lagi tidak akan menginstall ulang, hanya akan dicek dan dilewati.
Cara mudahnya: pakai modul khusus seperti apt, copy, service. Hindari shell atau command kecuali memang tidak ada modul lain yang cocok. Modul khusus sudah dirancang idempotent dari sananya.
6. Rapikan playbook panjang dengan Roles
Kalau playbook kalian sudah lebih dari 50 baris, mulai pikirkan untuk memecahnya jadi roles. Role itu seperti folder berisi resep yang dipecah-pecah berdasarkan tugas. Strukturnya standar dan bisa dipakai ulang di project lain. Sekali kalian punya role “install_nginx” yang bagus, role itu bisa dipakai di sepuluh project berbeda tanpa nulis ulang.
Cara cepat membuat role baru:
ansible-galaxy init nama_role
Perintah ini otomatis membuat folder dengan struktur lengkap. Lebih rapi daripada bikin manual.
7. Tes ke satu server dulu pakai --limit
Punya inventory besar tapi baru selesai nulis playbook? Jangan langsung apply ke semua server. Coba dulu ke satu host saja:
ansible-playbook site.yml --limit server01
Setelah yakin tidak ada masalah, baru lepas ke yang lain.
Mengenal Ansible Galaxy
Setelah nyaman dengan dasar-dasar di atas, kalian akan ketemu Ansible Galaxy. Anggap saja seperti app store atau Play Store, tapi untuk role dan paket Ansible. Di sana sudah banyak orang yang menulis role siap pakai, misalnya untuk install Docker, setup nginx, konfigurasi PostgreSQL, dan lain-lain.
Dua hal yang bisa kalian ambil dari Galaxy
Yang pertama adalah role, yaitu paket berisi satu tugas otomasi. Misalnya role untuk install nginx beserta konfigurasinya. Yang kedua adalah collection, yaitu paket yang lebih besar berisi banyak modul, role, dan plugin sekaligus. Sejak Ansible versi 2.10, banyak modul resmi dipindahkan ke collection, jadi kalian pasti akan berinteraksi dengan keduanya.
Install dari Galaxy lewat command sederhana:
ansible-galaxy role install geerlingguy.nginx
ansible-galaxy collection install community.general
Tips Pakai Galaxy
Gunakan requirements.yml, bukan install satu per satu. Daftarkan semua role dan collection yang kalian butuhkan di satu file YAML, lalu install sekaligus. Ini supaya orang lain yang clone project kalian bisa langsung jalan tanpa nebak-nebak.
Contoh isi requirements.yml:
yaml
roles:
- name: geerlingguy.nginx
version: 3.1.4
collections:
- name: community.general
version: 8.5.0
Install semuanya cukup dengan:
ansible-galaxy install -r requirements.yml
Selalu tulis versi spesifik, jangan latest. Pengelola role kadang mengubah cara kerjanya antar versi. Kalau kalian tidak pin versi, suatu hari playbook kalian bisa tiba-tiba gagal hanya karena upstream rilis update. Versi yang dipin = production yang tenang.
Cek dulu role yang mau dipakai. Galaxy itu terbuka, siapa saja bisa publish. Sebelum install role ke server production, cek jumlah download, kapan terakhir update, dan kalau bisa baca source code-nya di GitHub. Kalau ragu, lebih baik tulis sendiri. Hitung-hitung sambil belajar.
Pisahkan role buatan sendiri dan role dari Galaxy. Simpan role buatan sendiri di folder roles/, dan role dari Galaxy di folder lain seperti roles/external/. Tujuannya supaya kalian tahu mana kode milik sendiri dan mana yang dari luar, jadi saat upgrade tidak ketukar.
Kesalahan yang Sering Terjadi
Sebagai penutup tips, ini beberapa kesalahan yang sering saya temui (dan beberapa pernah saya lakukan sendiri):
Pertama, langsung apply playbook tanpa --check dulu. Kedua, menyimpan password di playbook tanpa enkripsi. Ketiga, terlalu sering pakai modul shell padahal ada modul khusus. Keempat, tidak pakai versi spesifik saat install dari Galaxy. Kelima, semua ada di satu playbook raksasa tanpa dipecah jadi roles.
Kalau kalian bisa menghindari lima hal ini, perjalanan belajar Ansible kalian akan jauh lebih mulus.
Penutup
Ansible itu sebenarnya tidak sulit, hanya butuh dibiasaka, mulai saja dari yang paling sederhana: tulis playbook kecil, jalankan dengan --check, lalu apply ke satu server dulu.
Kalau kalian punya pengalaman atau tips Ansible yang bermanfaat, tolong share di kolom komentar. Saya selalu senang untuk belajar trik dan cara baru.


Leave a Reply