Reset Password PostgreSQL Carbonio dan Menyelaraskan Consul KV

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.

Leave a Reply

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