Di panduan ini saya bahas dua skenario yang sering muncul di Carbonio terkait PostgreSQL: reset password admin carbonio_adm yang hilang, dan memperbaiki ketidakcocokan credential antara Consul KV dan PostgreSQL yang bikin service gagal konek. Saya pisah jadi Case A dan Case B biar jelas.
Case A – Reset Password carbonio_adm
Gunakan cara ini ketika password admin PostgreSQL hilang. Perlu diingat, carbonio_adm bersifat independen dari Consul KV, jadi tidak perlu sinkronisasi apa pun.
1. Ganti Password di PostgreSQL
su - postgres
psql
ALTER ROLE carbonio_adm WITH PASSWORD 'NEW_PASSWORD';
Keluar:
q
exit
2. Verifikasi Password Baru
PGPASSWORD=NEW_PASSWORD psql -h 127.0.0.1 -U carbonio_adm
3. (Opsional) Bootstrap Service DB
Contoh:
PGPASSWORD=NEW_PASSWORD carbonio-files-db-bootstrap carbonio_adm 127.0.0.1
4. (Opsional) Cek Koneksi Aktif
PGPASSWORD=NEW_PASSWORD psql -h 127.0.0.1 -U carbonio_adm
--command "select count(*) as tot, usename, client_addr
from pg_stat_activity
group by usename, client_addr
order by tot desc;"
Case B – Perbaiki Ketidakcocokan Password Consul KV dan PostgreSQL
Gunakan cara ini ketika service tidak bisa konek ke PostgreSQL karena credential yang tidak konsisten. Credential user DB service (backup, powerstore, dan sejenisnya) harus cocok dengan yang tersimpan di Consul KV.
1. Export Consul Token
Catat dulu password yang tersimpan di:
cat /var/lib/service-discover/password
Kemudian jalankan:
export CONSUL_HTTP_TOKEN=$(gpg -qdo - /etc/zextras/service-discover/cluster-credentials.tar.gpg
| tar xOf - consul-acl-secret.json
| jq .SecretID -r)
2. Cek Credential yang Tersimpan di Consul
consul kv get -recurse "carbonio"
Perintah ini menampilkan db-name, db-username, dan db-password.
3. Test Credential dari Consul
MODULE=powerstore
PGPASSWORD=$(consul kv get "carbonio-$MODULE/db-password")
PGPASSWORD=$PGPASSWORD psql -h 127.0.0.1 -U $MODULE --command "select 1;"
4. Tentukan Arah Penyelarasan
Ada dua opsi yang bisa dipilih.
Opsi 1 – Selaraskan PostgreSQL ke Consul (disarankan)
Gunakan password yang sudah tersimpan di Consul:
MODULE="carbonio-abq"
MODULE_USER=$(consul kv get "$MODULE/db-username")
MODULE_PASSWORD=$(consul kv get "$MODULE/db-password")
su - postgres -c "psql --command="ALTER ROLE $MODULE_USER WITH encrypted password '$MODULE_PASSWORD';""
Opsi 2 – Selaraskan Consul ke PostgreSQL
Jika kalian mengubah password user DB secara manual:
su - postgres -c "psql --command="ALTER ROLE backup WITH encrypted password 'NEW_PASSWORD';""
Lalu update Consul KV:
consul kv put carbonio-backup/db-password NEW_PASSWORD
5. Verifikasi Penyelarasan
Test login:
PGPASSWORD=$(consul kv get "carbonio-backup/db-password")
psql -h 127.0.0.1 -U backup -d backup
6. (Opsional) Cek Configuration Override
carbonio config dump global | grep -i db
carbonio config dump global | grep -i consul
Penutup
Intinya, Case A dipakai kalau cuma password carbonio_adm yang hilang dan itu berdiri sendiri tanpa Consul. Sedangkan Case B dipakai kalau service gagal konek karena credential PostgreSQL dan Consul KV tidak sinkron. Untuk Case B, saya sarankan menyelaraskan PostgreSQL ke Consul (Opsi 1) supaya sumber kebenaran credential tetap satu, yaitu Consul KV.