Копирование файла из хранилища данных Vcentre на ВМ
Я использую солевой стек и модуль pyvmomi для связи с vcenter и создания виртуальной машины. На этой только что созданной виртуальной машине я хочу скопировать файлы (около 1 ГБ) из vcenter Datastore. InitiateFileTransferToGuest можно использовать для загрузки файла на виртуальную машину, но как мы можем скопировать файлы из хранилища данных в vm?
2 ответа
Как насчет запуска rsync
- ESXi Host: включить SSH
- Некоторое понимание ключей SSH
Если это однократная передача файла, вы можете пропустить первый шаг.
Настройте публичные SSH-ключи для vCentre.
ssh-keygen находится в /usr/lib/vmware/openssh/bin
ssh-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 restart
ESX - 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 ГБ как.iso {либо используйте MagicIso, либо встроенные инструменты linux}.
- Теперь поместите файл в хранилище данных.
- Теперь при создании vm вам нужно установить cdrom так, чтобы он указывал на файл-данные, а не на пустую строку.
- Вы можете отредактировать файл vmx или предоставить параметры vmx при создании самого себя
ide1:0.deviceType = "cdrom-image" ide1:0.fileName = "/vmfs/volumes/5034a864-xxxxxx/data.iso" ide1:0.present = "TRUE"
- После включения гостя, в зависимости от гостя, вы можете добавить пакет / оболочку для копирования на его диск.
- При необходимости вы можете использовать командлет Invoke-VMScript powercli для выполнения операции 5 за вас.
Ура, zXi