Подготовка baremetal-узлов для установки KeyStack¶
Для установки продукта KeyStack на baremetal-серверную инфраструктуру необходимо выполнить подготовку серверов.
Примечание
В данной инструкции в качестве базового доменного имени облачной платформы используется cloud.itkey.com и имена сервисов по умолчанию. При выполнении инструкции указывайте ваши действительные имена.
Настройка пользователя и пароля IPMI-интерфейсов¶
Для первоначального провиженинга baremetal-узлов необходимо создать учетную запись пользователя на IPMI-интерфейсах. На всех узлах должен быть задан одинаковый пользователь и пароль. Сконфигурируйте IPMI-интерфейсы всех узлов:
Добавьте учетную запись (одинаковый пользователь и пароль на всех узлах).
Установите ему права доступа на:
однократную загрузку по PXE,
включение и выключение сервера.
При провиженинге узлов Bifrost будет брать имя пользователя и пароль из сервиса Vault. Добавьте их в Vault:
Перейдите в веб-интерфейс Vault (
vault.cloud.itkey.com).Авторизуйтесь с помощью реквизитов для Vault, полученных на этапе установки дистрибутива KeyStack.
Перейдите в директорию с настройками Bifrost: secret_v2 / deployments / <LCM FQDN> / bifrost / rmi.
Нажмите Create new для создания новой версии секрета.
Задайте параметры
userиpasswordинтерфейса IPMI-узлов и сохраните новую версию.
Настройка перечня оборудования в NetBox¶
Откройте файл с данными об оборудовании
netbox2csv.xlsx, заполненный на этапе подготовки серверной инфраструктуры.Откройте веб-интерфейс развёрнутого NetBox (
netbox.cloud.itkey.com).Авторизуйтесь:
если ролевая модель включена — пользователем с ролью
admin;если ролевая модель выключена — с помощью реквизитов для NetBox, полученных на этапе установки дистрибутива KeyStack.
Откройте вкладку SERVERS в Excel. По одному добавьте в NetBox все уникальные значения тегов из столбца Tags, выполнив следующие шаги:
В разделе NetBox нажмите Add.
Введите название тега, его slug (используется в URL) и цвет.
Импортируйте данные о тенантах из Excel в NetBox:
Скопируйте данные с вкладки Excel netbox_tenant.csv.
В разделе NetBox нажмите Import.
Вставьте скопированные данные в поле Data.
Аналогичным образом импортируйте прочие данные из Excel в NetBox:
с вкладки netbox_site.csv — в раздел ;
с вкладки netbox_device.csv — в раздел ;
с вкладки netbox_interface.csv — в раздел ;
с вкладки netbox_ip.csv — в раздел .
Создайте виртуальные локальные сети:
В разделе NetBox нажмите Add.
Укажите соответствующие значения VLAN ID, Name, Tenant и Site.
В разделе Prefixes нажмите Add Prefix и укажите соответствующее сети VLAN значение IP-префикса.
Проверьте соответствие префиксов и адресов шлюзов:
Перейдите в раздел .
Убедитесь, что значение Prefix совпадает с указанным First available IP. Если это не так, измените их и сохраните изменения.
Настройте конфигурационные контексты для каждой роли узла (control, compute и так далее). Для этого выполните следующие действия:
Подготовьте описание конфигурационных контекстов для каждой роли узла в формате JSON:
{ "bonds": [ { "Interface": "bond0", "MTU": 9000, "Slaves": [ "ens1f0np0", "ens2f0np0" ], "Tagged_vlan": [ "39", "484" ] }, { "Interface": "bond1", "MTU": 9000, "Slaves": [ "ens2f1np1", "ens1f1np1" ], "Tagged_vlan": [] }, { "Interface": "bond2", "MTU": 9000, "Slaves": [ "eno1", "eno2", "eno3", "eno4" ], "Tagged_vlan": [] } ], "default_gateway": "10.30.55.60/20", "dns_name": "lab.cloud.cfg_fake.ru", "dns_server": [ "11.55.70.153", "11.25.44.11" ], "route_vxlan": [ { "gw": "10.10.10.150/10", "route": "10.10.10.0/24" }, { "gw": "10.10.10.150/10", "route": "10.10.20.0/24" } ], "vlans": [ { "Interface": "mgmt", "MTU": "9000", "Parent": "bond0", "id": "39" }, { "Interface": "vxlan", "MTU": "9000", "Parent": "bond0", "id": "484" } ] }
{ "bonds": [ { "Interface": "bond0", "MTU": 9000, "Slaves": [ "ens1f0np0", "ens2f0np0" ], "Tagged_vlan": [ "40" ] }, { "Interface": "bond1", "MTU": 9000, "Slaves": [ "ens2f1np1", "ens1f1np1" ], "Tagged_vlan": [] }, { "Interface": "bond2", "MTU": 9000, "Slaves": [ "eno1", "eno2", "eno3", "eno4" ], "Tagged_vlan": [] } ], "default_gateway": "10.30.55.60/20", "dns_name": "lab.cloud.cfg_fake.ru", "dns_server": [ "11.55.70.153", "11.25.44.11" ], "vlans": [ { "Interface": "mgmt", "MTU": "9000", "Parent": "bond0", "id": "40" } ] }
Здесь:
default_gateway— адрес и маска шлюза для подсети по умолчанию;dns_name— имя DNS-сервера;dns_server— IP-адрес DNS-сервера;Interface— название интерфейса;MTU— значение MTU;Parent— название родительского интерфейса, если предусмотрена иерархия;"id": "40"— MGMT VLAN на гипервизорах;"id": "39"— MGMT VLAN на Controller-узлах;"id": "484"— VLAN сети управления IPMI.
Перейдите в раздел NetBox .
Нажмите Add.
Заполните поля Name и Weight.
Вставьте конфигурацию в поле Data.
В поле Tags укажите соответствующие конфигурационному контексту теги.
Повторите настройку конфигурационного контекста для узлов каждой роли.
Завершите настройку NetBox:
В Vault в разделе secrets скопируйте значение
NETBOX_TOKEN.Сохраните содержимое первой строки на вкладке update_ctx.sh XLSX-файла
netbox2csv.xlsxв виде файлаupdate_ctx.sh.На LCM-узле выполните скрипт из XLSX-файла в CLI, вкладка update_ctx.sh, предварительно заменив значения необходимое количество раз для каждого устройства:
NETBOX_TOKEN— значение из раздела secrets в Vault;NETBOX_URI— адрес NetBox в форматеhttps://netbox.cloud.itkey.com/.
Активируйте все BMC-узлы инфраструктуры. В пайплайн попадают только узлы NetBox, которые соответствуют всем следующим условиям: Status —
Active, заполнено поле role, а state (раздел Custom Fields) — одно из значенийready,shred,setup,free(для первичной установки используйтеready):В веб-интерфейсе NetBox перейдите в раздел .
Отметьте все необходимые узлы.
Нажмите Edit Selected.
В открывшейся форме для параметра state в разделе Custom Fields установите значение
ready.Сохраните изменения.
Заполните IP-адреса интерфейсов каждого сервера. Даже при включённой переменной
EXPERIMENTAL_NETBOX_INTROSPECTIONNetBox создаст интерфейсы и IP-объекты автоматически, но значения самих IP-адресов нужно указать вручную:В веб-интерфейсе NetBox перейдите в раздел .
Перейдите на карточку устройства и нажмите Edit.
Укажите IP-адреса интерфейсов в разделе Local Config Context Data.
Сохраните изменения.
Повторите действия для каждого устройства.
Запуск пайплайнов развертывания¶
Примечание
Для корректной работы протокола PXE на портах коммутаторов сетевой инфраструктуры должна быть включена функция LACP Fallback, обеспечивающая автоматический перевод агрегированного порта в активное состояние при отсутствии ответа от партнёра по протоколу LACP (например, для оборудования Cisco Nexus — no lacp suspend-individual, для коммутаторов Huawei CloudEngine — lacp force-up).
Если mgmt-интерфейс LCM-сервера не поддерживает PXE или образы недоступны по URL по умолчанию, при запуске пайплайна явно укажите полные URL-адреса образов в переменных IRONIC_IMAGE_URL, IPA_KERNEL_NAME и IPA_RAMDISK_NAME (описание переменных приведено ниже).
Запустите пайплайн для развертывания системы. Данную операцию необходимо произвести для узлов каждого типа.
Откройте веб-интерфейс GitLab.
Откройте проект project_k / services / baremetal.
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
В открывшемся окне проверьте переменные, предзаполненные формой New Pipeline, и при необходимости добавьте остальные. Обычно предзаполненные значения менять не нужно:
TARGET_ROLE— тип узла, определённый в NetBox; можно перечислить несколько ролей через пробел:controller— для Controller-узлов,network— для Network-узлов,compute— для Compute-узлов,osd/mon— для Ceph-узлов,baremetal— для baremetal-узлов.
TARGET_CLOUD— имя тега региона в NetBox (обязательный параметр — при пустом значении пайплайн не создаёт ни одной задачи). Значение чувствительно к регистру: указывайте slug тега в нижнем регистре. Если тег с указанным именем не найден, узлы ищутся по значению Site с тем же именем;TARGET_NODE— имя конкретного узла для развертывания, можно перечислить несколько имён узлов через пробел;IRONIC_ENV— окружение для развертывания узлов (по умолчаниюBIFROST);IRONIC_SSH_KEY— собственные SSH-ключи (формат — один ключ на строку);IRONIC_IMAGE_URL— путь до образа системы, который будет установлен на узел, в форматеhttp://<IP адрес LCM узла>:8080/sberlinux-9.7.2.qcow2. Требования к образу:только поддерживаемый тип операционной системы;
формат — QCOW2;
hash-файл образа располагается в одной папке с самим образом; расширение образа в его имени заменяется на
.md5, а не дописывается к полному имени файла — например, для образаsberlinux-9.7.2.qcow2hash-файл должен называтьсяsberlinux-9.7.2.md5.
IRONIC_IMAGE_ROOTFS_UUID— UUID корневого раздела в образе, если используется software RAID;IPA_KERNEL_NAME— путь до образа агента Ironic Python Agent (IPA) kernel image;IPA_RAMDISK_NAME— путь до образа агента Ironic Python Agent (IPA) initramfs image;KOLLA_ANSIBLE_IMG_TAG— тег контейнера с kolla-ansible, используемый для пайплайна (по умолчанию равен значениюKEYSTACK_RELEASE);EXPERIMENTAL_NETBOX_INTROSPECTION— по умолчаниюtrue; для отключения задайтеfalse;KEYSTACK_RELEASE— тег релиза KeyStack; форма New Pipeline уже предзаполняет его тегом установленного релиза;CI_DEBUG_TRACE:true— выводить отладочную информацию в пайплайне.
UNDEPLOY— приtrueузлы в состоянияхactive,deploy failed,deploying,wait call-back,errorавтоматически проходятundeployперед провиженингом. Актуальна при повторных запусках пайплайна.
Запустите пайплайн, нажав кнопку New pipeline.
Дождитесь завершения выполнения операции.
Повторите шаги запуска пайплайна для остальных типов узлов.
Перейдите в раздел в NetBox и убедитесь, что все нужные узлы поменяли значение state на
production.
После выполнения описанной выше подготовки серверной инфраструктуры можно переходить к развёртыванию регионов.