- Обзор
- Описание процесса
- Права доступа и роли
- Подготовка инструмента к работе
- Порядок использования
- Примеры использования
- Проверка созданного образа (необязательно)
- Подключение к Export Helper ВМ по SSH (при необходимости)
Инструмент может:
- Экспортировать загрузочный диск ВМ в Yandex Object Storage.
- Экспортировать образ ВМ в Yandex Object Storage.
В результате работы инструмента в указанном bucket S3-хранилища будет создан файл с образом диска в формате qcow2.
Экспорт работает следующим образом:
-
Создаётся диск для ВМ из снимка диска или из образа диска (в зависимости от выбранного режима работы инструмента).
-
В каталоге заданном при инициализации создаётся
Export Helper ВМ
к которой подключается диск, созданный на первом этапе. -
В ВМ выполнется чтение данных с дополнительного диска и создание его образа с помощью инструмента qemu-img.
-
Полученный образ диска загружается в Yandex Object Storage с помощью инструмента Amazon CLI version 2.
-
После выполнения всех вышеописанных действий ВМ самоликвидируется с помощью API вызова.
По мере выполнения задач в рамках процесса инструмент пишет диагностические сообщения в группу Default сервиса Cloud Logging.
Для развёртывания инструмента и его запуска требуется определенный набор полномочий (ролей) в Yandex Cloud.
При подготовке инструмента к работе, в указанном при инициализации каталоге создаётся Service Account со следуюшим набором ролей:
- compute.editor - для удаления
Export Helper ВМ
после завершения экспорта. - storage.uploader - для загрузки созданного образа диска в Object Storage.
- lockbox.payloadViewer - для получения секретов для работы с Object Storage.
- logging.writer - для логирования хода процесса экспорта в Cloud Logging.
Далее этот SA привязывается к Export Helper ВМ
.
Для работы инструмента необходимо использовать операционную систему Linux или MacOS.
Работа инструмента в среде Windows Subsystem for Linux (WSL) не гарантируется!
Перед использованием инструмент нужно развернуть и подготовить к работе (выполнить инциализацию). Для этого необходимо:
- Убедиться, что все необходимые инструменты установлены и настроены:
yc CLI
- установлен и настроен.jq
- установлен.
- Загрузить решение из репозитория на github.com:
git clone https://github.com/yandex-cloud-examples/yc-disk-export-tool.git
- Перейти в папку с инструментом
cd yc-disk-export-tool.git
- Запустить инициализацию инструмента
Инициализация выполняется только один раз, выполнять его перед каждым запуском инструмента не нужно!
./init.sh <folder-id> <bucket-name> <sa-name> <subnet-name> <config-file>
Для инциализации нужно указать следующие обязательные параметры:
- folder-id - идентификатор каталога облачных ресурсов в Yandex Cloud где будут развернуты ресурсы, необходимые для работы инструмента. У пользователя, запускающего процесс инициализации, должны быть права администратора в данном каталоге.
- bucket-name - название bucket (имя папки) в Yandex Object Storage куда будут загружаться резервные копии.
- sa-name - имя сервисной учетной записи, которая будет привязана к
Export Helper ВМ
от имени которой будут выполняться операции по работе с S3 bucket. - subnet - имя подсети к которой будет подключаться
Export Helper ВМ
. config-file
- имя файла конфигурации (полный путь, если нужно) в формате JSON, в который будут записаны все нужные для работы инструмента параметры. Путь к файлу конфигурации нужно будет указывать при запуске инструмента.
Перед началом использования, убедитесь, что инструмент подготовлен к работе.
./yc-disk-export.sh <source-type> <folder-id> <source-name> <config-file>
У пользователя, запускающего инструмент, должны быть права на чтение в соответствующем каталоге, для ресурса который будет экспортироваться.
При запуске инструмента необходимо указать следующие обязательные параметры:
source-type
- тип источника данных. Определяет режим работы инструмента. Может принимать значения:disk
илиimage
в зависимости от типа ресурса для которого будет выполняться резервное копирование.folder-id
- идентификатор каталога облачных ресурсов в Yandex Cloud где находится источник данных.source-name
- имя ресурса источника данных в указанном каталоге облачных ресурсов:- для источника типа
disk
- этоназвание ВМ
- для источника типа
image
- этоназвание образа
- для источника типа
config-file
- путь к файлу конфигурации, созданный при инициализации инструмента.
./init.sh b1g22jx2133dpa3yvxc3 my-s3-bucket disk-export-sa subnet-a ./disk-export.cfg
./yc-disk-export.sh disk b1g22jx2133dpa3yvxc3 my-vm ./disk-export.cfg
./yc-disk-export.sh image b1g22jx2133dpa3yvxc3 win-image ./disk-export.cfg
При необходимости можно проверить созданный образ на работоспособность, развернув ВМ из этого образа локально.
Ниже представлен пример запуска ВМ из образа на компьютере с ОС MacOS
и инструментом qemu:
qemu-system-x86_64 -name my-test-vm \
-machine accel=hvf,type=q35 -cpu host -m 4G -nographic \
-device virtio-net-pci,netdev=net0 \
-netdev user,id=net0,hostfwd=tcp::2222-:22 \
-drive if=virtio,format=qcow2,file=my-vm.qcow2
После запуска ВМ к ней можно будет подключиться как через консоль, так и по протоколу SSH - ssh -p 2222 admin-user@localhost
.
В случае возникновения нестандартных ситуаций может потребоваться доступ к Export Helper ВМ
по протоколу SSH. По умолчанию доступ к ВМ по протоколу SSH отключен.
Для организации доступа к ВМ по протоколу SSH, перед запуском иструмента необходимо:
- Раскомментировать часть
users:
в файле шаблона создания ВМ - vm-init.tpl (строки 7-12). - Задать имя пользователя и SSH-ключ для доступа через переменные окружения, как показано в примере ниже.
# Задать переменные окружения для доступа к Export Helper VM по SSH
export USER_NAME=admin
export USER_SSH_KEY=$(cat ~/.ssh/id_ed25519.pub)
# Запустить инструмент
./yc-disk-export.sh disk b1g22jx2133dpa3yvxc3 my-vm ./disk-export.cfg
# Подключиться к Export Helper VM
ssh admin@<helper-vm-public-ip>