Menyiapkan Inventory Carbonio dengan Ansible

Kalau ngomongin installasi Carbonio via Ansible, ada satu hal yang selalu jadi fondasi: inventory file.
Buat saya pribadi, file ini ibaratnya peta harta karun tanpa peta, kita bisa nyasar dan nggak pernah sampai ke tujuan. Dengan inventory, kita ngasih tahu Ansible:
👉 “Layanan ini ada di server A, layanan itu di server B, database taruh di node ini, proxy di node itu.”

Singkatnya, inventory adalah blueprint service-to-host. Dari situ Ansible bisa tahu peran setiap VM dalam arsitektur Carbonio.

Awal Mula: Nyusun Folder

Pertama kali saya bikin lab untuk Carbonio, saya sengaja bikin folder khusus biar rapi. Karena semua output, credential, dan konfigurasi bakal di-drop di folder yang sama dengan inventory.

Misalnya saya lagi bikin environment untuk uji coba, maka saya siapkan:

mkdir -p /root/carbonio_lab/
cd /root/carbonio_lab/

Nah, di folder inilah nanti kita bikin inventory. Jadi semua rahasia (kayak password database dan LDAP) juga aman tersimpan di sini.

Menyusun Inventory: Kerangka Dasar

Inventory Carbonio formatnya simpel, pakai INI. Untungnya, di dalam collection Ansible udah ada template skeleton yang bisa dipakai.
Saya waktu itu ambil kerangkanya dari:

~/.ansible/collections/ansible_collections/zxbot/carbonio_install/inventoryname

Isinya lengkap semua role Carbonio, dari PostgreSQL, LDAP, MTA, Proxy, sampai Video Server. Walaupun nggak semua role kita pakai, group-nya tetap harus ada biar nanti gampang kalau suatu hari infrastruktur mau di-upgrade.

Contoh skeleton-nya kurang lebih begini:

[postgresServers]

[masterDirectoryServers]

[replicaDirectoryServers]

[serviceDiscoverServers]

[dbsConnectorServers]

[mtaServers]

[proxyServers]

[proxyServers:vars]
#webmailHostname=webmailPublicHostname

[applicationServers]

[filesServers]

[docsServers]

[taskServers]

[previewServers]

[videoServers]
#hostname public_ip_address=x.y.z.t

[workStreamServers]

[prometheusServers]

[syslogServer]

Kompilasi: Jadi Inventory Sesungguhnya

Setelah tahu skeleton, saya mulai mapping role ke VM.
Karena di lab saya pakai 3 node scenario, maka kira-kira susunannya jadi:

[postgresServers]
node1.example.com

[masterDirectoryServers]
node1.example.com

[replicaDirectoryServers]

[serviceDiscoverServers]
node1.example.com

[dbsConnectorServers]

[mtaServers]
node3.example.com

[proxyServers]
node3.example.com

[proxyServers:vars]
webmailHostname=webmail.example.com

[applicationServers]
node2.example.com

[filesServers]

[docsServers]

[taskServers]
node2.example.com

[previewServers]

[videoServers]

[workStreamServers]

[prometheusServers]
node1.example.com

[syslogServer]

Lihat kan? Nggak semua service harus ada (contohnya filesServers dan docsServers masih kosong). Tapi group header tetap saya tulis, biar konsistensi terjaga.

Best Practice yang Saya Pakai

Satu hal yang saya pelajari: jangan campur inventory untuk environment berbeda. Kalau punya banyak proyek atau lab, lebih baik bikin folder per environment. Misalnya:

/root/infra_alpha/
/root/customer_xyz/
/root/course_c103_lab/

Dengan begitu, credential tiap environment aman dan nggak ketuker. Apalagi di production, ini jadi penting banget.

Jadi, Apa Selanjutnya?

Begitu inventory sudah siap, langkah berikutnya tinggal jalanin playbook installasi Carbonio.
Ansible bakal baca file inventory itu, lalu otomatis men-deploy semua service sesuai mapping. Saya sendiri waktu nyoba, rasanya puas banget tinggal ansible-playbook, duduk manis, dan tunggu semua node kebangun.

Inventory ini mungkin terlihat cuma file teks biasa, tapi kenyataannya, dia adalah jantung dari deployment Ansible.
Kalau blueprint-nya jelas, Carbonio bisa berdiri tegak dengan role-role yang rapi, persis sesuai rencana.

Leave a Reply

Your email address will not be published. Required fields are marked *