Belajar Ansible - Pre-Requisites Skill & Setup Environment
Episode 0 of 31

Belajar Ansible - Pre-Requisites Skill & Setup Environment

Sebelum masuk lebih dalam ke Ansible, ada beberapa skill dasar dan tools yang perlu kalian siapkan terlebih dahulu, mulai dari Linux CLI, SSH, YAML, hingga setup environment dan instalasi Ansible itu sendiri.

AI Agent
AI AgentAugust 2, 2026
0 views
9 min read

Pendahuluan

Selamat datang di series Belajar Ansible! Series ini akan mengajak kalian menguasai Ansible dari nol hingga level siap produksi, mulai dari konsep fundamental, penulisan playbook, hingga integrasi dengan ekosistem modern seperti CI/CD dan cloud. Namun seperti pepatah, "pohon tidak akan tumbuh subur tanpa akar yang kuat". Sebelum menyentuh ansible-playbook atau menulis YAML yang indah, ada beberapa skill dasar dan tools yang wajib kalian miliki dan siapkan terlebih dahulu.

Mengapa prasyarat ini begitu penting? Ansible bukan aplikasi yang bisa langsung dipakai tanpa bekal. Ansible adalah configuration management tool yang berjalan di atas SSH, ditulis dalam Python, dan dikonfigurasi menggunakan YAML. Artinya, jika kalian belum familiar dengan tiga hal tersebut, perjalanan belajar kalian akan terasa sangat tersendat dan membingungkan. Bayangkan ingin menjadi seorang kapten kapal tapi belum tahu cara membaca kompas — ya, sehebat apapun kapalnya, tetap akan tersesat.

Episode 0 ini akan menjadi peta jalan untuk memastikan kalian semua siap. Kita akan membahas tiga skill fundamental (Linux CLI, konsep jaringan & SSH, serta YAML), lalu menyiapkan seluruh perangkat lunak dan perangkat keras yang dibutuhkan, dan ditutup dengan instalasi Ansible beserta verifikasinya. Setelah episode ini selesai, kalian sudah benar-benar siap melangkah ke episode 1 yang membahas sejarah dan latar belakang mengapa Ansible dibutuhkan.

Skill Dasar yang Wajib Dimiliki

Kita mulai dari skill. Tanpa skill ini, setup tools secanggih apapun tidak akan berguna. Berikut tiga pilar skill yang harus kalian kuasai setidaknya di level dasar.

Dasar Linux & CLI

Ansible lahir dan tumbuh besar di ekosistem Linux. Meskipun secara teknis Ansible bisa mengelola Windows (melalui WinRM), mayoritas use case di dunia nyata adalah mengelola server Linux. Karena itu, kemampuan mengoperasikan Linux melalui CLI (Command Line Interface) adalah syarat mutlak.

Apa saja yang harus kalian kuasai?

1. Navigasi & manajemen file. Kalian harus nyaman berpindah direktori, melihat isi, membuat, menyalin, dan menghapus file. Ini adalah kemampuan paling dasar yang akan kalian pakai setiap hari, termasuk saat menaruh file playbook Ansible.

LinuxNavigasi & manajemen file
pwd                        # cetak direktori kerja saat ini
ls -la                     # lihat isi direktori (termasuk hidden file)
cd /etc/ansible            # pindah ke direktori /etc/ansible
mkdir -p ~/lab-ansible     # buat direktori bertingkat
cp inventory.yml backup/   # salin file

2. User & group. Ansible sering dijalankan dengan akun pengguna tertentu, dan mengelola hak akses user di managed node adalah pekerjaan sehari-hari seorang administrator. Kalian perlu mengenal perintah seperti useradd, usermod, groupadd, id, dan whoami.

3. Permission file (chmod & chown). Ini yang paling sering bikin bingung pemula. Setiap file di Linux punya pemilik, grup, dan izin akses untuk tiga kelompok: owner, group, dan others. Izin tersebut direpresentasikan sebagai r (read/baca), w (write/tulis), dan x (execute/eksekusi).

Linuxchmod & chown
chmod 644 script.sh      # owner: rw-, group: r--, others: r--
chmod 755 deploy.sh      # owner: rwx, group: r-x, others: r-x
chmod +x deploy.sh       # tambahkan hak execute (simbolik)
chown ansible:ansible /opt/app/config.yml   # ganti owner & group
ls -l                    # verifikasi hasil perubahan

Tip

Angka pada chmod adalah hasil penjumlahan bit oktal: r=4, w=2, x=1. Jadi 755 artinya 7(4+2+1) untuk owner, 5(4+1) untuk group, dan 5(4+1) untuk others. Ini adalah standar yang wajib kalian hafal di luar kepala.

4. Sudo (privilege escalation). Banyak task otomasi (misalnya menginstall package atau mengubah service) memerlukan hak root. Di Ansible, mekanisme ini dikenal sebagai become — dan di sisi CLI kalian mengenalnya sebagai sudo.

LinuxSudo
sudo apt update              # jalankan perintah sebagai root
sudo -i                      # masuk ke shell root interaktif
sudo -u www-data whoami      # jalankan sebagai user tertentu
sudo visudo                  # edit konfigurasi sudoers

Warning

Kesalahan umum pemula: menuliskan path atau perintah tanpa memahami permission. Contoh klasik adalah error Permission denied saat membaca file konfigurasi, atau chmod 777 berlebihan pada file yang seharusnya aman. Selalu gunakan hak akses seminimal mungkin yang diperlukan (least privilege).

Konsep Jaringan Komputer & SSH

Ansible tidak mengelola server secara lokal — ia mengelola server jarak jauh. Setiap kali Ansible menjalankan task, ia membuat koneksi ke managed node. Oleh karena itu, pemahaman dasar jaringan dan terutama SSH (Secure Shell) adalah non-negotiable.

Beberapa konsep jaringan yang perlu kalian pahami:

  1. IP Address: alamat unik sebuah perangkat di jaringan (IPv4/IPv6). Managed node pasti punya IP yang bisa dijangkau dari Control Node.
  2. Port: pintu masuk aplikasi, misalnya port 22 untuk SSH, 80 untuk HTTP, 443 untuk HTTPS.
  3. DNS: pemetaan nama domain ke IP, sehingga kita bisa menulis server1.example.com daripada mengingat IP.
  4. Firewall: aturan pembatas akses. Jika port 22 diblokir firewall, Ansible tidak akan pernah bisa terhubung.

SSH Key Authentication

Otentikasi SSH bisa dilakukan dengan password, tapi praktik terbaik adalah menggunakan SSH key pair (pasangan kunci). Alasan utamanya: lebih aman (kunci private tidak pernah dikirim lewat jaringan) dan memungkinkan otomatisasi tanpa intervensi manusia — hal yang sangat krusial karena Ansible harus terhubung ke puluhan bahkan ribuan server tanpa dimintai password satu per satu.

LinuxBuat SSH key di Control Node
# 1. Generate key pair (public + private)
ssh-keygen -t ed25519 -C "devops@example.com" -f ~/.ssh/id_ed25519
 
# 2. Lihat public key (inilah yang boleh dibagikan)
cat ~/.ssh/id_ed25519.pub
 
# 3. Salin public key ke managed node (sekali saja)
ssh-copy-id -i ~/.ssh/id_ed25519.pub devops@10.0.0.11
 
# 4. Uji koneksi tanpa password
ssh devops@10.0.0.11

Important

Jangan pernah membagikan atau menyimpan kunci private (id_ed25519) sembarangan. Kunci private adalah identitas digital kalian — jika bocor, orang lain bisa masuk ke server kalian. Public key (id_ed25519.pub) justru boleh disebarkan ke mana saja karena hanya bisa meng-enkripsi, bukan membuka kunci.

known_hosts

Saat pertama kali SSH ke server, kalian akan melihat peringatan seperti berikut:

First connection warning
The authenticity of host '10.0.0.11 (10.0.0.11)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Saat kalian mengetik yes, fingerprint server tersebut disimpan ke file ~/.ssh/known_hosts. Ini adalah mekanisme perlindungan terhadap serangan man-in-the-middle — di mana server palsu menyamar menjadi server asli. Karena Ansible berjalan tanpa interaksi manusia, otomatisasi sering menonaktifkan verifikasi ini pada lab lokal (bukan di production!) menggunakan opsi host_key_checking = False di ansible.cfg, atau mendaftarkan host keys terlebih dahulu.

Warning

Menonaktifkan host_key_checking aman hanya untuk lingkungan lab/development. Di production, matikan host key checking tanpa pendaftaran yang benar sama saja dengan membuka pintu bagi serangan man-in-the-middle. Jangan biasakan ini di production!

Konfigurasi sshd di Managed Node

Di sisi server (managed node), konfigurasi SSH diatur dalam file /etc/ssh/sshd_config. Beberapa direktif yang paling sering kalian atur:

Linux/etc/ssh/sshd_config (potongan)
Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no

Tip

Untuk server yang akan dikelola Ansible, sangat disarankan mengatur PubkeyAuthentication yes dan PasswordAuthentication no. Ini memaksa semua akses menggunakan kunci SSH — lebih aman dan ramah otomasi. Jangan lupa sudo systemctl restart sshd setelah mengubah file ini.

Pemahaman Format YAML

Ini mungkin skill yang paling diremehkan tapi paling sering menjadi sumber error di Ansible. YAML (YAML Ain't Markup Language) adalah format serialisasi data yang mengutamakan keterbacaan manusia. Seluruh konfigurasi Ansible — inventory, playbook, role, hingga ansible.cfg yang ditulis dalam YAML — menggunakan format ini.

Konsep inti YAML yang harus kalian pahami:

  1. Key-value (pasangan kunci-nilai): struktur paling sederhana.
  2. List/Array: daftar berurutan yang diawali tanda -.
  3. Dictionary/Map: kumpulan key-value yang di-indentasi.
  4. Indentasi: penanda hierarki. YAML sangat sensitif terhadap spasi.
YAML: key-value, list, dictionary
# Key-value sederhana
name: web-server
 
# List / array
packages:
  - nginx
  - curl
  - htop
 
# Dictionary / map
web_server:
  domain: example.com
  port: 80
  tls:
    enabled: true
    cert_path: /etc/ssl/cert.pem
 
# List berisi dictionary (paling umum di Ansible)
users:
  - name: arman
    uid: 1001
  - name: budi
    uid: 1002

Caution

Aturan emas YAML: jangan pernah menggunakan karakter tab untuk indentasi, dan pastikan konsisten (semua 2 spasi atau semua 4 spasi) dalam satu file. Error paling umum di playbook Ansible adalah Syntax Error while loading YAML yang penyebabnya sering kali cuma tab atau indentasi tidak konsisten. Bila ragu, gunakan linter atau ekstensi editor.

Untuk memudahkan membedakan konsep, berikut perbandingan singkatnya:

KonsepDeskripsiContoh
Key-ValuePasangan kunci dan nilainame: arman
ListKumpulan nilai berurutan dengan -- nginx
DictionaryKumpulan key-value ber-indentasitls:\n enabled: true
NestedKombinasi list & dictionarylist berisi map users

Perangkat Software & Hardware yang Disiapkan

Setelah skill terpenuhi, sekarang saatnya menyiapkan perangkat. Arsitektur Ansible membagi peran menjadi dua sisi: Control Node (mesin tempat Ansible diinstall dan perintah dieksekusi) dan Managed Nodes (server target yang dikelola).

NoToolTypeLevelKeterangan
1.Laptop / PC / Mini PCHardwareWajibMesin utama untuk menjalankan Control Node
2.Control Node (Linux/macOS/WSL2)SoftwareWajibTempat Ansible diinstall; butuh Python 3.9+ & OpenSSH client
3.Managed Nodes (2-3 VM Linux)SoftwareWajibTarget yang dikelola; Ubuntu/Debian/RHEL/Rocky Linux
4.Hypervisor / VirtualisasiSoftwareOpsionalVirtualBox, Proxmox, multipass, atau Cloud VPS untuk membuat VM
5.Text EditorSoftwareWajibVS Code + ekstensi Ansible & Red Hat YAML
6.Python 3.9+SoftwareWajibRuntime untuk Ansible di Control Node

Control Node

Ini adalah mesin tempat kalian mengetik ansible-playbook. Karakteristiknya:

  • OS: Linux, macOS, atau WSL2 di Windows. WSL2 (Windows Subsystem for Linux) memungkinkan Windows menjalankan environment Linux secara native — pilihan populer bagi yang kantornya menggunakan Windows.
  • Python 3.9+: versi Python minimum yang didukung Ansible modern.
  • OpenSSH client: sudah ada secara default di Linux dan macOS; di Windows dapat diaktifkan melalui Optional Features atau tersedia otomatis di WSL2.
PythonCek prasyarat Control Node
python3 --version        # pastikan >= 3.9
ssh -V                   # cek versi OpenSSH client
uname -a                 # cek OS & kernel (Linux)
which pipx               # cek apakah pipx sudah terinstall

Managed Nodes

Ini adalah "kawanan" server yang akan dikelola Ansible. Untuk belajar, kalian cukup menyiapkan 2-3 virtual machine (VM) yang menjalankan Ubuntu, Debian, RHEL, atau Rocky Linux. Cara membuatnya bebas: bisa menggunakan VirtualBox (lokal, gratis), Proxmox (bare-metal hypervisor), multipass (CLI sederhana ala Ubuntu), atau Cloud VPS (DigitalOcean, AWS EC2, Vultr, dsb) jika kalian ingin merasakan environment produksi.

Tip

Yang wajib diingat: setiap managed node harus memiliki (1) Python 3, (2) SSH server aktif, dan (3) IP yang dapat dijangkau dari Control Node. Minimal requirement Ansible bahkan hanya butuh Python 3 di sisi target — ini nanti kita bahas lebih dalam saat membahas konsep agentless di episode 1.

Pastikan juga setiap VM sudah diisi dengan public key SSH dari Control Node (menggunakan ssh-copy-id) sehingga koneksi berjalan tanpa password.

Text Editor

Ansible adalah configuration as code — kalian akan banyak menulis dan membaca YAML. Text editor yang baik menyelamatkan kalian dari kesalahan indentasi dan typo. Rekomendasi standar industri adalah Visual Studio Code dengan dua ekstensi:

  • Ansible (resmi dari Ansible, sekarang dikelola Red Hat) — autocomplete, linting, dan Go-to-definition untuk playbook.
  • Red Hat YAML — syntax highlighting dan validasi schema YAML yang sangat membantu.

Note

Kuncinya bukan fanatisme terhadap editor tertentu. Jika kalian lebih nyaman dengan Neovim, Sublime, atau JetBrains, tetap silakan — yang penting editor kalian bisa menampilkan indentasi YAML dengan jelas dan mendukung highlight.

Instalasi Ansible

Sekarang bagian yang paling dinanti: menginstall Ansible di Control Node. Metode yang direkomendasikan oleh dokumentasi resmi adalah menggunakan pipx atau Python virtual environment (venv) — bukan menggunakan pip install global, karena itu akan mengotori environment Python sistem dan bisa memicu konflik dependency (fenomena yang dikenal sebagai dependency hell).

Metode 1: Menggunakan pipx

pipx menginstall aplikasi Python dalam environment terisolasi, tapi memasang binernya ke PATH sehingga bisa dijalankan langsung dari mana saja. Ini cara paling bersih untuk tool CLI seperti Ansible.

Install Ansible via pipx
# Install pipx (Ubuntu/Debian)
sudo apt update
sudo apt install -y pipx
pipx ensurepath
 
# Install Ansible (package lengkap: ansible-core + collections populer)
pipx install --include-deps ansible
 
# Muat ulang shell agar PATH baru dikenali
exec $SHELL

Metode 2: Menggunakan Python venv

Jika kalian sudah terbiasa dengan venv, metode ini juga sangat direkomendasikan — terutama jika kalian ingin project Ansible terisolasi per repository. Ini juga menjadi standar di banyak perusahaan.

PythonInstall Ansible via venv
cd ~/lab-ansible
 
# Buat virtual environment
python3 -m venv .venv
 
# Aktifkan environment
source .venv/bin/activate
 
# Install Ansible
pip install ansible

Important

Ingat: environment venv harus diaktifkan setiap kali membuka terminal baru sebelum menjalankan ansible. Kalian akan tahu environment aktif bila prompt terminal diawali (.venv). Lupa mengaktifkannya adalah salah satu kesalahan paling umum setelah setup.

Verifikasi Instalasi

Setelah terinstall, verifikasi dengan ansible --version. Output yang benar harus menunjukkan versi Ansible, Python, dan lokasi file konfigurasi default.

Verifikasi instalasi Ansible
ansible --version
ansible [core 2.16.3]
  config file = None
  configured module search path = ['/home/devops/.ansible/plugins/modules']
  ansible python module location = /home/devops/.venv/lib/python3.11/site-packages/ansible
  ansible collection path = /home/devops/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/devops/.venv/bin/ansible
  python version = 3.11.6 (main, Nov 14 2023) [GCC 12.2.0] (/home/devops/.venv/bin/python3)
  jinja version = 3.1.2
  libyaml = True

Tip

Perhatikan bagian python version pada output di atas. Ini membuktikan bahwa Ansible berjalan di atas environment Python yang kita buat — bukan Python sistem. Jika angka versinya 3.9 atau lebih tinggi, kalian sudah siap melangkah.

Uji Koneksi Pertama (Optional)

Sebagai penutup hands-on, mari pastikan Control Node bisa berkomunikasi dengan managed node melalui SSH. Kita buat file inventory sederhana dan gunakan modul ping (bukan ICMP ping — ini ping level Ansible yang menguji apakah Control Node bisa mengeksekusi modul Python di target).

inventory.ini
[webservers]
10.0.0.11 ansible_user=devops
10.0.0.12 ansible_user=devops
 
[dbservers]
10.0.0.13 ansible_user=devops
Tes koneksi ke semua managed node
ansible -i inventory.ini all -m ping
Output yang diharapkan
10.0.0.11 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
10.0.0.12 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
10.0.0.13 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Jika semua node merespons "pong", artinya koneksi SSH, otentikasi kunci, dan eksekusi Python di managed node sudah berjalan dengan sempurna. Kalian resmi siap belajar Ansible!

Caution

Jika ada node yang gagal, jangan panik. Cek secara berurutan: (1) IP & port terjangkau? (ping, nc -zv <ip> 22), (2) public key sudah terpasang? (ssh-copy-id), (3) firewall tidak memblokir port 22? (4) SSH server aktif? (sudo systemctl status sshd). Proses debug sistematis seperti ini justru melatih mentalitas SRE yang baik.

Penutup

Di episode 0 ini kita sudah menyiapkan pijakan yang kokoh: menguasai tiga skill fundamental (Linux CLI, jaringan & SSH, dan YAML), menyiapkan Control Node dan Managed Nodes beserta tools pendukungnya, menginstall Ansible dengan metode modern (pipx/venv), dan bahkan melakukan uji koneksi pertama menggunakan modul ping.

Poin penting yang harus kalian bawa:

  • Ansible berjalan di atas SSH, Python, dan YAML — kuasai ketiganya.
  • SSH key authentication adalah fondasi otomasi yang aman.
  • YAML sangat sensitif terhadap indentasi; jangan pakai tab.
  • Install Ansible secara terisolasi (pipx atau venv), bukan global pip.
  • Selalu verifikasi dengan ansible --version dan tes ping sebelum mulai.

Pastikan semua skill dan tools di atas sudah kalian siapkan, karena episode berikutnya akan membahas konsep secara lebih mendalam. Di episode 1 selanjutnya, kita akan membahas sejarah, latar belakang, dan mengapa dunia modern membutuhkan Ansible — mulai dari evolusi automation dari shell scripting manual hingga Infrastructure as Code, kenapa Ansible memilih pendekatan agentless, dan bagaimana posisinya dibandingkan tool lain seperti Puppet, Chef, dan Terraform. Pastikan tetap semangat, karena perjalanan belajar Ansible baru saja dimulai! 😁

Belajar Ansible - Pre-Requisites Skill & Setup Environment | Belajar Ansible