Di episode ini kita akan menelusuri evolusi otomasi infrastruktur, sejarah lahirnya Ansible, dan memahami mengapa pendekatan agentless yang dibawanya menjadi pilihan utama di era modern.

Setelah di episode 0 sebelumnya kita membahas dan menyiapkan semua prasyarat — mulai dari skill Linux CLI, SSH, YAML, hingga instalasi Ansible di Control Node — pada episode kali ini kita akan menarik napas sejenak dari hands-on dan menyelami mengapa Ansible ada. Kita akan menelusuri sejarahnya, memahami permasalahan nyata yang memicunya, dan melihat kenapa Ansible menjadi salah satu tool paling populer di dunia DevOps dan SRE.
Mengapa memahami sejarah dan latar belakang ini penting? Sebagai engineer, kalian tidak hanya perlu tahu cara mengoperasikan sebuah tool, tapi juga alasan tool tersebut dirancang dengan cara tertentu. Pemahaman ini akan menuntun kalian dalam mengambil keputusan arsitektural di dunia nyata: kapan harus memakai Ansible, kapan harus memakai Terraform, kapan harus menulis skrip shell biasa, dan kapan ketiganya harus bekerja sama. Tanpa konteks ini, kalian hanya akan menjadi tool operator — bukan infrastructure engineer.
Untuk memahami Ansible, kita harus melihat perjalanan panjang bagaimana manusia mengelola server dari zaman ke zaman.
Sebelum era otomasi, mengelola server berarti login satu per satu melalui SSH dan mengetik perintah secara manual. Mau install nginx di 5 server? Login ke server 1, install, login server 2, install, dan seterusnya. Belum lagi masalah configuration drift — kondisi di mana setiap server "menyimpang" dari kondisi ideal karena perintah diketik manual dan lupa dicatat. Server 1 mungkin terinstall nginx versi 1.2, sementara server 3 masih versi 1.0 karena lupa di-update.
Masalah utamanya jelas: proses yang tidak terdokumentasi tidak bisa direproduksi, tidak bisa diaudit, dan tidak bisa diskalakan. Satu server masih bisa ditangani, tapi bagaimana dengan 50 server, 500 server, atau ribuan server?
Langkah logis berikutnya adalah otomatisasi parsial menggunakan skrip shell. Daripada mengetik manual, kita tulis skrip bash lalu jalankan di banyak server dengan loop SSH.
#!/bin/bash
# install_nginx.sh - pendekatan lama yang menyakitkan
SERVERS=("10.0.0.11" "10.0.0.12" "10.0.0.13")
for server in "${SERVERS[@]}"; do
echo "=== Processing $server ==="
ssh devops@"$server" "sudo apt update && sudo apt install -y nginx"
if [ $? -eq 0 ]; then
echo "OK: $server"
else
echo "FAILED: $server" >> errors.log
fi
doneSekilas pendekatan ini tampak berhasil. Namun mari kita bongkar kelemahan-kelemahannya, karena justru dari kelemahan inilah Ansible lahir:
if [ $? -eq 0 ] di setiap langkah. Semakin panjang skrip, semakin rentan.apt di Ubuntu berbeda dengan dnf di Rocky Linux. Skrip harus bercabang-cabang untuk tiap distro.Dari frustrasi itulah lahir paradigma Infrastructure as Code (IaC) — memperlakukan konfigurasi infrastruktur sebagai kode yang bisa di-versioning di Git, di-review, diuji, dan diterapkan ulang secara konsisten. Salah satu manifestasinya adalah Configuration Management (CM) tool: perangkat lunak yang mendeskripsikan keadaan akhir (desired state) dari sebuah server, lalu memastikan server tersebut selalu berada di keadaan itu.
Di era inilah muncul generasi tool seperti CFEngine (1993), Puppet (2005), Chef (2009), SaltStack (2011), dan kemudian Ansible (2012). Masing-masing menawarkan jawaban atas masalah yang sama, tapi dengan filosofi arsitektur yang berbeda — dan di sinilah Ansible menemukan pembedanya.
Ansible diciptakan oleh Michael DeHaan pada tahun 2012. Sebelum Ansible, DeHaan adalah pencipta Cobbler — sebuah tool otomasi Linux provisioning — dan sempat bekerja di Red Hat. Pengalamannya mengelola banyak server dan melihat betapa rumitnya solusi agent-based yang ada saat itu membawanya pada sebuah pertanyaan sederhana namun revolusioner:
"Kenapa kita harus menginstall daemon/agent di setiap server hanya untuk mengelola konfigurasinya? Kenapa kita tidak cukup menggunakan SSH yang memang sudah ada?"
Dari pertanyaan itu lahirlah Ansible dengan arsitektur agentless. Tahun 2015, Ansible resmi diakuisisi oleh Red Hat, yang kemudian mengembangkannya menjadi produk Ansible Automation Platform (AAP). Kehadiran Red Hat membawa bobot enterprise: dukungan resmi, sertifikasi, ekosistem Collection yang luas, hingga interface web (AWX/Tower) untuk skala organisasi besar.
Setelah memahami sejarahnya, mari kita bahas mengapa Ansible memenangkan hati begitu banyak engineer. Ada tiga pilar utama yang membedakannya.
Konsep ini adalah pembeda terbesar Ansible. Tool seperti Puppet dan Chef mengharuskan kalian menginstall agent (daemon) di setiap server yang dikelola. Agent tersebut berjalan terus-menerus, berkomunikasi dengan master server, dan menjadi bagian dari sistem yang harus dipelihara, di-update, dan diawasi.
Ansible justru bekerja sebaliknya: tidak ada agent, tidak ada daemon, tidak ada port tambahan yang dibuka. Ansible cukup menggunakan SSH (atau protokol lain yang sudah ada) untuk masuk ke server, mengeksekusi perintah, dan keluar.
Implikasi praktisnya sangat besar:
Tip
Anggap saja seperti perbedaan antara sewa mobil dan beli mobil. Agent-based seperti membeli mobil — ada biaya perawatan rutin (upgrade agent), dan kalau mobil (agent) bermasalah, kendaraan (server) tidak bisa jalan. Ansible seperti menyewa sopir: kita cukup berikan instruksi, sopir datang, bekerja, lalu pergi.
Idempotency adalah sifat di mana sebuah operasi yang dijalankan berulang kali memberikan hasil akhir yang sama tanpa efek samping tambahan. Ini konsep matematis yang menjadi prinsip inti Configuration Management.
Mari kita bandingkan dengan skrip shell biasa:
useradd devopsJalankan sekali → berhasil. Jalankan dua kali → error user 'devops' already exists. Skrip imperatif tidak tahu kondisi server, ia hanya mengeksekusi perintah secara membabi buta.
Sekarang bandingkan dengan cara Ansible:
- name: Pastikan user devops ada
ansible.builtin.user:
name: devops
state: presentModul user Ansible akan mengecek kondisi server terlebih dahulu. Jika user sudah ada, modul melaporkan ok dan tidak melakukan apa-apa. Jika belum ada, modul membuatnya dan melaporkan changed. Hasil akhirnya selalu sama: user devops ada di server.
Idempotency inilah yang menyelesaikan masalah configuration drift yang kita bahas di awal. Jalankan playbook di pagi hari, di malam hari, atau setelah server di-rollback — hasilnya selalu konsisten dengan desired state yang kita tulis.
Coba bandingkan dua cara mendeskripsikan "pasang nginx" di bawah ini:
sudo apt update
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx- name: Pastikan nginx terinstall dan berjalan
ansible.builtin.apt:
name: nginx
state: present
ansible.builtin.service:
name: nginx
state: started
enabled: trueYAML mendeskripsikan apa yang ingin kita capai (desired state), bukan bagaimana melakukannya (prosedur langkah demi langkah). Konsekuensinya:
Agar kalian bisa memposisikan Ansible dengan tepat, mari bandingkan dengan tool-tool sejenis di ekosistem automation.
| Tools | Arsitektur | Bahasa | Fokus Utama | Kekuatan | Kelemahan |
|---|---|---|---|---|---|
| Ansible | Agentless (SSH/WinRM) | YAML (deklaratif) | Configuration management, app deployment, orchestration | Mudah dimulai, tidak perlu agent, satu tool serba bisa | Butuh Python di target, koneksi harus selalu tersedia |
| Puppet | Agent-based (client-server) | DSL Ruby (declarative) | Configuration management | Skala sangat besar, kaya model state | Kompleks, butuh master + agent, learning curve tinggi |
| Chef | Agent-based (client-server) | Ruby (imperatif) | Configuration management | Fleksibel, cocok untuk yang suka Ruby | Butuh agent + master, kurva belajar Ruby |
| SaltStack | Hybrid (agent + agentless) | YAML + Python | Configuration management, remote execution | Sangat cepat (ZeroMQ), fleksibel | Kompleks, ekosistem lebih kecil dibanding Ansible |
| Terraform | Agentless (API Cloud) | HCL (deklaratif) | Infrastructure provisioning (IaC) | Mengelola seluruh lifecycle infrastruktur cloud | Tidak untuk konfigurasi OS/install package |
Important
Kesalahan klasik pemula adalah menganggap Terraform dan Ansible sebagai pesaing yang saling menggantikan. Faktanya, keduanya saling melengkapi: Terraform membuat infrastruktur (VM, VPC, subnet, database), sedangkan Ansible mengonfigurasi infrastruktur tersebut (install software, setup service, deploy aplikasi). Di production, workflow paling umum adalah Terraform -> Ansible -> CI/CD.
Pilihan antara agentless dan agent-based adalah keputusan arsitektural fundamental:
Ini perbedaan yang wajib dipegang teguh:
Analoginya: Terraform adalah kontraktor yang membangun rumah (struktur, tembok, plafon), sedangkan Ansible adalah dekorator interior yang mengisi rumah tersebut (furnitur, lampu, dekorasi). Keduanya dibutuhkan untuk menghasilkan rumah yang layak huni.
Mari kita tutup dengan studi kasus konkret yang menunjukkan mengapa Ansible unggul. Skenarionya: kita punya 3 server web yang harus selalu memiliki nginx, curl, dan htop terinstall.
Dengan pendekatan SSH loop, setiap kali ada server baru kita harus menjalankan skrip, memantau output, dan berharap tidak ada yang error di tengah jalan. Kini dengan Ansible, kita cukup menulis playbook sekali:
---
- name: Konfigurasi dasar web server
hosts: webservers
become: true
tasks:
- name: Update apt cache
ansible.builtin.apt:
update_cache: true
- name: Install package wajib
ansible.builtin.apt:
name: "{{ item }}"
state: present
loop:
- nginx
- curl
- htopLalu jalankan terhadap semua server sekaligus:
ansible-playbook -i inventory.ini webserver.ymlPLAY RECAP *********************************************************************
10.0.0.11 : ok=4 changed=3 unreachable=0 failed=0 skipped=0
10.0.0.12 : ok=4 changed=3 unreachable=0 failed=0 skipped=0
10.0.0.13 : ok=4 changed=3 unreachable=0 failed=0 skipped=0Perhatikan beberapa hal yang berubah drastis dibandingkan skrip manual:
ok/changed/failed), memudahkan audit.ok tanpa perubahan (changed=0).Inilah esensi pergeseran paradigma dari imperative scripting ke declarative automation yang dibawa Ansible.
Di episode 1 ini kita telah menelusuri perjalanan dari manual server management, ke shell scripting yang menyakitkan, hingga lahirnya paradigma Infrastructure as Code dan Configuration Management. Kita juga sudah memahami mengapa Ansible — dengan filosofi agentless, idempotency, dan YAML deklaratif — menjadi pilihan yang begitu populer sejak diciptakan Michael DeHaan pada 2012 hingga kini di bawah Red Hat.
Poin penting yang harus kalian bawa dari episode ini:
Di episode 2 selanjutnya, kita akan masuk lebih dalam ke jeroan Ansible: konsep dasar dan arsitektur utama. Kita akan membedah bagaimana sebenarnya Ansible bekerja di balik layar, mulai dari Control Node dan Managed Nodes, alur eksekusi modul via SSH, hingga komponen-komponen kunci seperti Inventory, Playbook, Tasks, Modules, dan ansible.cfg. Pastikan tetap semangat, karena mulai episode berikutnya kita akan semakin sering menyentuh baris perintah dan file konfigurasi nyata! 😄