Google Compute Engine: использовать моментальный снимок из другого проекта?

У меня есть два проекта в моей консоли разработчика. Я сделал "Снимок" одной из виртуальных машин в проекте-1. Я хочу создать новую виртуальную машину в проекте-2 с помощью моментального снимка, созданного в проекте-1. В настоящий момент моментальный снимок не отображается в опции. Как импортировать снимок из одного проекта в другой?

Ответы

Ответ 1

Вы можете создать образ из привязки в Project 1, а затем создать экземпляр из этого изображения с помощью Project 2.

Я предполагаю, что у вас есть права редактирования в обоих проектах.

В вашем вопросе говорится, что у вас есть моментальный снимок и вы хотите сделать экземпляр в проекте 2 из оснастки в проекте 1.

Если у вас все еще есть доступный диск, который вы сделали снимок, убедитесь, что он больше не привязан к экземпляру. Если он еще привязан к экземпляру, снимите флажок "удалить загрузочный диск при удалении экземпляра" и удалите экземпляр. Перейдите в "Изображения" и нажмите "Создать образ с диска" и создайте изображение с этого диска.

Если у вас нет свободного места на диске, а всего лишь снимок, создайте экземпляр и установите загрузочный диск в качестве моментального снимка и выберите снимок. Затем следуйте инструкциям выше, чтобы создать изображение, удалив экземпляр первым.

Теперь у вас есть изображение в проекте 1. Вы должны увидеть его в списке под изображениями.

Я не уверен, почему, но вы не увидите изображение, указанное в консоли в проекте 2, однако вы можете использовать gcloud для создания экземпляра в проекте 2 с использованием изображения из проекта 1. В проекте 1 нажмите на изображении и нажмите "просмотреть REST", будет полный URL-адрес изображения, похожее на это:

https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image

Используйте gcloud для создания экземпляра в проекте 2 с использованием изображения в проекте 1:

gcloud config set project <project-id-of-project-2>
gcloud config list

(Вы должны убедиться, что находитесь в проекте 2)

gcloud compute instances create <name of instance> --image https://www.googleapis.com/compute/v1/projects/cpomeroy-whitelist/global/images/ruby-image

Очевидно, что ваш URL будет другим.

Я просто тестировал это, и он работает. Дайте мне знать, если вам нужна дополнительная помощь.

Ответ 2

Ответ @chrispomeroy сработал для меня, но я смог немного упростить его, поскольку мне нужно делать это все больше и больше.

Допустим, у вас есть изображение в проекте-1, и вам нужно создать экземпляр с использованием этого изображения в проекте-2.

gcloud config set project "project-2"
gcloud compute instances create <name-of-new-instance> \
    --image <name-of-your-image-from-project-1> \
    --image-project "project-1"

Это избавляет от необходимости беспокоиться об использовании URL для чего-либо.

РЕДАКТИРОВАТЬ: мой ответ в значительной степени выглядит как его на данный момент, но документы для этого материала здесь:

Gcloud Compute экземпляры создают

Ответ 3

Вам не нужно изображение или виртуальная машина с нуля, и вам не нужно прерывать исходную VM. Просто создайте моментальный снимок в исходном проекте:

$ gcloud compute --project p1 disks snapshot the-snapshot src-disk --snapshot-names=the-snapshot
Created [https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot].

Затем создайте диск в целевом проекте с --source-snapshot, указав на URL "Созданный", который был возвращен выше:

$ gcloud compute --project p2 disks create the-disk \
    --source-snapshot https://www.googleapis.com/compute/v1/projects/p1/global/snapshots/the-snapshot

Это использование не было показано в gcloud docs, я нашел его в ответе @krishna praveen, но его объяснение неверно; вам не нужно удалять какие-либо экземпляры или использовать изображения. И это работает, даже если оба источника и назначения являются загрузочными дисками:

$ gcloud compute --project p2 instances create the-vm --disk name=the-disk,boot=yes

Если по какой-то причине вам требуется изображение, вы можете восстановить моментальный снимок на диск и использовать его для создания изображения без виртуальной машины с нуля. Это предпочтительнее, если виртуальная машина с нуля автоматически запускает службы при загрузке, что может помешать работе других запущенных виртуальных машин в одной и той же сети проекта.

$ gcloud compute images create image-1 --source-disk=src-disk-image --source-disk-zone=zone1

Теперь это изображение можно использовать из другого проекта (как показано @jiminikiz выше).

$ gcloud compute --project p2 instances create <name-of-new-instance> --image image-1 \
    --image-project p1 --zone=zone

Ответ 4

Решение, предоставляемое "chrispomeroy", прекрасно работает, но сначала требуется запустить gcloud с вашей личной учетной записью пользователя google (вместо учетной записи службы проекта 2) (поскольку это тот, у кого есть разрешение на доступ к обоим проектам):

gcloud init (и выбрал [2] Вход с новыми учетными данными)

Тогда вы действительно можете создать виртуальную машину на проекте 2 (из базового изображения в проекте 1) с помощью:

Вычислительные экземпляры gcloud создают testimg --image -image-project (нет необходимости в URL-адресе) Я тестировал сегодня (ноябрь 2015 г.) и отлично работает

Ответ 5

Это решение для клика только через браузер. Что вам нужно? Вам нужно иметь изображение. Чтобы создать образ с диска, диск должен быть отсоединен от любого экземпляра.

Какие шаги, если у вас есть только экземпляр в Project1:

  • Создать снимок из экземпляра в Project1.

  • Создайте экземпляр из этого снимка в Project1. Снимите флажок "Удалить загрузочный диск при удалении экземпляра". Этот экземпляр он использовал только для
    сейчас и буду удален

  • Удалить экземпляр, который вы только что создали

  • Зайдите в меню "Диски" и вы увидите там диск с экземпляром.

  • Зайдите в меню "Изображения" → "Создать изображение". Здесь вы можете создать изображение. Если у вас нет отсоединенного диска, в раскрывающемся списке не будет диска.

  • Перейдите в Project 2 и создайте экземпляр, используя пользовательское изображение, созданное для Project 1. Как? Загрузочный диск → изменить → Пользовательский images-> Выбрать проект 1-> Здесь вы можете увидеть собственное изображение

Ответ 6

AFAIK, это невозможно. Чтобы выполнить то, что вы описали, лучший способ действий - использовать этот учебник. У вас есть несколько шагов для создания пустого диска, прикрепления его к рассматриваемой машине, архивирования загрузочного раздела и загрузки его в облачное хранилище. Как только это будет сделано, загрузите его локально, переключите проекты и загрузите их в другой проект. Затем вы сможете просто выбрать аппарат из списка изображений, нажав New Instance

Ответ 7

Экземпляры могут быть созданы во всем проекте с использованием изображений. Теперь, если у вас есть изображение в Project 1, вы также можете выбрать его в Project 2.

Но на сегодняшний день вы не видите диски по всему проекту. Если вам нужно перенести виртуальную машину с соответствующими дополнительными дисками из проекта 1 в проект 2, выполните следующие действия.

  • Используйте моментальный снимок и создайте диск в Project 2, соединив командный интерфейс gcloud. Подключитесь к проекту 2, а затем выполните:

    gcloud compute --project "GCPProject2" disks create "myserver-disk1" --size "50" --zone "us-east1-b" --source-snapshot https://www.googleapis.com/compute/v1/projects/GCPProject1/global/snapshots/snapshot-myserver-disk1 --description "DriveName" --type "pd-standard"
    
  • Выше будет создан диск в Project2. Затем вам нужно удалить экземпляр в Project1, сохранив загрузочный диск. Затем создайте образ с диска myserver-bootdisk. Как только изображение будет создано, перейдите к Project 2, а затем создайте сервер из изображения, используйте раскрывающийся список и выберите изображение из Project 1.

  • Добавьте дополнительный диск, который вы создали из моментального снимка, и создайте виртуальную машину.