Подготовка 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.
Создайте регион:
Перейдите в раздел и нажмите Add.
В поле Name введите значение
Russia.Сохраните изменения.
Откройте вкладку 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 в разделе deployments / <LCM FQDN> / secrets / accounts скопируйте значение ключа
NETBOX_TOKEN.Сохраните содержимое первой строки на вкладке update_ctx.sh XLSX-файла
netbox2csv.xlsxв виде файлаupdate_ctx.sh.На LCM-узле выполните скрипт из XLSX-файла в CLI, вкладка update_ctx.sh, предварительно заменив значения необходимое количество раз для каждого устройства:
NETBOX_TOKEN— токен для доступа к NetBox;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.Сохраните изменения.
Подробные инструкции по созданию объектов и заполнению разделов NetBox приведены в разделе Базовая настройка сервиса.
Запуск пайплайнов развертывания¶
Примечание
Для корректной работы протокола 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.
Если Ironic устанавливался отдельно выполните следующую настройку:
Перейдите в раздел .
Добавьте новую переменную
ironic_ip_addressсо значением, которое указано вlcm-config.yaml:В открывшемся окне в параметре Visibility выберите значение Visible.
Снимите чекбокс с Protect variable.
Поставьте чекбокс на Expand variable reference.
Сохраните изменения, нажав Add Variable.
Создайте новый пайплайн: .
Оставьте ветку по умолчанию, соответствующую установленному релизу.
В открывшемся окне проверьте переменные, предзаполненные формой 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.
После выполнения описанной выше подготовки серверной инфраструктуры можно переходить к развёртыванию регионов.