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 Ansible.

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 Infrastructure as Code (IaC) yang bersifat open-source. Intinya, ini adalah tool buat otomatisasi konfigurasi sistem dan deployment aplikasi. Berbeda sama kompetitornya, Ansible itu Agentless, artinya lu nggak perlu install aplikasi tambahan di server target (node). Cukup install di satu mesin kontrol, dan lu bisa perintahin ratusan server sekaligus.


Konsep

Ansible dibangun di atas bahasa Python dan menggunakan format YAML yang manusiawi banget buat dibaca. Konsep utamanya ada tiga:

  1. Control Node: Komputer tempat lu jalanin perintah Ansible.

  2. Managed Nodes: Server-server yang lu kelola.

  3. Inventory: File teks yang isinya daftar IP atau hostname server target lu.

  4. Playbooks: "Buku resep" yang isinya instruksi apa aja yang mau lu lakuin di server target.


Cara Kerja

Prosesnya simpel tapi elegan:

  1. Lu tulis instruksi di Playbook (format .yml).

  2. Ansible baca file Inventory buat tahu siapa aja targetnya.

  3. Ansible buka koneksi ke target (lewat SSH buat Linux atau WinRM buat Windows).

  4. Ansible kirim modul-modul kecil ke server target, eksekusi perintahnya di sana, terus lapor balik ke lu hasilnya sukses atau gagal.

  5. Setelah selesai, modul-modul tadi dihapus otomatis dari target. Bersih, kan?


Tujuan

Bayangin lu punya 50 server dan disuruh ganti password atau update Kernel di semuanya. Kalau lu login satu-satu pake PuTTY, besok baru kelar, dan risiko salah ketik (human error) itu gede banget.

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

KelebihanKekurangan
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 SSH Key-based Login ke target biar nggak dimintain password terus.

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 ConfigureRemotingForAnsible.ps1 buat buka port WinRM (5985/5986).

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

Popular posts from this blog

Apa itu Link Aggregation?

Apa Itu Port Security di Switch Cisco