Ansible – Menulis Inventory Hosts Berbasis INI

Salah satu poin yang mesti dipelajari saat belajar ansible adalah menulis inventory hosts. Bagian ini harus diketahui oleh administrator saat akan melakukan config management ke hosts tujuan (seperti: server, router, dll).

Yang perlu diperhatikan adalah cara penulisanya dan opsi-opsi yang dibutuhkan sesuai harapan administrator.

Ansible
Ansible – Menulis Inventory Hosts Berbasis INI

Ansible secara default menggunakan file hosts yang terletak pada /etc/ansible/hosts jika saat mengeksekusi ad-hoc command atau ansible-playbook tidak menspesifikkan file inventory.

Misal mengeksekusi: ansible -m ping . Perintah tersebut akan mengambil default hosts inventory.

Namun ketika dispesifikkan, misalnya ansible all -i path/to/hosts -m ping maka akan mengambil file inventory hosts yang terletak pada path/to/hosts.

Ansible: Inventory Hosts INI Format

Menulis inventory hosts ansible dengan format INI sebenarnya mudah, hanya saja perlu dicoba dan disesuaikan dengan kondisi environment anda.

Nah, berikut saya contohkan penulisanya, kemudian silahkan pahami dan buat inventory hosts sesuai kebutuhan anda.

Baca juga:
Contoh Menulis Inventory Hosts Ansilbe – Study Case
Ansible – Menulis Inventory Hosts Berbasis YAML

Silahkan buat file dengan nama hosts. Terserah diletakkan dimana. Cara menggunakan inventory hosts nanti mungkin dibahas lagi pada saat belajar Ansible – Ad-Hoc Command.

[webserver:children]
cluster1
cluster2

[cluster1:vars]
domain=example.com

[cluster2:vars]
domain=example.net

[cluster1]
192.168.1.1
192.168.1.2
192.168.1.3

[cluster2]
192.168.2.1
192.168.2.2
192.168.2.3

[dbserver:children]
mysql
postgresql

[mysql]
1.1.1.1
2.2.2.2

[postgresql]
3.3.3.3
4.4.4.4

Maksudnya Gimana?

– Ada 2 Group, yaitu: webserver dan dbserver.

– Pada group webserver dibuatlah group lagi, yaitu: cluster1 dan cluster2.
cluster1 ada 3 hosts: 192.168.1.[1-3] dan cluster2 juga ada 3 hosts: 192.168.2.[1-3]

– Pada group dbserver dibuatlah group lagi, yaitu: mysql dan postgresql.
mysql ada 2 hosts: 1.1.1.1 dan 2.2.2.2
postgresql ada 2 hosts: 3.3.3.3 dan 4.4.4.4

– Semua hosts yang berada pada cluster1 menggunakan domain: example.com dan,
– Semua hosts yang berada pada cluster2 menggunakan domain: example.net

Keterangan:

  • [cluster1] : membuat group dengan cluster1.
  • [webserver:children] : membuat induk group, didalam induk group ini ada group cluster1 dan cluster2.
  • [cluster1:vars] : membuat variable, formatnya key: value. Yang dipakai pada saat templating jinja2 atau pada tasks.

Sebenarnya secara keyword default ada group global untuk memanggil semua alamat hosts, keyword tersebut adalah all.

Jadi, misalkan melakukan: ansible all -i path/to/hosts -m ping maka perintah ini akan melakukan ping ke semua hosts didalam file inventory hosts tersebut.

Leave a Reply