Иван Санников
20.02.2019
267

Подготовка дистрибутива Linux для разворачивания в Huawei Cloud

В рамках данной статьи будет рассмотрен механизм подготовки Linux-дистрибутива для корректной установки в Huawei ECS. Данный сервис не предоставляет возможности установки сервера с ISO-образа, но может возникнуть такая ситуация, что предустановленных ОС недостаточно, например, если используется какой-либо собственноручно доработанный дистрибутив, но можно загрузить в данное облако готовый образ виртуальной машины, например, VHD, VHDX. Для подготовки […]

В рамках данной статьи будет рассмотрен механизм подготовки Linux-дистрибутива для корректной установки в Huawei ECS. Данный сервис не предоставляет возможности установки сервера с ISO-образа, но может возникнуть такая ситуация, что предустановленных ОС недостаточно, например, если используется какой-либо собственноручно доработанный дистрибутив, но можно загрузить в данное облако готовый образ виртуальной машины, например, VHD, VHDX.

Для подготовки образа можно использовать любую систему виртуализации способную создавать VHD/VHDX. Самый простой способ — использовать VirtualBox. В качестве ОС будет использована CentOS 6.9

Перед установкой VirtualBox необходимо убедиться, что ПК на который производится установка поддерживает аппаратную виртуализацию (Intel VT-x или AMD-V).

Также виртуализация может поддерживаться процессором, но быть выключенной, состояние виртуализации проверяется в BIOS, там же можно включить ее.

Далее необходимо создать виртуальную машину для установки ОС, для этого необходтимо выполнить следующие шаги:

– нажать «Создать» в интерфейсе VirtualBox

– ввести имя виртуальной машины, выбрать тип устанавливаемой ОС, и ее версию, указать объем оперативной памяти, а также выбрать создание нового виртуального жесткого диска.

– следующим шагом необходимо выбрать тип виртуального диска VHD, указать формат хранения фиксированный или динамический и указать размер

– далее необходимо зайти в настройки созданной виртуальной машины

– в разделе носители подгрузить необходимый ISO-образ в эмулятор оптического привода

– далее необходимо включить сеть и выбрать тип подключения bridge

– следующим шагом необходимо запустить виртуальную машину и произвести стандартную установку ОС

По рекомендации Huawei необходимо произвести модификацию дистрибутива. В первую очередь необходимо чтобы создаваемый образ для загрузки в ECS, поддерживал оба типа виртуализации KVM и XEN.

1) Настройка загрузки встроенных драйверов XEN и KVM

Необходимо прописать данные драйверы в файл с модулями initramfs, на Centos для этих целей служит файл /etc/dracut.conf, необходимо добавить в него следующие модули: xen-blkfront, xen-netfront, virtio_blk, virtio_scsi, virtio_net, virtio_pci, virtio_ring, virtio в раздел add_drivers

Для применения новых параметров (перезаписи существующего initramfs файла) необходимо перезапустить dracut командой dracut -<strong>f</strong>

Чтобы проверить что драйверы присутсвуют в системе можно использовать команды

lsinitrd | grep xen и lsinitrd | grep virtio

Также загрузку драйверов можно проверить командами:

 cat /boot/config-`uname -r` | grep CONFIG_VIRTIO и cat /boot/config-`uname -r` | grep CONFIG_XEN

2) Следующим шагом необходимо убедиться что в загрузчике root раздел представлен с использованием UUID, если это не так, то необходимо исправить. В данной статье правки показаны на примере загрузчика GRUB. Для проверки необходимо открыть файл /etc/grub.conf и найти конструкцию примерно следующего вида:
kernel /vmlinuz-2.6.32-696.30.1.el6.x86_64 ro root=

Если в этом файле конструкция имеет вид root=/dev/sdX или подобный (т.е. root-раздел представлен именем устройства), то необходимо произвести правки.

Для просмотра UUID устройств необходимо выполнить команду

blkid,

результатом вывода будет представление всех устройств с UUID и и типом файловой системы.

Необходимо в grub.conf прописать

root=UUID=<device_UUID>

3) Таким же образом нужно проверить и при необходимости изменить идентификацию разделов в fstab файле.

Сначала необходимо проверить содержимое fstab командой

cat /etc/fstab.conf

Если устройства записаны именами, то необходимо с помощью команды blkid просмотреть UUID и прописать в необходимом формате.

Также необходимо установить и настроить утилиту cloud-init. В CentOS данная утилита доступна через yum. установить ее возможно с помощью команды

yum install cloud-init

Также возможно установить из исходного кода.

– скачать архив командой

 wget  https://launchpad.net/cloud-init/trunk/0.7.5/+download/cloud-init-0.7.5.tar.gz 

– распаковать архив командой

tar -zxvf cloud-init-0.7.5.tar.gz

– перейти в директорию с исходным кодом командой

cd cloud-init-0.7.5

– произвести сборку командой

python setup.py build
Если на этапе сборки выдаст ошибку вида ImportError: No module named setuptools — то необходимо установить пакет setuptools командой yum install python-setuptools и снова выполнить сборку.

– произвести установку командой

python setup.py install --init-system sysvinit
Возможно понадобится установить следующие зависимости: python-yaml python-six python-requests audit-libs-python libcgroup libselinux-python libsemanage-python m2crypto policycoreutils-python python-boto python-cheetah python-configobj python-jsonpatch python-jsonpointer python-markdown python-oauth python-prettytable python-pygments setools-libs setools-libs-python

После установки необходимо запустить сервисы cloud-init и добавить их в автозагрузку

chkconfig --add cloud-init-local
chkconfig --add cloud-init
chkconfig --add cloud-config
chkconfig --add cloud-final
chkconfig cloud-init-local on
chkconfig cloud-init on
chkconfig cloud-config on
chkconfig cloud-final on

Для проверки установленной версии необходимо использовать команду

 cloud-init init --local

Следующим этапом необходимо сконфигурировать cloud-init, правки производятся в файле /etc/cloud/cloud.cfg

В конце файла необходимо добавить следующие параметры:

datasource_list: [ OpenStack ]
datasource:
 OpenStack:
  metadata_urls: ['http://169.254.169.254']
  max_wait: 60
  timeout: 20
network:
 config:disabled

Также необходимо в разделе cloud_init_modules необходимо перенести параметр ssh на первую позицию

Также необходимо для исправления проблем с именем хоста (hostname) модифицировать файл /usr/lib/python2.6/site-packages/cloudinit/sources/__init__.py к виду:

# if there is an ipv4 address in 'local-hostname', then
            # make up a hostname (LP: #475354) in format ip-xx.xx.xx.xx
            lhost = self.metadata['local-hostname']
            if util.is_ipv4(lhost):
                toks = []
                if resolve_ip:
                    toks = util.gethostbyaddr(lhost)
                if toks:
                    toks = str(toks).split('.')
                else:
                    toks = ["ip-%s" % lhost.replace(".", "-")]
            else:
                toks = lhost.split(".novalocal")
        if len(toks) > 1:
            hostname = toks[0]
            #domain = '.'.join(toks[1:])
        else:
            hostname = toks[0]
        if fqdn and domain != defdomain:
            return "%s.%s" % (hostname, domain)
        else:
            return hostname

Для того чтобы изменения отработали как нужно необходимо произвести следующие действия:
– перейти в директорию с исходниками:
cd /usr/lib/python2.6/site-packages/cloudinit/sources
и удалить следующие файлы: rm -rf __init__.pyc, rm -rf __init__.pyo, а также очистить логи: rm -rf /var/log/cloud-init*

На этом подготовка дистрибутива для загрузки в Huawei ECS завершена.

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices