VMware vCloud Director (vCD) SFTP’ye Backup Alma

Merhaba arkadaşlar,

Bu anlatımımda sizlere vCloud Director’de gömülü olarak gelmeyen otomatik backup alma ve aldığımız bu backup’ı SFTP’ye otomatik gönderme işlemini nasıl gerçekleştireceğimizi anlatacağım.

Gereksinimlerimizden bahsetmem gerekirse vCD üzerinde bash script oluşturacağımız için tüm cellere SSH erişimine ve root şifresine ihtiyacımız bulunmaktadır. Ardından 1 adet SFTP sunucusuna ve root şifresine ihtiyacımız bulunmaktadır.

İlk adım olarak tüm vCD cellerinde”ssh-keygen” komutu ile public ve private keyler oluşturuyoruz. Bu adımda “Enter file in witch…” diye sorduğunda enter tuşuna basıp geçiyoruz. Passphrase koymak istiyor musunuz dediğinde de herhangi bir şifre belirlemeden enter tuşuna basıp geçiyoruz. Çünkü buraya şifre koyarsanız oluşturduğumuz script çalışırken şifre soracağı için başarısız olacaktır.

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identitification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:7KMZvJiITZ+HbOyqj/PV5AeO5As2GSZES5baxyKNIe4 root@vcd01@vcd.local
The key's randomart image is:

Şimdi de “ssh-copy-id” komutu ile sftp serverımızın idsini kaydedeceğiz ve scp işlemi sırasında sftp sunucusuna şifresiz erişimimizi sağlayacağız. Alttaki komuttaki ip adresini kendi SFTP server ip adresinizle değiştirmeyi unutmayın. Bu adımı da tüm vCD cellerinde yapmamız gerekmektedir. vCD cell’i SFTP sunucusuna ilk defa ssh yapıyorsa ilk denememizde devam etmek istediğinize emin misiniz diye soracaktır. yes diyerek geçiyoruz. Ardından bize SFTP sunucusunun root şifresini soracaktır. İşlemimiz başarıyla tamamlandığı zaman “Number of key(s) added: 1” dönüşünü alacağız. Bu şekilde bu adımı tamamlamış bulunmaktayız.

ssh-copy-id root@192.168.1.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.1.10' can't be established.
ECDSA key fingerprint is SHA256:19n6fkd60qqmowiuy6XEaA87EuG/qgWUrc4ZSBhJl6Y.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO 1 key(s) remain to be installed -- if you are prompted now it is to installthe new keys
root@192.168.1.10's password:

Number of key(s) added: 1

Now try logging into the machine, with:     "ssh 'root@192.168.1.10'"
and check to make sure that only the key(s) you wanted were added.

Eğer aşağıdaki komut ile tüm vCD cellerinden şifre sormadan ssh yapabiliyorsanız bu adımı tamamlamış bulunmaktayız:

ssh root@192.168.1.10

Şimdi backup scriptimizi oluşturacağız. Bu adımı sadece 1 cell’de yapmamız yeterlidir. Scripti oluşturduğumuz dizin tüm cellerde paylaşımlı olduğu için otomatik olarak diğer celler de görecektir.

Burada dikkat etmeniz gereken bir husus bulunmaktadır. vCD’de düzenli olarak günlük backup alma işlemi yaptıracağımız için bir süre sonra disk sorunu yaşamaya başlayacağız. Bunu önlemek altta paylaştığım bash scriptte “tail -n +7” içeren satırda eski backupları silme komutu ekledim. Burada son 7 backup dışındaki tüm backuplar silinmektedir. İsterseniz o satırı silebilir ya da gün sayısını değiştirebilirsiniz:

vi /opt/vmware/vcloud-director/data/transfer/backupalma.sh

İçerisine yapıştırıyoruz:

#!/bin/bash

myhostname=`hostname|cut -d "." -f1`
getmaster=`sudo -i -u postgres /opt/vmware/vpostgres/current/bin/repmgr -f /opt/vmware/vpostgres/current/etc/repmgr.conf cluster show|grep "*" |cut -d "|" -f 2`

if  [ $myhostname = $getmaster ] ; then
   backup=$(/opt/vmware/appliance/bin/create-backup.sh | awk '/vcloud DB dump, properties files, certs and metadata have been archived to/{print $13}')
   sleep 2
   scp  "$backup" root@192.168.1.10:/home/vCloud/vCD/
   ls -tp /opt/vmware/vcloud-director/data/transfer/backups/ | grep -v '/$' | tail -n +7 | xargs -I {} rm  -- /opt/vmware/vcloud-director/data/transfer/backups/{}
fi

Dosyayı çalıştırılabilir hale getiriyoruz:

chmod +x /opt/vmware/vcloud-director/data/transfer/backupalma.sh

Şimdi de oluşturduğumuz scripti crontab ile düzenli olarak çalıştırabilmek için crontab’a gerekli parametreleri giriyoruz. Bu adımı tüm celllerde yapmanız gerekmektedir. Saati ve sıklığı istediğiniz şekilde değiştirebilirsiniz.

crontab -e

İçerisine ekle:

00 03 * * * /opt/vmware/vcloud-director/data/transfer/backupalma.sh

İşlemlerimiz bu kadar. Bu şekilde vCD backuplarımızı otomatik olarak her gece 03:00 da sftp sunucumuza alabiliriz. Umarım faydalı olabilmişimdir. Bir dahaki anlatımda görüşmek üzere…