Yandex Cloud
August 31, 2022

Создать ВМ на основе диска из снапшота/образа

Часто возникает ситуация когда доступ к ВМ пропал по какой-то причине. Чтобы восстановить доступ к данным необходимо снять снапшот/образ с проблемной ВМ и создать на его основе новую ВМ.

Ранее мы уже сняли снапшот/образ с одной ВМ: https://teletype.in/@cameda/r254jtZG7OV

Восстановим теперь на их основе новую ВМ.

Подготовка!

SA у нас уже готов: https://teletype.in/@cameda/w93lPMPQWS4
Выберем зону доступности А: https://teletype.in/@cameda/S34zdiTcbUM
Сеть и подсети создали ранее: https://teletype.in/@cameda/ZbTkF70KWK9
SG будем использовать стандартную: https://teletype.in/@cameda/WIoqKmpMNLM

При восстановлении ВМ из снапшота/образа можно выбрать другую зону доступности, не обязательно ту же, где располагалась оригинальная ВМ. Установить другой ssh ключ, установить диск большего размера, выбрать другую платформу, выбрать другое количество CPU/RAM.

Создание ВМ на основе снапшота:

export SG=$(yc vpc sg get cam-default --format=json | jq -r '.id')
export SNAP_ID=$(yc compute snapshot get first-snapshot --format=json | jq -r ".id")
export FOLDER_ID=$(yc config get folder-id)
export ZONE_ID=ru-central1-a
export SUBNET_ID=$(yc vpc subnet get subnet-a --format json | jq -r '.id')
export SA=$(yc iam service-account get cam-instance-sa --format json | jq -r '.id')
yc compute instance create \
--folder-id $FOLDER_ID \
--name cam-snap \
--description "Machine fron snapshot" \
--hostname cam-snap \
--zone $ZONE_ID \
--platform standard-v3 \
--create-boot-disk snapshot-id=$SNAP_ID,size=60,type=network-ssd,block-size=8K \
--image-folder-id standard-images \
--memory 8 \
--cores 4 \
--core-fraction 100 \
--preemptible \
--network-settings type=standard \
--network-interface subnet-id=$SUBNET_ID,nat-ip-version=ipv4,security-group-ids=$SG \
--metadata serial-port-enable=1 \
--ssh-key ~/.ssh/id_rsa.pub \
--service-account-id $SA \
--async

Создание ВМ на основе образа:

export SG=$(yc vpc sg get cam-default --format=json | jq -r '.id')
export IMAGE_ID=$(yc compute image get first-image --format=json | jq -r ".id")
yc compute instance create \
--folder-id $FOLDER_ID \
--name cam-img \
--description "Machine fron image" \
--hostname cam-img \
--zone $ZONE_ID \
--platform standard-v3 \
--create-boot-disk image-id=$IMAGE_ID,size=60,type=network-ssd,block-size=8K \
--image-folder-id standard-images \
--memory 8 \
--cores 4 \
--core-fraction 100 \
--preemptible \
--network-settings type=standard \
--network-interface subnet-id=$SUBNET_ID,nat-ip-version=ipv4,security-group-ids=$SG \
--metadata serial-port-enable=1 \
--ssh-key ~/.ssh/id_rsa.pub \
--service-account-id $SA \
--async