Apa Itu Ansible?
Yo, selamat datang di sesi diskusi santai tapi berisi bareng gua. Kalau lu pengen jadi System Engineer yang nggak capek kerja rodi setiap kali ada deploy ratusan server, lu wajib paham yang namanya
Gua bakal bahas gimana caranya lu bisa automate segalanya, mulai dari server Linux via SSH sampai ke server Windows via WinRM. Simak baik-baik, Junior!
Pengertian
Ansible adalah instrumen
Konsep
Ansible dibangun di atas bahasa
Control Node: Komputer tempat lu jalanin perintah Ansible.
Managed Nodes: Server-server yang lu kelola.
Inventory: File teks yang isinya daftar IP atau hostname server target lu.
Playbooks: "Buku resep" yang isinya instruksi apa aja yang mau lu lakuin di server target.
Cara Kerja
Prosesnya simpel tapi elegan:
Lu tulis instruksi di Playbook (format
.yml).Ansible baca file Inventory buat tahu siapa aja targetnya.
Ansible buka koneksi ke target (lewat
buat Linux atauSSH buat Windows).WinRM Ansible kirim modul-modul kecil ke server target, eksekusi perintahnya di sana, terus lapor balik ke lu hasilnya sukses atau gagal.
Setelah selesai, modul-modul tadi dihapus otomatis dari target. Bersih, kan?
Tujuan
Bayangin lu punya 50 server dan disuruh ganti password atau update
Tujuan Ansible adalah buat Skalabilitas dan Konsistensi. Lu cuma perlu nulis satu skrip, pencet Enter, dan semua server bakal punya konfigurasi yang identik secara instan.
Analogi
Bayangin lu itu seorang Konduktor Orkestra. Lu nggak perlu lari-lari buat niup trompet atau nggesek biola satu-satu. Lu cuma perlu berdiri di depan, bawa tongkat (Ansible Control Node), dan buka buku partitur (Playbook). Begitu lu gerakin tangan, semua pemain musik (Managed Nodes) bakal mainin nada yang sama sesuai instruksi di buku tadi secara barengan.
Kelebihan dan Kekurangan
| Kelebihan | Kekurangan |
| Agentless: Nggak menuh-menuhin RAM/CPU di server target. | Performance: Sedikit lebih lambat dibanding tool berbasis Agent (kayak Saltstack) buat skala ribuan server. |
| Mudah Dipelajari: Pake YAML yang simpel, bukan bahasa pemrograman ribet. | Ketergantungan Python: Server target (Linux) minimal harus ada Python terinstall. |
| Idempotent: Menjamin konfigurasi nggak bakal berubah kalau dijalankan berulang kali. | Windows Support: Setup awal buat WinRM kadang agak tricky dibanding SSH. |
Tutorial & Problem Solving Lengkap
Gua bakal bagi dua skenario: Linux (SSH) dan Windows (WinRM).
1. Persiapan Control Node (Ubuntu/Debian)
# Update repository dan install Ansible
sudo apt update
sudo apt install ansible -y
2. Skenario Linux (via SSH)
Pastikan lu udah bisa
Inventory File (hosts.ini):
[web_servers]
192.168.1.10
192.168.1.11
Playbook Linux (update_linux.yml):
---
- name: Update dan install Nginx di Linux
hosts: web_servers
become: yes # Menjalankan sebagai sudo
tasks:
- name: Update cache apt
apt:
update_cache: yes
- name: Install Nginx terbaru
apt:
name: nginx
state: latest
Eksekusi: ansible-playbook -i hosts.ini update_linux.yml
3. Skenario Windows (via WinRM)
Buat Windows, lu perlu install library tambahan di mesin kontrol lu:
pip install "pywinrm>=0.3.0"
Konfigurasi di Server Windows (Target):
Lu harus jalanin skrip PowerShell
Inventory File (windows_hosts.ini):
[win_servers]
192.168.1.20
[win_servers:vars]
ansible_user=Administrator
ansible_password=PasswordLuCuy
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
Playbook Windows (setup_win.yml):
---
- name: Setup Windows Server
hosts: win_servers
tasks:
- name: Cek koneksi ke Windows
win_ping: # Modul khusus windows buat test koneksi
- name: Buat folder baru di C drive
win_file:
path: C:\DataEngineer
state: directory
Eksekusi: ansible-playbook -i windows_hosts.ini setup_win.yml
Kesimpulan
Ansible itu game changer buat kita yang kerja di lapangan. Kuncinya cuma satu: Idempotensi. Lu nggak perlu takut error kalau jalanin skrip yang sama dua kali, karena Ansible pinter, dia cuma bakal gerak kalau ada perubahan yang diperluin. Best practice dari gua: selalu pake SSH Key untuk Linux dan pastikan sertifikat WinRM aman buat produksi di Windows.
Glosarium Engineer
Ansible: Tool otomatisasi IT untuk manajemen konfigurasi dan deployment.
Infrastructure as Code (IaC): Mengelola infrastruktur IT menggunakan file definisi atau kode, bukan manual.
Agentless: Arsitektur yang tidak membutuhkan software tambahan di sisi target.
Python: Bahasa pemrograman tingkat tinggi yang menjadi basis sistem Ansible.
YAML: Format data yang mudah dibaca manusia, digunakan untuk menulis Playbook.
SSH (Secure Shell): Protokol jaringan untuk komunikasi data yang aman antar server.
WinRM (Windows Remote Management): Protokol manajemen jarak jauh khusus untuk sistem operasi Windows.
Kernel: Inti dari sistem operasi yang mengelola hardware dan proses.
SSH Key-based Login: Metode login ke server tanpa password menggunakan pasangan kunci kriptografi.

Comments
Post a Comment