Kalau kalian dulu menginstall Carbonio secara manual (bukan pakai Ansible), maka secara default lingkungankalian belum bisa dikelola lewat Ansible playbook. Padahal, supaya bisa di-upgrade, dimonitor, atau di-deploy konfigurasi baru secara otomatis, step pertama yang harus dilakukan adalah membuat Ansible inventory + konfigurasi yang lengkap dan akurat.
Di tutorial ini kita akan bahas dari awal sampai akhir apa saja yang harus dipersiapkan, termasuk cara cek node yang punya service tertentu, sampai bikin file password yang dibutuhkan oleh playbook Ansible.
Apa Yang Akan Kalian Pelajari?
Setelah mengikuti panduan ini, kalian akan bisa:
✅ Buat file inventory Ansible yang benar dan lengkap.
✅ Kelompokkan host berdasarkan role Carbonio (PostgreSQL, LDAP, Proxy, MTA, Mailbox, Files, Docs, Video, dan lain-lain).
✅ Dapatkan nilai variabel penting seperti webmailHostname dan public_ip_address untuk Video Server.
✅ Buat file password yang diperlukan oleh playbook upgrade.
✅ Siap menjalankan playbook Ansible untuk mengelola Carbonio kalian seperti environment yang terinstall pakai Ansible resmi.
Struktur File Inventory Ansible
kalian harus buat file inventory dengan struktur seperti berikut. Ganti semua srvX.example.com dengan FQDN asli dari server kalian.
[postgresServers]
srv1.example.com
[masterDirectoryServers]
srv1.example.com
[replicaDirectoryServers]
# srv2.example.com
[serviceDiscoverServers]
srv1.example.com
srv2.example.com
srv3.example.com
### Keep this Component empty and uncommented
[dbsConnectorServers]
[mtaServers]
srv8.example.com
[proxyServers]
srv8.example.com
[proxyServers:vars]
webmailHostname=your.webmail.public.hostname
[applicationServers]
srv4.example.com
[filesServers]
srv5.example.com
[docsServers]
srv6.example.com
[taskServers]
srv4.example.com
[previewServers]
srv6.example.com
[videoServers]
srv7.example.com public_ip_address=x.y.z.t
[prometheusServers]
srv3.example.com
[syslogServer]
srv3.example.com
[workStreamServers]
srv8.example.com
👉 Struktur ini wajib rapi karena Ansible playbook akan membaca group ini untuk menentukan tugas apa yang harus dijalankan ke setiap node.
Cara Identifikasi Node Berdasarkan Service
Mungkin kalian nggak ingat lagi VM mana yang jalanin service tertentu. Untuk itu tiap service punya cara cek masing-masing. Jalankan perintah di bawah ini pada setiap server untuk mencari tahu service-nya:
✔ PostgreSQL
systemctl list-units | grep postgres
✔ Master LDAP / Directory
su - zextras
zmlocalconfig | grep ldap_master_url
✔ Replica LDAP
su - zextras
/opt/zextras/libexec/zmreplchk
✔ Konsul (Service Discovery)
consul members
Perhatian: nama node Konsul biasanya beda dengan FQDN servernya.
✔ MTA
su - zextras
carbonio prov -l gas mta
✔ Proxy
su - zextras
carbonio prov -l gas proxy
✔ Mailbox (Application)
su - zextras
carbonio prov -l gas mailbox
✔ Files
curl -s http://127.0.0.1:8500/v1/catalog/service/carbonio-files | jq -r | grep Node
✔ Docs
curl -s http://127.0.0.1:8500/v1/catalog/service/carbonio-docs-editor | jq -r | grep Node
✔ Preview
curl -s http://127.0.0.1:8500/v1/catalog/service/carbonio-preview | jq -r | grep Node
✔ Task
curl -s http://127.0.0.1:8500/v1/catalog/service/carbonio-tasks | jq -r | grep Node
✔ Video Server
curl -s http://127.0.0.1:8500/v1/catalog/service/carbonio-videoserver | jq -r | grep Node
✔ Workstream (Chat)
curl -s http://127.0.0.1:8500/v1/catalog/service/carbonio-ws-collaboration | jq -r | grep Node
✔ Prometheus
systemctl list-units | grep carbonio-prometheus.service
✔ Syslog
grep udp /etc/rsyslog.conf
Cara-cara di atas membantu kalian memastikan role apa yang dijalankan tiap VM sebelum dimasukkan ke inventory.
Cek Service yang Sedang Berjalan
Kalau kalian menggunakan Ubuntu 22.04 / RHEL 8, jalankan:
su - zextras
zmcontrol status
Kalau kalian menggunakan Ubuntu 24.04 / RHEL 9, jalankan:
systemctl list-units | grep carbonio
systemctl list-units | grep postgres
Ini penting buat memastikan semua service yang relevan benar-benar berjalan.
Variabel Penting di Inventory
webmailHostname
Nilai ini dipakai oleh komponen Proxy. kalian bisa ambil dengan perintah:
carbonio prov gcf zimbraPublicServiceHostname
Atau jika ingin ambil berdasarkan domain tertentu:
carbonio prov gd contoh.com zimbraPublicServiceHostname
Masukkan hasilnya di bagian:
[proxyServers:vars]
webmailHostname=your.webmail.public.host
public_ip_address (Video Server)
Kalau kalian pakai Video Server, kalian harus masukkan IP publiknya seperti ini:
grep nat_1_1_mapping /etc/janus/janus.jcfg
Lalu taruh di inventory baris:
srv7.example.com public_ip_address=xxx.xxx.xxx.xxx
Buat File Password yang Diperlukan
Karena instalasi dulu manual, password-password untuk service penting belum otomatis tersedia buat Ansible. kalian harus membuatnya sendiri.
Kalau file inventory kalian bernama:
carbonio-inventory
Maka buat file berikut di folder yang sama dengan inventory:
| Nama File | Cara Ambil Password |
|---|---|
carbonio-inventory_postgrespassword | Password PostgreSQL waktu install manual |
carbonio-inventory_ldap_password | zmlocalconfig -s zimbra_ldap_password |
carbonio-inventory_consulpassword | cat /var/lib/service-discover/password |
👉 Isi file harus hanya password, tanpa spasi atau karakter tambahan.
Siap Dikelola Pakai Ansible
Kalau semua langkah di atas sudah kalian kerjakan:
✔ Inventory lengkap dan benar
✔ Variabel penting sudah terisi
✔ File password sudah tersedia
Maka proses selanjutnya bisa langsung pake Ansible playbook untuk upgrade, konfigurasi, atau manajemen infrastruktur Carbonio kalian layaknya environment yang terinstall otomatis.