Code44free's Blog

Синхронизация виртуальных машин между ESXi по SSH

Posted in vmware by code44free on Май 21, 2013

Настройка SSH сервера и файрвола в ESXi
Генерация SSH ключей
Запуск скрипта копирования по расписанию

 

 

Настройка SSH сервера и файрвола в ESXi

Включить SSH сервер

vmware vSphere client -> Configuration -> Security Profile -> Services Properties -> SSH -> Options

Разрешить на файрволе доступ к серверу и исходящие соединения для клиента (SSH Server, SSH Client)

vmware vSphere client -> Configuration -> Security Profile -> Firewall Properties

vmware_firewall

 

 

Генерация SSH ключей

Генерируем ключи на Linux компьютере с помощью ssh-keygen, passphrase оставляем пустой
на windows их можно создать с помощью puttykeygen


nfs:~ # ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
40:54:f9:c9:e6:d4:9e:63:19:db:19:d1:be:9b:5b:75 root@nfs
The key's randomart image is:
+--[ DSA 1024]----+
| .o... . |
| . . . .|
| . o o o |
| . * o . .|
| S+ . * oE|
| . B o.o|
| . . +|
| o.|
| ..|
+-----------------+

копируем открытый ключ в /etc/ssh/keys-root/authorized_keys на ESXi хосты


cat /root/.ssh/id.dsa.pub | ssh root@another_esxi_ip 'cat >> /etc/ssh/keys-root/authorized_keys'

копируем закрытые ключи в .ssh на ESXi хостах


scp /root/.ssh/id_dsa root@another_esxi_ip:/.ssh/

 

 

Запуск скрипта копирования по расписанию

Копируем скрипт на ESXi хост, в корень или любое удобное место

Меняем значение BACKUP_HOST на IP адрес ESXi хоста для синхронизации
Меняем значение VM_LIST на список имен виртуальных машин для синхронизации, разделенные пробелами

# scp_backup.sh
# Author: Alexey Smovzh
# Created Date: 21/05/2013
# https://code44free.wordpress.com

VMWARE_CMD=/bin/vim-cmd
BACKUP_HOST=root@10.8.48.219
VM_LIST='windows linux'

for VM_NAME in ${VM_LIST}; do

        VM_ID=$(${VMWARE_CMD} vmsvc/getallvms | grep ${VM_NAME} | awk '{ print $1 }')
        DATASTORE_NAME=$(${VMWARE_CMD} vmsvc/getallvms | grep ${VM_NAME} | awk '{ print $3 }' | sed 's/\[//g;s/\]//g')
        VM_DIR=/vmfs/volumes/${DATASTORE_NAME}/${VM_NAME}

        ### If vm_dir does't exist, create it
        ssh ${BACKUP_HOST} 'if ! [ -f '${VM_DIR}' ]; then mkdir '${VM_DIR}'; fi'

        ### First copy vm configuration
        scp ${VM_DIR}/${VM_NAME}.vmx ${BACKUP_HOST}:${VM_DIR}
        scp ${VM_DIR}/${VM_NAME}.vmxf ${BACKUP_HOST}:${VM_DIR}
        scp ${VM_DIR}/${VM_NAME}.vmsd ${BACKUP_HOST}:${VM_DIR}

        ### Create snapshot
        ${VMWARE_CMD} vmsvc/snapshot.create ${VM_ID} ${VM_NAME} 'scp_tmp_snapshot' 0 0

        ### Copy vmdk files
        scp ${VM_DIR}/${VM_NAME}-flat.vmdk ${BACKUP_HOST}:${VM_DIR}
        scp ${VM_DIR}/${VM_NAME}.vmdk ${BACKUP_HOST}:${VM_DIR}

        ### Delete snapshot
        ${VMWARE_CMD} vmsvc/snapshot.removeall ${VM_ID}

done

exit 0;

делаем скрипт исполняемым
добавляем запуск скрипта по расписанию


# chmod +x /scp_backup.sh
# cd /var/spool/cron/crontabs

/var/spool/cron/crontabs # chmod u+w root

/var/spool/cron/crontabs # vi root
#syntax : minute hour day month dayofweek command
...
01 23 * * * /scp_backup.sh

/var/spool/cron/crontabs # chmod u-w root

Реклама
Tagged with: , , ,

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: