Ansible Inventory
Ansible Inventory

Struktur File Ansible Inventory

Ansible Inventory adalah fondasi yang menentukan bagaimana kita mengelola dan berinteraksi dengan berbagai host yang menjadi target.

Tanpa pemahaman yang baik tentang inventory, kamu tidak akan dapat memanfaatkan secara optimal.

Artikel ini akan menjelaskan secara komprehensif apa itu Ansible Inventory, jenis-jenisnya, dan bagaimana mengelolanya dengan efektif.

Apa Itu Ansible Inventory?

Inventory adalah file atau kumpulan file yang berisi daftar host atau node yang akan dikelola.

Inventory berfungsi sebagai “buku alamat” yang memberi tahu Ansible di mana harus menjalankan tugas-tugas otomatisasi, serta bagaimana mengelompokkan host tersebut berdasarkan karakteristik atau fungsi tertentu.

Secara sederhana, inventory menjawab pertanyaan-pertanyaan mendasar:

  1. Host mana saja yang akan dikelola?
  2. Bagaimana mengelompokkan host-host tersebut?
  3. Variabel apa yang spesifik untuk host atau kelompok tertentu?

Struktur Dasar Inventory

Inventory Ansible dapat berupa file sederhana dengan format INI atau YAML.

Format INI

web1.example.com
web2.example.com

[database]
db1.example.com
db2.example.com

[webservers]
web1.example.com
web2.example.com

Format YAML

all:
hosts:
web1.example.com:
web2.example.com:
children:
webservers:
hosts:
web1.example.com:
web2.example.com:
database:
hosts:
db1.example.com:
db2.example.com:

Format Yaml
Format Yaml

Jenis-Jenis Inventory

1. Static Inventory

Inventory statis adalah file teks biasa yang berisi daftar host. Ini adalah jenis inventory paling sederhana dan cocok untuk lingkungan dengan host yang relatif stabil.

2. Dynamic Inventory

Inventory dinamis dihasilkan secara otomatis dari sumber eksternal seperti:

  • Cloud provider (AWS, Azure, GCP)
  • Sistem virtualisasi (VMware, OpenStack)
  • CMDB (Configuration Management Database)
  • Custom script Python

Pengelompokan Host (Groups)

Salah satu fitur terkuat adalah kemampuan mengelompokkan host.

Grup Bersarang (Nested Groups)

[web:children]
apache
nginx

[apache]
web1.example.com

[nginx]
web2.example.com

[database]
db1.example.com

[production:children]
web
database

Grup Berdasarkan Lokasi atau Fungsi

[jakarta]
host1.example.com
host2.example.com

[surabaya]
host3.example.com

[frontend]
host[1:2].example.com

[backend]
host3.example.com

Variabel dalam Inventory

Kamu dapat mendefinisikan variabel di level yang berbeda.

Host

web1.example.com ansible_user=admin ansible_port=2222

Group

[webservers:vars]
http_port=80
max_clients=200

[databases:vars]
ansible_user=dbadmin

Variabel dalam File Terpisah

Struktur direktori inventory

inventory/
├── hosts
├── group_vars/
│ ├── webservers.yml
│ └── databases.yml
└── host_vars/
├── web1.example.com.yml
└── db1.example.com.yml

Menggunakan Pattern

Menjalankan playbook pada grup tertentu

ansible-playbook -i inventory.ini webservers playbook.yml

Menjalankan pada beberapa grup

ansible-playbook -i inventory.ini webservers:databases playbook.yml

Mengecualikan grup tertentu

ansible-playbook -i inventory.ini all:!databases playbook.yml

Range Host

Numerik

[web_servers]
web-[01:05].example.com

[db_servers]
db-[1:3].example.com

Sama dengan:

web-01.example.com

web-02.example.com

web-03.example.com

web-04.example.com

web-05.example.com

Alfanumerik

[cluster_nodes]
node-[a:f].example.com # a, b, c, d, e, f

[rack_servers]
rack-[A:C]-[01:03].example.com # Kombinasi range

Hasil:

rack-A-01.example.com

rack-A-02.example.com

rack-A-03.example.com

rack-B-01.example.com

… dst

Padding Nol

[production]
server-[001:100].prod.mycompany.com # 001, 002, …, 099, 100

[development]
dev-[01:12].lab.mycompany.com

Ansible Inventory adalah kunci fleksibilitas dan skalabilitas otomatisasi. Dengan memahami jenis dan teknik pengelompokannya, kamu dapat:

  • Mengelola lingkungan kompleks secara terstruktur
  • Menskalakan otomatisasi dari puluhan hingga ribuan host
  • Mengurangi duplikasi konfigurasi dengan variabel terpusat
  • Beradaptasi dengan lingkungan dinamis

Rancang inventory yang baik sejak awal untuk efisiensi dan kemudahan pengelolaan infrastruktur jangka panjang.