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:
- Host mana saja yang akan dikelola?
- Bagaimana mengelompokkan host-host tersebut?
- 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:

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.

