- Как создать шаблон виртуальной машины KVM
- Шаг 1: Установка KVM в Linux
- Шаг 2: создайте виртуальный образ KVM
- Шаг 3: Создание образа шаблона виртуальной машины KVM
- How to Create a KVM Virtual Machine Template
- Step 1: Installing KVM in Linux
- Step 2: Create a KVM Virtual Image
- Step 3: Creating KVM Virtual Machine Template Image
- Создание шаблона VMware vSphere для Ubuntu Server 18.04
- Предварительные требования
- Создание шаблона виртуальной машины Ubuntu 18.04
- Развертывание и установка Ubuntu
- После установки
- Преобразуйте шаблон
- Как создать cloud-init шаблон ОС Astra Linux в Proxmox
- План работы
- Качаем cloud образ Astra Linux 1.7
- Создаем VM в Proxmox используя скачанный образ
- Конвертируем собранную VM в шаблон (template)
- Клонируем из шаблона полноценную VM
- Инициализируем VM через cloud-init
- Расширяем диск
- Настраиваем cloud-init
- Запускаем и проверяем VM
Как создать шаблон виртуальной машины KVM
Из этой инструкции вы узнаете как создать шаблон виртуальной машины KVM. Шаблон виртуальной машины — это, копия установленной виртуальной машины. Которая пригодится, если вы хотите быстро развернуть несколько экземпляров виртуальных машин. Создание шаблона — это 3-х шаговый процесс, который включает в себя:
Давайте посмотрим, как это можно сделать.
Шаг 1: Установка KVM в Linux
Первое что мы сделаем это установим KVM в вашей системе.
Далее надо убедиться что libvirtd запущен и включен. А так же добавлен в автозагрузку системы.
$ sudo systemctl включить libvirtd
$ sudo systemctl start libvirtd
Проверьте работоспособность libvirtd.
$ sudo systemctl status libvirtd
Если вы используете систему Ubuntu или Debian, убедитесь, что образ vhost-net загружен.
Шаг 2: создайте виртуальный образ KVM
Прежде чем мы приступим к созданию шаблона, нам нужен установочный экземпляр. В командной строке с помощью команды qemu-img, мы создадим образ 20G CentOS 8 KVM , как показано на рисунке.
$ sudo qemu-img create-o preallocation=metadata-f qcow2 /var/lib/libvirt/images/centos8.qcow2 20G
Для создания виртуальной машины CentOS 8 требуется использовать команду virt-install. Делайте так как показано на рисунке.
$ sudo virt-install —virt-type kvm —name centos8 —ram 2096
—disk /var/lib/libvirt/images/centos8. qcow2, format=qcow2
—network network=default
—graphics vnc,listen=0.0.0.0 —noautoconsole
—os-type=linux —os-variant=rhel7.0
—location=/home/tecmint/Downloads/CentOS-8-x86_64-1905-dvd1.iso
От этого запускается экземпляр виртуальной машины. Вы можете проверить это перейдя в Virtual manager. Если вы откроете окно как показано на рисунке. То вы увидите страницу приветствия для установщика. Вам требуется завершить установку до самого конца.
Шаг 3: Создание образа шаблона виртуальной машины KVM
После завершения установки войдите в виртуальную машину и обновите все системные пакеты.
Установите необходимые пакеты, которые необходимы для работы. В этом случае я установлю EPEL release, wget, curl, net-tools и vim. Конечно список программ для ваших нужд может отличаться.
$ sudo dnf install epel-release wget curl net-tools vim
Если вы собираетесь развернуть шаблон на облачной платформе, тогда вам потребуется установить пакеты cloud-init.
$ sudo dnf install cloud-init cloud-utils-growpart acpid
Далее отключите маршрут zeroconf.
$ echo «NOZEROCONF=yes» >>> /etc/sysconfig/network
Как только вы закончите, обязательно выключите виртуальную машину и очистите образ шаблона виртуальной машины, как показано ниже.
Virt-sysprep — это утилита командной строки, которая сбрасывает виртуальную машину для создания из нее клонов. Она удаляет такие записи как:
- Ключи хоста SSH.
- Файлы журналов.
- Учетные записи пользователей и некоторые постоянные сетевые конфигурации.
Чтобы использовать эту команду, вы должны убедиться, что виртуальная машина выключена.
И последнее, введите команду, чтобы отменить определение домена виртуальной машины.
Образ шаблона теперь готов к клонированию и развертыванию.
How to Create a KVM Virtual Machine Template
A virtual machine template is essentially a copy of the installed virtual machine that comes in handy when you want to deploy multiple instances of virtual machines. Creating a template is a 3 step process that involves creating a virtual machine, installing all the requisites packages that you want to be installed, and finally cleaning up the template.
Let’s go ahead and see how you can accomplish this.
Step 1: Installing KVM in Linux
The first step is to install KVM on your system. We have comprehensive tutorials on:
Additionally, ensure that the libvirtd daemon is running and is enable to automatically kick on bootup.
$ sudo systemctl enable libvirtd $ sudo systemctl start libvirtd
Verify if the libvirtd daemon is running.
$ sudo systemctl status libvirtd
If you are running a Ubuntu / Debian system, ensure that the vhost-net image is loaded.
Step 2: Create a KVM Virtual Image
Before we get to creating a template, we need to, first of all, have an installation instance. On the command-line, we are going to create a 20G CentOS 8 KVM image using the qemu-img command as shown.
$ sudo qemu-img create -o preallocation=metadata -f qcow2 /var/lib/libvirt/images/centos8.qcow2 20G
Next, use the virt-install command to create a CentOS 8 virtual machine as shown.
$ sudo virt-install --virt-type kvm --name centos8 --ram 2096 \ --disk /var/lib/libvirt/images/centos8.qcow2,format=qcow2 \ --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole \ --os-type=linux --os-variant=rhel7.0 \ --location=/home/tecmint/Downloads/CentOS-8-x86_64-1905-dvd1.iso
This launches the virtual machine instance. You can confirm this by heading over to the virt-manager and opening the console window as shown. What you can see is the default welcome page for the installer. Be sure to complete the installation to the very end.
Step 3: Creating KVM Virtual Machine Template Image
Once the installation is complete, log into the VM and update all the system packages.
Install the prerequisite packages that you feel are essential to get started with. In this case, I will install EPEL release, wget, curl, net-tools, and vim. This may be different for your case.
$ sudo dnf install epel-release wget curl net-tools vim
If you intend to deploy your template on a cloud platform, install the cloud-init packages as shown.
$ sudo dnf install cloud-init cloud-utils-growpart acpid
Next, disable the zeroconf route.
$ echo "NOZEROCONF=yes" >> /etc/sysconfig/network
Once you are done, be sure to power off your virtual machine and clean up the VM template image as shown.
$ sudo virt-sysprep -d centos8
The virt-sysprep is a command-line utility that resets a virtual machine in order for clones to be made from it. It removes entries such as SSH host keys, log files, user accounts, and some persistent network configurations. To use the command, first, you must always make sure that the VM is powered off.
$ sudo virt-sysprep -d centos8
Lastly, invoke the command shown to undefine the VM domain.
$ sudo virsh undefine centos8
The template image is now ready for cloning and deployment.
Создание шаблона VMware vSphere для Ubuntu Server 18.04
В этой статье приводятся рекомендации по созданию шаблона виртуальной машины VMware vSphere Ubuntu Server 18.04.
Предварительные требования
Предполагается, что вы уже немного знакомы с VMware vSphere. В этом руководстве не рассматриваются рекомендации по VMware или Ubuntu.
- Скачайте актуальный ISO-файл Ubuntu Server 18.04
- VMware vSphere 6.5 и более поздней версии
- Его можно использовать локально, но для ускорения развертывания отправьте файл в хранилище данных vSphere или в библиотеку содержимого vCenter.
Создание шаблона виртуальной машины Ubuntu 18.04
Развертывание и установка Ubuntu
- Разверните новую виртуальную машину
- Убедитесь, что в качестве гостевой ОС выбрано Ubuntu Linux (64-бит).
- Укажите расположение ISO-файла Ubuntu server.
- Включите виртуальную машину и запустите установку Ubuntu. Конкретных инструкций нет, но:
- Рекомендуем использовать статический IP-адрес
- Установите сервер OpenSSH
После установки
Перед преобразованием виртуальной машины в шаблон необходимо выполнить несколько действий.
sudo apt-get update sudo apt-get upgrade -y
sudo sed -i 's/preserve_hostname: false/preserve_hostname: true/g' /etc/cloud/cloud.cfg sudo truncate -s0 /etc/hostname sudo hostnamectl set-hostname localhost
sudo rm /etc/netplan/50-cloud-init.yaml
cat /dev/null > ~/.bash_history && history -c sudo shutdown now
Преобразуйте шаблон
Сократите количество ЦП виртуальной машины и ресурсы памяти до минимального значения и преобразуйте виртуальную машину в шаблон. Переключите дисковод оптических дисков на клиентское устройство, а также отключите его и преобразуйте виртуальную машину в шаблон.
Как создать cloud-init шаблон ОС Astra Linux в Proxmox
Вы когда-нибудь задумывались над тем, как вы создаете виртуальные машины?
Классический и самый банальный способ создания виртуальной машины (VM):
- Создать VM в гипервизоре
- Сконфигурировать параметры VM
- Примонтировать ISO-образ ОС, которую нужно установить на VM
- Запустить VM и установить ОС с ISO-образа
- Для упрощения будущей жизни, можно создать из данной VM шаблон (template)
Как правило, это долгий и скучный процесс, богатый ручной работой. Конечно, можно использовать Packer, но время установки это сократит лишь чуть-чуть.
При таком подходе, создание кластера из нескольких одинаковых VM может затянуться на долгое время, только из-за установки хостовой ОС.
Сейчас нас окружает мир облачных технологий, когда вы покупаете VM у одного из клауд-провайдеров, где все происходит быстро:
- Ввели имя пользователя, которого необходимо создать при инициализации VM
- Пароль или публичный ключ от создаваемого пользователя
- Нажали на кнопку «Создать»
- Вуаля! VM готова к работе! Без какой-либо установки и ручной конфигурации пользователя!
Вот для этого и были придуманы cloud-init образы. Сloud-init это программа для инициализации виртуальных машин, обычно применяющаяся в облачных платформах. Но использовать cloud-init можно и локально, например в Proxmox, который успешно поддерживает данную технологию.
Все что нам надо — cloud-init образ нужной ОС. Данная статья применима для любого cloud-init образа. Я покажу, как это делать на примере Astra Linux 1.7
План работы
- Качаем cloud образ Astra Linux 1.7 (можно создать самому, с использованием cloud-init, но это тема другой статьи)
- Создаем VM в Proxmox используя скачанный образ
- Конвертируем собранную VM в шаблон (template)
- Клонируем из шаблона полноценную VM
- Инициализируем VM через cloud-init
Качаем cloud образ Astra Linux 1.7
Интересующие нас образы я брал отсюда.
Заходим по ssh на наш Proxmox и качаем нужный нам образ, в моем случае — alse-vanilla-1.7.3-cloud-max-mg8.2.1.qcow2
wget alse-vanilla-1.7.3-cloud-max-mg8.2.1.qcow2
Создаем VM в Proxmox используя скачанный образ
qm create 700 --name "alse-vanilla-1-7-3-cloudinit-max-template" --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0 qm importdisk 700 alse-vanilla-1.7.3-cloud-max-mg8.2.1.qcow2 local-lvm qm set 700 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-700-disk-0 qm set 700 --boot c --bootdisk scsi0 qm set 700 --ide2 local-lvm:cloudinit qm set 700 --serial0 socket --vga serial0 qm set 700 --agent enabled=1
Знакомых с синтаксисом управления Proxmox данные строчки удивить не должны.
Для начинающих поясню. В примере создается виртуальная машина с VMID=700 (можно указать любой, это просто идентификатор вашей VM), 2Gb RAM, 2 ядрами CPU, соответствующим сетевым интерфейсом.
Затем мы импортируем скачанный нами cloud образ Астры в локальное хранилище Proxmox и подключаем как диск к созданной VM. После этого подключаем cloud-init хранилище, для последующей инициализации.
Вы можете использовать любые нужные вам настройки или настраивать все в GUI. Все что надо — подключить диск со скачанным образом и cloud-init хранилище.
Конвертируем собранную VM в шаблон (template)
После всех подготовительных мероприятий создаем шаблон нашей ОС.
Клонируем из шаблона полноценную VM
Шаблоны нужны нам для клонирования VM, поэтому нажимаем ПКМ на созданном темплейте и выставляем мод «Full Clone».
Назвал я свою VM astra-test , вы можете как угодно обозвать.
Нажимаем «Clone» и дожидаемся окончания клонирования.
Инициализируем VM через cloud-init
После завершения клонирования VM, можно поправить настройки «железа» и увеличить размер диска.
Расширяем диск
Для этого в разделе Hardware нажимаем на Hard Disk -> Disk Action -> Resize.
Указываем нужный вам размер диска и нажимаем «Resize disk». Самое главное, что система сама займет и разметит нужное пространство при загрузке.
Теперь самое главное — переходим в раздел Cloud-init
Настраиваем cloud-init
В соответствующих полях задаем нужные нам параметры, которые мы хотим создать в системе во время запуска:
- логин пользователя
- пароль пользователя
- настройки DNS
- открытый SSH ключ пользователя
- настройка сети (можно оставить DHCP, но я укажу IP-вручную)
Далее жмем «Regenerate Image».
Подготовительные мероприятия завершены, можно запускать VM для проверки!
Запускаем и проверяем VM
После запуска VM astra-test в статистике мы видим 2 IP-адреса: один получен от моего DHCP-сервера, второй мы задали сами.
Такое бывает, можно отключить DHCP уже в самой ОС.
Пробуем подключиться по SSH к нашей VM, используя адрес и креды, которые мы указывали при настройке cloud-init в Proxmox
Готово, даже hostname настроился сам, по имени виртуальной машины в Proxmox. И да, если переименовать VM, hostname изменится за вас сам.
Теперь можно натравливать свой Terraform с Ansible на данный шаблон и создавать кластеры из большого количества виртуальных машин за считанные минуты!
Надеюсь, что данная статья будет кому-то полезна, для упрощения и экономии времени на создание стендов, кластеров и т.д.