Перейти к содержанию

Создание образа Centos

Настройка образа CentOS

  1. Для создания образа переходим на зеркало дистрибутивов https://mirror.yandex.ru/centos/centos/7/isos/x86_64/
  2. Качаем необходимый дистрибутив - в данном случае это последняя версия Centos 7 которая находится в свободном доступе (https://mirror.yandex.ru/centos/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso)
  3. Заходим в консоль администрирования zVirt
  4. Переходим в пункт Хранилище -> Диски

  5. Добавляем только что скаченный iso-образ в хранилище дисков, выбираем пункт Загрузить -> Начать

  6. Выбираем образ, нажимаем Загрузить

    Ожидаем окончание загрузки

  7. Переходим в пункт Ресурсы -> Виртуальные машины для создания ВМ для Cloud-init

  8. Создаем ВМ с необходимыми параметрами

    Диск 10Gb

    Выбираем доступную сеть

    Переходим в Параметры загрузки и выставляем параметры:

    • Операционная система: CentOS 7
    • Первое устройство: CD-ROM
    • Подключать CD: выбираем только что загруженный образ (в данном случае Centos 7)

    Остальные настройки оставляем по умолчанию. Нажмимаем ОК, для сохранения конфигурации.

  9. Выбираем в списке виртуальных машин созданную ВМ

    Запускаем ее

  10. Открываем консоль ВМ, скачивая файл настройки консоли

    Должен быть установлен клиент, который поддерживает протокол VNC/SPICE.

    К примеру, бесплатный Virtual Machine Viewer

  11. Продолжаем установку в консоли: выбираем пункт Install CentOS 7

    После окончания установки меняем порядок загрузки. Указываем загружаться с локального диска

  12. Заходим в shell ОС и производим модификации ВМ для подготовки его к Cloud-init

    Устанавливаем open-vm-tools
    yum 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
    

  13. Устанавливаем службы 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
    

  14. Преобразуем данную ВМ в шаблон для дальнейшего использования

  15. При необходимости использовать шаблон в других системах виртуализации можно экспортировать его в универсальный формат OVA

Настройка Нимбиус

Переходим в консоль Нимбиус и создаем Custom Cloud-init Template для template redos

  1. Выбираем пункт Compute -> Infrastructure -> PXE

  2. В System Image Type создаем раздел Centos и тип VM and Instance, если еще не создан

  3. Затем переходим в раздел Customization Templates и создаем шаблон для Cloud-init

    Примечание

    Желательно для одной платформы использовать один начальный префикс, в данном случае centos-*

  4. В раздел Scripts добавляем шаблон для Cloud-init

Customization Template Scripts
#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]  %>