Быстрое создание копий виртуальных машин (KVM)

В своей работе и для экспериментов я часто использую KVM (Kernel-based Virtual Machine) - программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86.

Для одного проекта мне потребовалось создать 20 копий виртуальной машины, при этом необходимо было внести изменения в файлы конфигураций (в моем случае натройки сети).

Клонирование и параметризация

Базовая виртуальная машина полностью настроена (CentOS 7), создадим 20 копий. Для этого воспользуемся командой virt-clone в цикле

for i in {1..20}; do virt-clone --original co7 --name co7-c$i --auto-clone; done

Для задания параметров виртуальных машин используем утилиту virt-sysprep из библиотеки libguestfs (набор инструментов для работы с образами виртуальных машин). Для внесения изменений команду необходимо выполнять в привелигированном режиме.

for i in {1..20}; do
sudo virt-sysprep -d co7-c$i --enable customize,backup-files,bash-history,dhcp-client-state,logfiles,machine-id,net-hostname,net-hwaddr,ssh-hostkeys,tmp-files,udev-persistent-net,user-account --hostname co7-c$i --run-command "sed -i \"s/192.168.1.1/192.168.3.$i/\" /etc/sysconfig/network-scripts/ifcfg-ens3";
done

Для моих целей я задействую тольлько часть доступных операций:

  • удаление файлов логов, резервных копий, пользователей;
  • отчистка истории командной стоки;
  • сброс и парметризация hostname;
  • удаление "лишних" опций в файлах настройки сети;
  • выполнение команды sed для замены ip адреса виртуальной машины.

Подробнее о производимых утилитой virt-sysprep операциях читайте в документации.

Использование

С целью быстрого управления созданными "клонами", я использую команды в циклах.

Для запуска

for i in {1..20}; do virsh start co7-c$i; done

Для остановки

for i in {1..20}; do virsh destroy co7-c$i; done

Для удаления

for i in {1..20}; do virsh undefine --domain co7-c$i --remove-all-storage; done

Опубликовано: