VMWare ESXi и USB-накопитель

esxi

Писать тут особо нечего. Установка гипервизора на флешку — разумное и дешевое решение. Дешевое во всех смыслах — экономия места и экономия денег. Только надо иметь всегда флешку про запас, вдруг с этой что-то случится. Впрочем, как и жесткие диски надо иметь в резерве всегда, когда речь идет о продакшене… Вот товарищь пишет как в случае переустановки гипервизора (или запуска с другой флешки) можно импортнуть все машины из datastore. Приведу его решение здесь ,на всякий случай:

Собстевнно массовый импорт машин для ESX хоста описан тут: Mass Import VMs to New ESX Host by .VMX files, там приведено два способа.

Первый способ — сделать скрипт.

for i in `find /vmfs/volumes/ -name "*.vmx" `
do
echo "Registering VM $i"
vmware-cmd -s register $i
done

Скрипт нужно сохранить, например, как massImport.sh, дать ему права на выполнение (chmod +x /path-to-script/massImport.sh) и выполнить. У этого решения свой недостаток — если в пути/имени виртуалки содержатся пробелы, то ничего не получится. Эта проблема решается во втором варианте.

Второй — одной строкой из консоли ESX:

find /vmfs/volumes -name “*.vmx” | while read LINE; do echo “registering VM $LINE”; vmware-cmd -s register $LINE

Но это решения дл ESX, а в моем случае был ESXi. Для ESXi комманды vmware-cmd нету, а на ESX я эти варианты не проверял… Немного погуглив я нашел список команд для работы через SSH/CLI с ESXi. Разрешив из локальной консоли доступ к  ESXi по  ssh, я нашел и протестировал работу аналога нужной команды.

vim-cmd solo/registervm /vmfs/vol/datastore/dir/vm.vmx
Registers vm in hypervisor inventory

т.к. у меня была куча виртуалкок в имени (и пути к VMX файлу) которых содержались пробелы, я решил «поправить» второй способ для работы в ESXi. Эта команда импортирует все виртуальные машины с выбранного датастора «Temp-IT-Drive(1TB)» в «корень» оснастки хоста. Вот что вышло:

find /vmfs/volumes/Temp-IT-Drive\(1TB\)/ -name "*.vmx"| while read LINE; do echo "registering VM $LINE"; vim-cmd solo/registervm "$LINE";done

Пришлось добавить к исходному варианту «;done» в конце и заключить $LINE в ковычки выполнении команды импорта, иначе виртуалки «с пробелами»  все же не обрабатывались.

Вот так! Сам я еще сам скрипт не пробовал, но для одиночной регистрации команда работает — ради эксперимента на тестовом сервере проворачивал эту операцию.