Создание образа Centos
Настройка образа CentOS¶
- Для создания образа переходим на зеркало дистрибутивов https://mirror.yandex.ru/centos/centos/7/isos/x86_64/
- Качаем необходимый дистрибутив - в данном случае это последняя версия Centos 7 которая находится в свободном доступе (https://mirror.yandex.ru/centos/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso)
- Заходим в консоль администрирования zVirt
-
Переходим в пункт Хранилище -> Диски
-
Добавляем только что скаченный iso-образ в хранилище дисков, выбираем пункт Загрузить -> Начать
-
Выбираем образ, нажимаем Загрузить
Ожидаем окончание загрузки
-
Переходим в пункт Ресурсы -> Виртуальные машины для создания ВМ для Cloud-init
-
Создаем ВМ с необходимыми параметрами
Диск 10Gb
Выбираем доступную сеть
Переходим в Параметры загрузки и выставляем параметры:
- Операционная система: CentOS 7
- Первое устройство: CD-ROM
- Подключать CD: выбираем только что загруженный образ (в данном случае Centos 7)
Остальные настройки оставляем по умолчанию. Нажмимаем ОК, для сохранения конфигурации.
-
Выбираем в списке виртуальных машин созданную ВМ
Запускаем ее
-
Открываем консоль ВМ, скачивая файл настройки консоли
Должен быть установлен клиент, который поддерживает протокол VNC/SPICE.
К примеру, бесплатный Virtual Machine Viewer
-
Продолжаем установку в консоли: выбираем пункт Install CentOS 7
После окончания установки меняем порядок загрузки. Указываем загружаться с локального диска
-
Заходим в shell ОС и производим модификации ВМ для подготовки его к Cloud-init
Устанавливаем open-vm-toolsyum install open-vm-tools
В файле
/etc/default/grub
добавляем к параметруGRUB_CMDLINE_LINUX
дополнительные ключи для наименования сетевых интерфейсов в формате ethX"net.ifnames=0 biosdevname=0
Сделать это можно одной командой
sed -i 's/GRUB_CMDLINE_LINUX=\"/GRUB_CMDLINE_LINUX=\"net.ifnames=0 biosdevname=0 /g' /etc/default/grub
Применяем эти изменения
grub2-mkconfig --output /boot/grub2/grub.cfg
-
Устанавливаем службы Cloud-init
yum install cloud-init cloud-utils-growpart -y
Включаем автостарт службsystemctl enable cloud-init-local.service cloud-init.service cloud-config.service cloud-final.service
Оставляем возможность входить root по паролюsed -i "s/disable_root: true/disable_root: false\nssh_pwauth: 1/g" /etc/cloud/cloud.cfg
Чтобы отключить запуск cloud-init при последующих перезагрузках
cat <<EOF>> /etc/cloud/cloud.cfg runcmd: - touch /etc/cloud/cloud-init.disabled EOF
Указываем какие источники для cloud-init использовать. Для zvirt можно оставить
[ConfigDrive, NoCloud, None]
cat <<'EOF'>> /etc/cloud/cloud.cfg.d/99_overrides.cfg datasource_list: [ ConfigDrive, OpenNebula, DigitalOcean, Azure, AltCloud, OVF, MAAS, GCE, OpenStack, CloudSigma, SmartOS, Bigstep, Scaleway, AliYun, Ec2, CloudStack, Hetzner, IBMCloud, Oracle, Exoscale, RbxCloud, UpCloud, VMware, Vultr, LXD, NWCS, NoCloud, None ] EOF
Пример увеличения диска при развертывании на диск большего размера
cat <<'EOF'>> /etc/cloud/cloud.cfg.d/99-growpart.cfg growpart: mode: auto devices: [/dev/sda2] ignore_growroot_disabled: false ## Use Runcmd to expand LVM runcmd: - [growpart, /dev/sda,2] - [pvresize, /dev/sda2] - [lvextend, -l, +100%FREE, -r, /dev/mapper/vg01-root_lv] EOF
Очистка артефактов, подготовка системы к cloud-init и выключение
dnf clean all cloud-init clean -l -s : > /etc/machine-id systemctl poweroff
-
Преобразуем данную ВМ в шаблон для дальнейшего использования
-
При необходимости использовать шаблон в других системах виртуализации можно экспортировать его в универсальный формат OVA
Настройка Нимбиус¶
Переходим в консоль Нимбиус и создаем Custom Cloud-init Template для template redos
-
Выбираем пункт Compute -> Infrastructure -> PXE
-
В System Image Type создаем раздел
Centos
и тип VM and Instance, если еще не создан -
Затем переходим в раздел Customization Templates и создаем шаблон для Cloud-init
Примечание
Желательно для одной платформы использовать один начальный префикс, в данном случае
centos-*
-
В раздел Scripts добавляем шаблон для Cloud-init
#cloud-config
host_name: <%= evm[:vm_name] %>
password: <%= MiqPassword.decrypt(evm[:root_password]) %>
disable_root: 0
ssh_deletekeys: false
ssh_pwauth: true
chpasswd:
expire: false
user: root
timezone: Europe/Moscow
write_files:
- path: /etc/sysconfig/network-scripts/ifcfg-eth0
permissions: '0644'
content: |
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
IPADDR=<%= evm[:ip_addr] %>
PREFIX=<%= evm[:subnet_mask] %>
IPV6_PRIVACY=no
GATEWAY=<""%= evm[:gateway] %>
DNS1=<%= evm[:dns_servers] %>
DOMAIN= <%= evm[:dns_suffixes] %>
runcmd:
- echo i was created by Nimbios! >> /etc/motd
- hostnamectl set-hostname <%= evm[:vm_target_name] %>