
НаАмазон EC2илидругой облако/IaaS услуги, я могу легко создать новую машину без особой установки. По сути, я просто выбираю RAM/HDD/CPU и предоставляю открытый ключ SSH и получаю совершенно новую машину за считанные секунды.
Как я могу повторить это локально, с помощью VirtualBox (или любого другого программного обеспечения для виртуализации)? Если возможно, я бы предпочел решение, требующее минимальной модификации самой системы.
решение1
Вы можете использоватьготовые виртуальные машинычтобы получить тот же эффект. Создайте, настройте и сохраните как базовый шаблон. Так же, как вы использовали бы пустой офисный документ с вашими предпочтительными настройками (шрифты, параметры страницы и т. д.), вы можете создать виртуальную машину (в любой технологии виртуализации), которую вы можете легко скопировать и настроить, когда вам понадобится новый экземпляр. За эти годы у меня накопилась библиотека базовых ОС для различных версий и разновидностей Linux, Windows и Macintosh.
решение2
Вы можете просто создатьОВФприложение с VirtualBox, а затем импортируйте это несколько раз:
- Создайте виртуальную машину со всеми вашими предпочтениями — установите понравившееся вам программное обеспечение (например,htop) и настроить его по своему желанию (например,включить sudo без пароля, установленный
UseDNS No
для/etc/ssh/sshd_conf
ускорения входа в систему, и меньший тайм-аут в/boot/grub/grub.cfg
). - Установите SSH-сервер изагрузите свой SSH-ключ.
- В Linux выполните команду
sudo rm -rf /etc/udev/rules.d/
, чтобы удалить постоянные ассоциации сетевых имен (в противном случае вам придется перенастраивать сеть). - Выключите машину (возможно, вам придется удалить некоторые кэши перед этим, чтобы уменьшить размер машины).
- Экспортируйте виртуальную машину либо через графический интерфейс с помощью Файл -> Экспортировать устройство, либо с помощью
VBoxManage export VM_NAME -o ./myvm.ova
Теперь вы можете импортировать созданный ova-файл так часто, как захотите (с помощью Файл -> Импортировать приложение илиVBoxManage import
. Каждый раз, когда вы это делаете, VirtualBox будет генерировать новое имя виртуальной машины и позволит вам изменить основные параметры (ЦП, размер ОЗУ, подключенные диски и т. д.).
Однако вам придется вручную редактировать правило переадресации портов ssh. Вы можете легко сделать это с помощью следующего скрипта:
OVA=vm.ova # Change this to the name of your ova file
VM_NAME=$(VBoxManage import "$OVA" | sed -n 's#.*VM name "\(.*\)".*#\1#p')
sshport=$(python -c 'import random;print(random.randint(1025,65535))')
VBoxManage modifyvm $VM_NAME --natpf1 ssh,tcp,127.0.0.1,$sshport,,22
/bin/echo -e "\nHost vbox-$VM_NAME\n\tHostName localhost\n\tPort $sshport\n" \
>>~/.ssh/config
echo "Start the VM with VBoxManage startvm $VM_NAME"
echo "Then, type ssh vbox-$VM_NAME to log in to your VM"
Теперь вы можете подключиться к машине по ssh с помощью ssh vbox-$VM_NAME
. Если вы хотите развернуть машину, вам необходимо вручную изменитьизменить ключи SSH-сервера.
Вместо экспорта и импорта вы также можете простоклонсуществующая машина.