Belajar System Administrator - Configuration Management (Ansible)
Episode 13 of 28

Belajar System Administrator - Configuration Management (Ansible)

Mengelola banyak server dengan Ansible: inventory, playbook, dan konsep idempotency yang mengubah cara sysadmin bekerja, lalu praktik manage fleets server di lab dengan satu perintah.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Di episode 12 kalian belajar mengotomasi tugas per-server dengan script. Episode 13 menaikkan satu level besar: bagaimana mengotomasi untuk banyak server sekaligus, secara konsisten? Jawabannya adalah Configuration Management — dan Ansible adalah pintu masuk paling ramah yang bisa kalian pilih.

Kunci yang membedakan Ansible dari sekadar kumpulan script: idempotency dan declarative state. Kalian tidak lagi menulis "cara" (lakukan ini, lalu itu), melainkan menyatakan "keadaan yang diinginkan" — dan Ansible yang memastikannya terwujud.

Konsep Dasar Ansible

Arsitektur Tanpa Agen

Ansible tidak butuh agent di server target. Ia terhubung via SSH dari control node, menjalankan modul, lalu menunggu. Ini membuat Ansible mudah dipakai di lingkungan apa pun yang bisa dijangkau SSH.

100%

Inventory

Inventory adalah daftar server yang dikelola, dengan grup dan variabel:

inventory/hosts.ini
[webservers]
web01 ansible_host=192.168.56.11
web02 ansible_host=192.168.56.12
 
[dbservers]
db01 ansible_host=192.168.56.21
 
[linux:children]
webservers
dbservers

Idempotency: Satu-Satunya Kebenaran

Idempotent berarti: menjalankan task yang sama berulang kali menghasilkan keadaan yang sama — tanpa efek samping ganda. Contoh: apt install nginx jika dijalankan dua kali, hasilnya nginx tetap terpasang (bukan dua nginx). Ansible dirancang di atas prinsip ini: setiap modul memeriksa kondisi saat ini, lalu hanya mengubah jika perlu.

Playbook adalah dokumen YAML berisi play (target + tasks). Contoh instalasi nginx di semua webserver:

playbooks/web.yml
---
- name: Setup web server
  hosts: webservers
  become: true
  vars:
    nginx_port: 8080
 
  tasks:
    - name: Install nginx
      ansible.builtin.apt:
        name: nginx
        state: present
 
    - name: Start dan enable nginx
      ansible.builtin.systemd:
        name: nginx
        state: started
        enabled: true

Jalankan:

Jalankan playbook
ansible-playbook -i inventory/hosts.ini playbooks/web.yml

Perhatikan deklarasi state: state: present (harus terpasang), state: started + enabled: true (harus berjalan & aktif saat boot). Kalian tidak menulis "apt install nginx" — kalian menyatakan "nginx harus terpasang dan berjalan". Perbedaannya terletak pada idempotency.

Handlers: Bereaksi Saat Perlu

Handler hanya berjalan saat task melaporkan perubahan — misalnya restart service hanya jika konfigurasi berubah:

playbooks/nginx.yml
---
- name: Konfigurasi nginx
  hosts: webservers
  become: true
 
  tasks:
    - name: Salin konfigurasi nginx
      ansible.builtin.template:
        src: nginx.conf.j2
        dest: /etc/nginx/nginx.conf
      notify: restart nginx
 
  handlers:
    - name: restart nginx
      ansible.builtin.systemd:
        name: nginx
        state: restarted

Variabel dan Template

Dengan Jinja2 template, satu file konfigurasi bisa menghasilkan nilai berbeda per server:

vars.yml
---
web01:
  server_name: app1.example.com
web02:
  server_name: app2.example.com
templates/nginx.conf.j2
server {
    listen 80;
    server_name {{ server_name }};
    root /var/www/html;
}

Kelola Fleets dengan Ansible

Setelah playbook siap, kekuatan Ansible terasa: satu perintah untuk semua server.

Perintah fleet management
ansible all -i inventory/hosts.ini -m ping
ansible webservers -i inventory/hosts.ini -a "uptime"
ansible-playbook -i inventory/hosts.ini playbooks/web.yml --check
ansible-playbook -i inventory/hosts.ini playbooks/web.yml
  • -m ping — uji koneksi ke semua host.
  • --checkdry-run: tampilkan apa yang akan berubah tanpa mengubah. Ini kesempatan untuk meninjau sebelum eksekusi nyata.

Tip

Biasakan menjalankan --check sebelum eksekusi nyata pada playbook apa pun yang baru. Ini seperti "snapshot dulu, baru eksekusi" — tapi untuk seluruh fleet sekaligus. Sysadmin berpengalaman tidak pernah mengeksekusi playbook yang belum pernah dilihat hasil dry-run-nya.

Important

Ansible tidak menggantikan backup, monitoring, atau security — ia justru membuatnya lebih konsisten. Karena konfigurasi kini declarative dan bisa di-version, environment kalian jadi reproducible: server yang rusak bisa dibangun ulang dengan playbook yang sama. Inilah fondasi yang akan dipakai saat kalian masuk ke cloud (episode 14).

Common Pitfalls Ansible

  1. Tidak idempotent karena perintah manual — gunakan modul bawaan (apt/systemd/copy/template), bukan shell:/command: kecuali terpaksa.
  2. Variabel dihardcode — simpan per environment (dev/staging/prod) di file vars terpisah.
  3. Tidak memakai --check — mengeksekusi playbook yang belum pernah di-review.
  4. Lupa become: true — task yang butuh root gagal diam-diam dengan permission denied.

Praktik: Manage Fleets dengan Ansible

Latihan terpadu:

Bootstrapping fleet dengan Ansible
# 1. Install ansible di control node (bisa laptop/server Linux)
sudo apt install -y ansible
# 2. Siapkan inventory dua server lab
# 3. Tulis playbook: install nginx + pastikan running (playbooks/web.yml di atas)
# 4. Uji koneksi
ansible all -i inventory/hosts.ini -m ping
# 5. Dry-run, lalu eksekusi
ansible-playbook -i inventory/hosts.ini playbooks/web.yml --check
ansible-playbook -i inventory/hosts.ini playbooks/web.yml
# 6. Jalankan ulang: seharusnya tidak ada perubahan (idempotent!)
ansible-playbook -i inventory/hosts.ini playbooks/web.yml

Jika eksekusi kedua menampilkan ok=... changed=0, idempotency terbukti — dan kalian baru saja merasakan inti Configuration Management.

Penutup

Inti yang harus dibawa pulang dari episode 13:

  • Ansible tanpa agen — terhubung via SSH, deklaratif, idempotent.
  • Inventory mengelompokkan server; playbook menyatakan keadaan yang diinginkan.
  • Handlers dan template membuat konfigurasi fleksibel dan terkontrol.
  • --check sebelum eksekusi; modul bawaan, bukan perintah manual.

Di episode 14 selanjutnya kita akan membawa semuanya ke skala lebih besar: Cloud Administration — mengelola VM cloud, storage, networking, dan IAM di AWS/GCP/Azure, dengan praktik migrasi beban kerja ke cloud. Pastikan tetap semangat, karena episode ini membuka pintu ke peran cloud admin!

Belajar System Administrator - Configuration Management (Ansible) | Belajar System Administrator