Belajar Ansible - Chapter 1: Automation Linux Itu Gak Ribet Lagi

Blog Series

Ansible Automation Journey

Part 1 of 20

14 min read
1870 wordsTechnology
ansibleautomation

Panduan lengkap memulai automation dengan Ansible - dari konsep dasar hingga praktik langsung. Cocok untuk sysadmin/devops/cloud engineer yang ingin beranjak dari manual ke automated infrastructure.

Sebagai seorang sysadmin, berapa kali kamu harus SSH ke puluhan server, edit konfigurasi satu per satu, restart service, dan mengulang proses yang sama berulang kali? Atau ketika deployment aplikasi baru, kamu harus melakukan checklist manual yang panjang dan rentan error?

Nah, di post pertama series Ansible Automation Journey ini, saya akan sharing pengalaman belajar dari course resmi Red Hat Ansible Automation Platform yang sudah saya adaptasi dan modifikasi untuk kebutuhan praktis sehari-hari.

πŸš€ Kenapa Automation Penting Buat Sysadmin Modern?

Dulu, workflow sysadmin itu kayak gini:

  1. SSH ke server A β†’ edit config β†’ restart service
  2. SSH ke server B β†’ edit config β†’ restart service
  3. Ulang sampai 50 server β†’ capek, error-prone, gak sustainable

Masalahnya:

  • Manual & repetitive: Ngabisin waktu buat task yang harusnya otomatis
  • Error-prone: Human error pasti ada, terutama saat lelah
  • Gak scalable: Bayangkan manage 100+ server secara manual
  • Gak konsisten: Konfigurasi bisa beda-beda antar server
  • Susah di-track: Gak tau siapa yang ngapain, kapan, dan kenapa

Dengan Ansible, workflow berubah jadi:

  1. Tulis playbook YAML sekali β†’ jalankan β†’ semua server configured
  2. Idempotent β†’ aman dijalankan berkali-kali
  3. Version control friendly β†’ track semua perubahan
  4. Desired state configuration β†’ server selalu dalam kondisi yang diinginkan

πŸ› οΈ Apa Itu Ansible Sebenarnya?

Ansible adalah open source automation engine yang dikembangkan oleh Red Hat. Berbeda dengan tool automation lain, Ansible punya keunggulan:

Agentless Architecture: Gak perlu install agent di managed hosts, cukup SSH dan Python. Ini bikin deployment lebih simple dan security overhead lebih rendah.

YAML-based: Playbook ditulis dalam format YAML yang human-readable dan mudah di-maintain dalam version control.

Idempotent: Playbook aman dijalankan berkali-kali tanpa efek samping. Ansible cek current state dulu sebelum apply changes.

Multi-platform: Bisa manage Linux, Windows, network devices, cloud platforms, bahkan container orchestration.

Istilah Dasar Yang Wajib Dikuasai:

  • Control Node: Mesin tempat Ansible dijalankan (workstation atau server kita)
  • Managed Host: Server/device yang dikonfigurasi oleh Ansible
  • Inventory: File yang berisi daftar managed hosts
  • Playbook: File YAML berisi serangkaian task automation
  • Module: Komponen kecil yang menjalankan task specific (install package, copy file, etc.)
  • Task: Unit kerja terkecil dalam playbook
  • Handler: Task yang dijalankan ketika ada perubahan (biasanya restart service)
  • Role: Cara mengorganisir playbook secara modular dan reusable

🧠 Konsep Dasar: Idempotency & Desired State

Salah satu konsep paling penting dalam Ansible adalah idempotency. Artinya playbook aman dijalankan berkali-kali tanpa mengubah hasil akhir.

Contoh praktis:

- name: Install nginx
  yum:
    name: nginx
    state: present

Task ini akan:

  • Install nginx jika belum ada
  • Skip jika nginx sudah terinstall
  • Gak akan install ulang atau corrupt existing installation

Desired State Configuration berarti kita define β€œkondisi akhir yang diinginkan”, bukan β€œlangkah-langkah untuk mencapainya”. Ansible yang akan figuring out bagaimana cara mencapai state tersebut.

πŸ” Pilihan Deployment: Community vs Red Hat AAP

Ansible Community Edition

Instalasi via pip (Python Package Manager):

# Install via pip
$ pip install ansible
 
# atau via pipx (isolated environment)
$ pipx install ansible
 
# Cek versi
$ ansible --version

Karakteristik:

  • Gratis dan open source
  • Install via pip atau package manager distribusi
  • Cocok untuk personal projects, small teams, atau learning
  • Update manual, dukungan community-driven
  • Feature set basic tapi lengkap untuk most use cases

Red Hat Ansible Automation Platform (AAP)

Instalasi via package manager RHEL:

# Enable repository
$ sudo subscription-manager repos --enable ansible-automation-platform-2.4-for-rhel-9-x86_64-rpms
 
# Install ansible-core
$ sudo dnf install ansible-core
 
# Install ansible-navigator (recommended)
$ sudo dnf install ansible-navigator

Karakteristik:

  • Enterprise support dari Red Hat
  • Terintegrasi dengan RHEL ecosystem
  • Additional tools: Automation Controller, Navigator, Execution Environments
  • Cocok untuk production enterprise environments
  • Subscription-based dengan professional support

Perbandingan Fitur:

AspekCommunityRed Hat AAP
DukunganCommunity forumProfessional support
Instalasipip, package managerRHEL packages
GUITidak adaAutomation Controller
Execution EnvironmentsManual setupBuilt-in
Certified ContentTerbatasFull certified collections
Enterprise FeaturesBasicAdvanced (RBAC, audit, etc.)

πŸ§ͺ Hands-on Lab: Install Ansible Navigator

Mari kita praktik install Ansible Navigator yang merupakan modern interface untuk Ansible:

Untuk Red Hat AAP (RHEL-based):

# 1. Install ansible-navigator
$ sudo dnf install ansible-navigator
 
# 2. Cek versi dan validate installation
$ ansible-navigator --version
ansible-navigator 2.1.0
 
# 3. Login ke container registry (jika diperlukan)
$ podman login registry.redhat.io
Username: your-username
Password: your-password
 
# 4. List available execution environments
$ ansible-navigator images

ansible install ansible-navigator images

Untuk Community Edition (via pip):

# 1. Install ansible dan ansible-navigator
$ pip install ansible ansible-navigator
 
# 2. Cek versi
$ ansible-navigator --version
 
# 3. Create basic ansible-navigator.yml config
$ cat > ansible-navigator.yml << EOF
---
ansible-navigator:
  execution-environment:
    image: quay.io/ansible/ansible-runner:latest
    pull-policy: missing
  logging:
    level: debug
  playbook-artifact:
    enable: true
    save-as: '{playbook_name}-{time_stamp}.json'
EOF
 
# 4. Test dengan sample playbook
$ ansible-navigator run --help

Eksplor Execution Environment:

# List EE images
$ ansible-navigator images
 
# Inspect specific EE
$ ansible-navigator images --mode stdout
 
# Interactive mode (recommended)
$ ansible-navigator images

ee-images

πŸ’‘ Memahami Execution Environment (EE)

Execution Environment adalah container yang berisi:

  • Ansible Core runtime
  • Python dependencies
  • Ansible Collections
  • Custom libraries dan tools

Keunggulan EE:

  • Konsistensi: Environment yang sama antara dev, staging, dan production
  • Portabilitas: Bisa jalan di berbagai platform
  • Dependency Management: Gak ada conflict antar dependencies
  • Security: Isolated environment dengan minimal attack surface

Contoh struktur EE:

# Custom EE example
FROM quay.io/ansible/ansible-runner:latest
 
# Add custom collections
COPY requirements.yml /tmp/requirements.yml
RUN ansible-galaxy collection install -r /tmp/requirements.yml
 
# Add custom Python packages
COPY requirements.txt /tmp/requirements.txt
RUN pip install -r /tmp/requirements.txt

🎯 Best Practices dari Awal

  1. Version Control: Selalu commit playbook ke Git
  2. Documentation: Tulis deskripsi clear di setiap task
  3. Idempotency: Test playbook multiple times
  4. Error Handling: Gunakan proper error handling
  5. Security: Jangan hardcode password, pakai vault
  6. Testing: Test di environment terpisah dulu

πŸ“Œ Key Takeaways dari Chapter 1

Setelah mempelajari chapter pertama ini, beberapa insight penting:

Automation adalah game changer untuk sysadmin modern. Dari manual repetitive tasks ke infrastructure as code yang scalable dan maintainable.

Ansible philosophy yang agentless dan YAML-based membuatnya accessible untuk semua level expertise, tapi tetap powerful untuk enterprise use cases.

Pilihan deployment antara Community vs Red Hat AAP tergantung needs: learning/small teams vs enterprise production environments.

Execution Environment adalah evolution dari traditional Ansible yang solve dependency conflicts dan provide consistency across different environments.

Foundation yang solid di chapter ini penting untuk advanced topics selanjutnya seperti roles, collections, dan enterprise automation patterns.

🚧 What’s Next?

Di chapter berikutnya, kita akan deep dive ke:

  • Inventory Management: Static vs dynamic inventory
  • Playbook Structure: Best practices untuk organizing complex automation
  • Variables & Facts: Advanced data handling
  • Conditionals & Loops: Control flow dalam automation
  • Error Handling: Robust automation yang handle edge cases

Kalau kamu lagi belajar Ansible juga, jangan ragu untuk reach out! Bisa diskusi di comments atau connect di social media. Sharing knowledge makes everyone stronger.

Pro tip: Mulai dengan small automation tasks sehari-hari, jangan langsung tackle complex infrastructure. Build muscle memory dulu dengan simple playbooks.

πŸ”— Resources & References


Ditulis sambil dokumentasi progres belajar Red Hat Ansible Automation Platform. Semoga bisa bantu teman-teman yang memulai journey automation!

#ansible #automation #devops #linux #redhat #infrastructureascode #systemadmin

Written by Minh Phu Pham

Published on July 14, 2025

Share this article:

Β© 2025 | Minh Phu Pham. All rights reserved.