Pendahuluan

Ansible adalah alat otomatisasi yang banyak digunakan oleh sysadmin dan DevOps untuk mengelola server, menginstal aplikasi, hingga mengatur konfigurasi sistem. Agar penggunaan Ansible lebih mudah, efisien, dan rapi, kita perlu memahami struktur proyek dalam Ansible.

Artikel ini akan membahas struktur dasar yang digunakan dalam Ansible dan bagaimana kamu bisa mengatur file dan folder agar proyek otomatisasi lebih terorganisir.

Struktur Dasar dalam Proyek Ansible

Saat kita mulai membuat proyek dengan Ansible, kita biasanya akan melihat susunan folder dan file seperti ini:

ansible-project/
├── inventory
├── playbook.yml
├── roles/
│ └── webserver/
│ ├── tasks/
│ ├── handlers/
│ ├── templates/
│ ├── files/
│ ├── vars/
│ └── defaults/
└── group_vars/
Mari kita bahas satu per satu.

Penjelasan Komponen Utama

🔸 Inventory

File ini berisi daftar server (host) yang ingin kita kelola. Bisa dalam format sederhana seperti:

[web]
192.168.1.10

Atau dalam format YAML yang lebih kompleks.

🔸 Playbook

Playbook adalah file YAML yang berisi instruksi otomatisasi. Misalnya: install web server, salin file konfigurasi, dan lain-lain.

Contoh sederhana:

- hosts: web
tasks:
- name: Install Apache
yum:
name: httpd
state: present

🔸 Roles

Roles adalah cara untuk mengatur tugas dalam folder khusus agar lebih modular dan terpisah. Ini sangat membantu jika proyek mulai besar.

Dalam satu role, biasanya terdapat:

  • tasks/ → berisi file main.yml dengan daftar tugas utama.

  • handlers/ → tugas khusus yang dijalankan saat ada perubahan.

  • templates/ → file konfigurasi dinamis berbasis Jinja2.

  • files/ → file statis yang akan disalin ke server.

  • vars/ dan defaults/ → tempat menyimpan variabel.

🔸 Group Vars & Host Vars

Kita bisa menyimpan variabel khusus untuk grup server atau host tertentu agar tidak perlu mendefinisikan variabel berulang kali.

Contoh Implementasi Sederhana

Misalnya kamu ingin menginstal Apache di server 192.168.1.10. Struktur sederhana bisa seperti ini:

ansible-apache/
├── inventory
├── playbook.yml
└── roles/
└── apache/
└── tasks/
└── main.yml

Isi file inventory:

[web]
192.168.1.10

Isi file playbook.yml:

- hosts: web
roles:
- apache

Isi file roles/apache/tasks/main.yml:

- name: Install Apache
yum:
name: httpd
state: present

Best Practice dalam Menyusun Struktur

  • Gunakan roles sejak awal untuk struktur yang lebih rapi.

  • Simpan variabel di tempat yang sesuai (group_vars, host_vars, defaults).

  • Gunakan penamaan folder dan file yang konsisten.

  • Kelola proyek Ansible kamu menggunakan Git agar mudah dilacak dan dikelola tim.

Kesimpulan

Struktur dalam Ansible sangat membantu agar proyek otomatisasi tetap terorganisir dan mudah dikelola, terutama saat proyek makin besar. Dengan mengikuti struktur yang baik dan memanfaatkan fitur seperti roles dan variabel, kamu bisa membuat proses otomatisasi lebih cepat, rapi, dan bisa digunakan bersama tim.

Yuk, mulai buat proyek Ansible kecil dengan struktur yang benar. Selamat mencoba! 🚀