
Merhabalar,
Bu makalede, VMware vCenter Server Appliance-VCSA sunucu üzerinde, yerleşik olarak gelen PostgreSQL database’inin, PgAdmin ile nasıl yönetilebileceğine dair bilgiler aktarmak istiyorum. Madem ki bir PostgreSQL database var, o halde database yönetimi yapabileceğimiz bir client aracı ile yönetimini de gerçekleştirebiliriz değil mi?
Öncelikle belirtmekte fayda görüyorum, database üzerinde işlem yapmak, vCenter Hizmeti ile ilgili sorunlara neden olabilir. Ne yaptığınızı bildiğinizden emin olmanız ve database üzerinde işlem yapmadan önce vCenter Server Appliance’ın çalışan bir yedeğine veya snapshot’ına sahip olduğunuzu iki kez kontrol etmenizde fayda var.
Bu makalede aktardığım yöntem, vCenter Server Appliance 6.5, 6.7 ve 7.0 versiyonları için kullanılabilmektedir. Burada VCSA 7.x versiyon kullanmaktayım.
NOT: Bu yöntem, VMware tarafından resmi olarak desteklenmemektedir, lütfen riskin size ait olduğunu unutmayınız ve kendi risk yönetiminizi yaparak kullanınız.
Database vc user özelliklerini listeleme
Linux’ta herşey, bir dosya diyoruz. Bir database veya bir db kullanıcısı varsa, bu özelliklerin de yazılı olduğu bir dosya olmalı değil mi?
Database üzerindeki vc kullanıcısına ait bilgileri görmek için aşağıdaki dosyayı listeleyelim.
cat /etc/vmware-vpx/vcdb.properties

Bakınız burada, vc kullanıcısının parolasını açık şekilde görebiliyoruz. Bu parolayı not ediniz. İlerleyen adımlarda kullanılacak bir bilgidir.
Detaylarına baktığımızda, 5432 portundan erişimler olacağı tanımlı. O halde, sıradaki kontrolümüz, local firewall olmalı. Acaba bu bağlantılara, sistem izin verecek mi?
iptables kontrolü yapalım.
systemctl list-unit-files | grep iptables

İptables servisinin durumuna da bakalım.
systemctl status iptables

Her ne kadar disable gibi görünse de yüklü durumda ve ilgili kuralı yazmadan, bağlantı kuramayacağınızı da not olarak ekleyeyim.
Local Firewall üzerinde 5432 portu için kural yazılması
Var olan iptables kurallarını görmek için aşağıdaki komutu kullanabilirsiniz.
iptables -S

Burada 5432 portu için bir kural göremiyorsunuz. Böyle olunca, mantıken telnet cevabı da alamamalıyız değil mi? Hemen deneyelim…
telnet vcenter.isleyen.net 5432

Bakınız, telnet bağlantısı yapmak istediğimde, direkt olarak başarısız oluyor.
Şimdi VCSA güvenlik duvarını, 5432 numaralı bağlantı noktasındaki bağlantıları kabul edecek şekilde yapılandıracağız. Bunun için aşağıdaki komutu kullanıyoruz ve bir iptables kuralı yazıyoruz.
iptables -I INPUT 1 -p tcp –dport 5432 -j ACCEPT
iptables -S | grep 5432

Tüm kuralları filtrelediğimizde de şimdi yazdığımız bu kuralı görebiliyoruz.
Bu durumda, 5432 portu için telnet atmayı denediğimde cevap alabilmeliyim…

Bakınız bağlantı kuruldu ama boş bir penceredeyiz şu an. Cevap aldığımız anlamına geliyor ve işlemimizin de başarılı olduğunu gösteriyor.
Buraya kadar ne yaptık?
- Firewall kontrolü yaptık
- iptables için 5432 portu erişimleri için kural yazdık.
Peki işimiz bitti mi? Tabi ki hayır!!! Peki PostgreSQL, acaba uzak bağlantılara izin veriyor mu?
PostgreSQL için uzak bağlantılara izin verme
Uzak bilgisayarlardan gelecek bağlantılara izin vermek için vPostgres’i yapılandıralım. PostgreSQL yapılandırma dosyası /storage/db/vpostgres/pg_hba.conf konumunda bulunuyor.
Dosyanın içeriğine bakalım.
cat /storage/db/vpostgres/pg_hba.conf

Bu dosya içeriğinden, sadece local bağlantılara izin verildiğini görebiliyoruz. Dolayısıyla uzaktan gelen hiçbir bağlantıya izin verilmiyor. Bunun için bu dosya içine bir ekleme yapmamız gerekiyor.
Bu eklemeyi yaparken şu konuları değerlendirmeniz gerekiyor:
- Tüm uzak bağlantıların kabul edilmesini sağlayabilirsiniz.
- Sadece belli bir IP adresinden gelecek bağlantıların kabul edilmesini sağlayabilirsiniz.
- Sadece belli IP bloğundan gelecek bağlantıların kabul edilmesini sağlayabilirsiniz.
Güvenlik gereği, her client’a açmak yerine, sadece güvenilir bir ya da daha fazla client’dan gelecek bağlantıları kabul etmek mantıklı olacaktır. Karar elbette sizin…
Eğer her bağlantıyı kabul etmesini isterseniz, aşağıdaki komutu kullanmalısınız.
echo “host all vc 0.0.0.0/0 md5” >> /storage/db/vpostgres/pg_hba.conf
Bu girdi, tüm ana bilgisayarlardan bağlantılara izin verir, ancak oturum açmak için yine de bir parolaya ihtiyacınız vardır. “vc” yerine “all” kullanırsanız, postgres kullanıcısı parola olmadan bağlanabilir!
Eğer belli IP bağlantılarını kabul etmesini isterseniz, aşağıdaki komutu kullanmalısınız.
echo “host all vc IP_Adresi/32 md5” >> /storage/db/vpostgres/pg_hba.conf
Ben burada, sadece kendi laptop’umdan gelen bağlantıların kabul edilmesini istersem, IP adresi olarak onu tanımlayarak komutu girmeliyim.
echo “host all vc 192.168.36.50/32 md5” >> /storage/db/vpostgres/pg_hba.conf
Eğer belli IP bloğu bağlantılarını kabul etmesini isterseniz, aşağıdaki komutu kullanmalısınız.
echo “host all vc 192.168.36.0/24 md5” >> /storage/db/vpostgres/pg_hba.conf
Şimdi dosyamızın son halinin içeriğine bakalım.
cat /storage/db/vpostgres/pg_hba.conf

Kaydımız eklendi. Son olarak da, PostgreSQL yapılandırma dosyasında yaptığımız değişikliklerin, son haliyle yeniden yüklenmesini sağlamalıyız.
pg_hba.conf içindeki değişiklikleri etkinleştirmek için vPostgres yapılandırmasını yeniden yüklemek için aşağıdaki komutu kullanıyoruz.
/opt/vmware/vpostgres/current/bin/psql -U postgres -c “SELECT pg_reload_conf();”

Artık hazırız. Sonraki adıma geçebiliriz.
PgAdmin ile VCSA bağlantısı oluşturma
Son aşamada, PgAdmin’e VCSA bilgilerini gireceğiz. Download edip kurmuş olduğunuzu var saydığım PgAdmin programını açıyoruz.
Server üzerine sağ tıklayıp Create> Server.. seçeneği ile devam ediyoruz.

General sekmesinde iken, bu bağlantıya bir isim veriyoruz. Ben burada VCSA DATABASE ismini verdim.

Connection tabına geçiyoruz. Burada da kullanıcı ve port bilgilerimiz var. Bağlantı kurulacak VCSA sunucu ismi, port numarası, database ismi, kullanıcı adı ve parolası bilgilerini dolduruyoruz. Vc kullanıcısı için parola bilgisini, makalenin başında kontrol adımlarındayken not etmenizi belirtmiştim. Bu bilgilerle, aşağıdaki gibi girişlerinizi tamamlayınız.

Girişleri bitirdikten sonra Save tuşuna basıp işlemi tamamlayınız.
VCSA PostgreSQL database’ine bağlantı sağlandığında, aşağıdaki gibi tüm bilgileri görebileceksiniz.
İşte bundan sonrası, database yeteneklerinize kalıyor. Database bilginiz varsa, artık VCSA sunucunuza, database seviyesinde her müdaheleyi yapabilirsiniz.

Var olan tüm sanal sunucuların bir listesini almak için Verileri Görüntüle’yi (gezinme çubuğunun üstündeki Tablo Simgesi) tıklayın.

Sonra da;
Servers > vCenter DB > Databases > VCDB > Schemas > vc > Views > vpxv_vms yolunu izleyebilirsiniz.
Eğer database komutlarını biliyorsanız, sorgu yazarak da bu listeyi kolaylıkla elde edebilirsiniz.
Bunun için de sorgu penceresine geçmeniz gerekiyor. Sayfanın üst kısmında yer alan simgeye tıklayarak sorgu penceresini açabilirsiniz.

Sağ taraftaki pencerede, Query Editor sekmesinde de aşağıdaki sorguyu çalıştırın.
select * from vpxv_vms

Bakınız ortamdaki VM listesini görebiliyoruz.
Database seviyesinde, geliştirme amaçlı da düşünebileceğiniz bu ortamı kullanırken, yapacağınız işlemler öncesinde, desteklenen bir metod olmadığını ve işlem yapacaksanız da yedek alarak işlem yapmanızı bir kere daha belirtmek istiyorum.
Yararlı olması dileğiyle.
Yusuf İşleyen
