Копирование файла из хранилища данных Vcentre на ВМ

Я использую солевой стек и модуль pyvmomi для связи с vcenter и создания виртуальной машины. На этой только что созданной виртуальной машине я хочу скопировать файлы (около 1 ГБ) из vcenter Datastore. InitiateFileTransferToGuest можно использовать для загрузки файла на виртуальную машину, но как мы можем скопировать файлы из хранилища данных в vm?

2 ответа

Как насчет запуска rsync

  • ESXi Host: включить SSH
  • Некоторое понимание ключей SSH

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

Настройте публичные SSH-ключи для vCentre. ssh-keygen находится в /usr/lib/vmware/openssh/binssh-keygen генерирует 2 файла в ~/.ssh: id_rsa а также id_rsa.pub

ssh-keygen -f ~/.ssh/id_rsa -q -P ""

На удаленном хосте сохраните открытый ключ. Если вы используете ESXi 5 или ниже, поместите id_rsa.pub в ~/.ssh/authorized_keys, Если вы используете ESXi 5.5 или выше, открытые ключи находятся где-то еще, поэтому id_rsa.pub в /etc/ssh/keys-<username>/authorized_keys

В качестве заметки вы можете хранить более одного ключа в этом файле.

Чтобы разрешить root-доступ, измените PermitRootLogin no в PermitRootLogin yes в /etc/ssh/sshd_config файл. Чтобы отключить пароль, убедитесь, что ChallengeResponseAuthentication а также PasswordAuthentication установлены в no,

Перезапустите службу SSH ESXi - /etc/init.d/SSH restartESX - service sshd reload

Теперь, когда мы отсортировали аутентификацию, мы можем теперь копировать файлы по зашифрованному каналу к месту назначения. Понимание того, как работают ключи ssh, значительно упростит задачи удаленного выполнения и упростит развертывание и управление.

Rsync Основной синтаксис rsync выглядит следующим образом:

Rsync over SSH

Некоторые варианты - VM как локальный

Скопируйте файл с удаленного сервера (ESXi) на локальный сервер (ВМ) с SSH

rsync -avzhe ssh root@[vcentreIP]:/source_dir_to_copy/ /dest_dir_location/

Скопируйте файл с локального сервера (ВМ) на удаленный сервер (ESXi) с SSH

rsync -avzhe ssh /source_dest_to_copy/ root@[vcentreIP]:/dest_dir_location/

Некоторые параметры - ESXi как локальный - ESXi не установил rsync по умолчанию.

Скопируйте файл с удаленного сервера (VM) на локальный сервер (ESXi) с SSH

rsync -avzhe ssh root@[VMIP]:/source_dir_to_copy/ /dest_dir_location/

Скопируйте файл с локального сервера (ESXi) на удаленный сервер (ВМ) с SSH

rsync -avzhe ssh /source_dest_to_copy/ root@[VMIP]:/dest_dir_location/

Другой способ, вероятно, вариант для вас.

Используя ту же логику и метод выше. Вы можете сгенерировать набор ключей между двумя компьютерами и использовать агент для запуска команды rsync.

Скопируйте файл с виртуальной машины в ESXi с SSH

rsync -avzhe ssh root@[VMIP]:/source_dir_to_copy/ root@[vCentreIP]:/dest_dir_location/

Скопируйте файл из ESXi в виртуальную машину с SSH

rsync -avzhe ssh root@[vcentreIP]:/source_dir_to_copy/ root@[VMIP]:/dest_dir_location/

Самый хакерский способ, о котором я могу думать, это:

  1. Сохраните файл объемом 1 ГБ как.iso {либо используйте MagicIso, либо встроенные инструменты linux}.
  2. Теперь поместите файл в хранилище данных.
  3. Теперь при создании vm вам нужно установить cdrom так, чтобы он указывал на файл-данные, а не на пустую строку.
  4. Вы можете отредактировать файл vmx или предоставить параметры vmx при создании самого себя
  ide1:0.deviceType = "cdrom-image"
    ide1:0.fileName = "/vmfs/volumes/5034a864-xxxxxx/data.iso"
    ide1:0.present = "TRUE"
  1. После включения гостя, в зависимости от гостя, вы можете добавить пакет / оболочку для копирования на его диск.
  2. При необходимости вы можете использовать командлет Invoke-VMScript powercli для выполнения операции 5 за вас.

Ура, zXi

Другие вопросы по тегам