Ansible

Ansible

๐Ÿง  Apa itu Ansible?

Ansible adalah automation tool berbasis open-source yang digunakan untuk:

  • ๐Ÿš€ Provisioning (menyiapkan server dari awal)
  • ๐Ÿ› ๏ธ Configuration Management (atur dan jaga konfigurasi tetap konsisten)
  • ๐Ÿ”„ Application Deployment (deploy aplikasi dengan langkah otomatis)
  • ๐Ÿงช Orchestration (sinkronisasi antar banyak server)
  • ๐Ÿ” Security Automation (atur firewall, user, SSH key, dll)
Dibuat oleh Red Hat, dan menggunakan SSH untuk berkomunikasi dengan target server tanpa perlu agen (agentless).

๐Ÿ”— Komponen dan Arsitektur Ansible

+-โ€”โ€”โ€”โ€”โ€”+ SSH +-โ€”โ€”โ€”โ€”โ€”+
| Control Node | ---------> | Managed Node |
| (Ansible host) | | (Server
, VM) |
+----------------+ +----------------+

๐Ÿ”น Control Node:

  • Tempat kamu menjalankan Ansible (biasanya laptop atau 1 VM khusus)
  • Berisi: ansible, playbook, inventory, roles, dll

๐Ÿ”น Managed Node:

  • Server/VM yang ingin kamu kelola
  • Tidak perlu install apapun di sini
  • Hanya butuh SSH + Python (versi 2.7 atau 3.x)

๐Ÿ“ Struktur Dasar Ansible

๐Ÿ”ธ Inventory File (hosts)

[webservers]
192.168.1.10
192.168.1.11

[dbservers]
192.168.1.20 ansible_user=ubuntu ansible_port=22

๐Ÿ”ธ Playbook (site.yml)

- name: Install nginx on webservers
hosts: webservers
become: yes
tasks:
- name: Install nginx
apt:
name: nginx
state: present

YAML-based dan declarative, bukan scripting imperatif.

โš™๏ธ Cara Kerja Ansible

  1. Kamu jalankan perintah:bashCopyEditansible-playbook site.yml -i hosts
  2. Ansible:
    • Membaca file inventory (daftar target)
    • Masuk ke server via SSH
    • Eksekusi task satu per satu
    • Menjaga idempotensi (jalankan 2x = hasil tetap)

๐ŸŽฏ Contoh Task Praktis

โœ… Install NGINX di semua webserver

- name: Install nginx
apt:
name: nginx
state: present

๐Ÿ” Copy SSH Key ke Semua Host

- name: Copy SSH key
authorized_key:
user: ubuntu
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}
"

๐Ÿงฑ Buat User Baru

- name: Add user 'admin'
user:
name: admin
shell: /bin/bash
groups: sudo


๐Ÿ“ฆ Ansible Modules (Built-in Perintah)

ModulFungsi
apt, yum, dnfInstal paket
copy, templateSalin file, pakai variabel
user, groupAtur user dan grup
serviceStart/stop service
fileAtur permission, owner
command, shellJalankan perintah
docker_container, docker_imageKelola kontainer Docker
proxmox (dari collection)Kelola VM di Proxmox
community.general.ntfyKirim notifikasi ke ntfy
Kamu bisa install module tambahan via Ansible Galaxy.

๐Ÿ” Idempotensi: Fitur Khas Ansible

Menjalankan task berulang tidak akan menyebabkan perubahan kalau sudah sesuai.

Contoh:

  • Playbook install nginx, dijalankan 10x โ†’ tetap hanya install sekali
  • Tidak seperti shell script yang bisa bikin duplikasi

๐Ÿ“ Contoh Real-World Use Case (di homelab kamu)

TujuanTask
Provision VM di ProxmoxPakai community.proxmox collection
Install Docker di semua nodePakai playbook apt, docker_container
Deploy Prometheus stackPull Docker image, copy prometheus.yml, run stack
Atur firewall & sshTambah rule UFW + copy SSH key
Backup config ke serverPakai fetch atau synchronize
Kirim notifikasi ke Telegram atau ntfyPakai uri atau ntfy module

๐Ÿ“ฆ Tools Tambahan

ToolFungsi
ansible-galaxyDownload roles dan collections dari komunitas
ansible-vaultEnkripsi file playbook / var sensitif
ansible-pullJalankan playbook dari server Git
AWX / Ansible TowerUI web untuk Ansible, dashboard, job scheduling

๐Ÿ”ฅ Contoh Skrip Otomasi Singkat

ansible all -i hosts -m ping
ansible-playbook -i hosts update-server.yml
ansible webservers -m apt -a "name=nginx state=latest"


โœ… Kelebihan Ansible

KelebihanPenjelasan
โœ… Tidak butuh agenCukup SSH saja
โœ… Mudah dipelajariFormat YAML, tidak perlu scripting
โœ… IdempotentAman dijalankan berulang
โœ… Support banyak modulTermasuk Docker, Proxmox, cloud, dsb
โœ… Sangat cocok untuk homelab & production

๐Ÿง  Penutup

Ansible sangat cocok untuk kamu yang:

  • ๐Ÿ” Ingin mengotomasi provisioning VM, container, dan server
  • ๐Ÿ“ฆ Ingin deploy stack Prometheus, Grafana, NGINX dengan cepat
  • ๐Ÿง˜โ€โ™‚๏ธ Ingin konfigurasi konsisten dan bebas human error
  • ๐Ÿง  Ingin belajar praktik DevOps dengan tool yang real