Подготовка baremetal-узлов для установки KeyStack¶
Для установки продукта KeyStack на вашу серверную инфраструктуру необходимо выполнить подготовку серверов.
Примечание
В данной инструкции в качестве базового доменного имени облачной платформы используется cloud.itkey.com и имена сервисов по умолчанию. При выполнении инструкции указывайте ваши действительные имена.
Генерация паролей и сертификатов для Bifrost¶
Для генерации секретов (паролей и сертификатов), которые будут использованы сервисом Bifrost для провиженинга серверов, запустите пайплайн:
Откройте веб-интерфейс развернутого GitLab (
ks-lcm.cloud.itkey.com).Авторизуйтесь с помощью реквизитов для GitLab, полученных на этапе установки дистрибутива KeyStack.
Откройте проект project_k / deployments / gen-pwd.
Создайте новый пайплайн: .
В открывшемся окне добавьте переменную
OPENSTACK_ENVсо значениемbifrostи запустите пайплайн.Запустите задачу create-config в созданном пайплайне.
Дождитесь завершения выполнения задачи.
Установка Bifrost¶
Установка Bifrost также выполняется через запуск пайплайна GitLab:
Перейдите в репозиторий project_k / deployments / bifrost.
Откройте файл
inventoryи замените в нем значениеLCM_IPна IP-адрес LCM-узла в PXE-сети.Откройте файл
globals.d/REGION.ymlи замените значение параметраnetwork_interfaceна имя интерфейса LCM-узла в PXE-сети (например,mgmt).Откройте файл
config/bifrost/bifrost.ymlи внесите в него изменения:
В параметрах
ipa_kernel_urlиipa_ramdisk_urlзаменитеLCM_IPна IP-адрес LCM-узла в PXE-сети:ipa_kernel_url: "http://LCM_IP:8080/ubuntu-22.04-ipa-debug-c.kernel" ipa_ramdisk_url: "http://LCM_IP:8080/ubuntu-22.04-ipa-debug-c.initramfs"Сконфигурируйте NTP, для этого раскомментируйте следующую строку и замените в ней
10.224.128.1на IP-адрес своего NTP-сервера:#inspector_extra_kernel_options: "ipa-inspection-collectors=default,logs ipa-ntp-server=10.224.128.1"Задайте значения параметров DHCP для PXE-сети:
dhcp_pool_start: 10.37.50.68 dhcp_pool_end: 10.37.50.78 dhcp_pool_mask: 255.255.255.224 dnsmasq_router: 10.37.50.94 # адрес шлюза PXE-сетиСоздайте и запустите новый пайплайн: .
Дождитесь завершения выполнения шага setup.
Запустите задачу deploy-bifrost на шаге deploy.
Дождитесь завершения выполнения пайплайна.
Убедитесь, что сервис dnsmasq запустился автоматически.
Настройка правил firewall для Bifrost¶
Если на узле включен firewall, то добавьте в его конфигурацию исключения для Bifrost:
Зайдите на узел LCM по ssh.
Откройте TCP-порты 8080, 5050, 6385 и UDP-порты 67, 69:
Выполните команды настройки firewalld:
# firewall-cmd --add-port=8080/tcp --permanent # firewall-cmd --add-port=5050/tcp --permanent # firewall-cmd --add-port=6385/tcp --permanent # firewall-cmd --add-service=dhcp --permanent # firewall-cmd --add-service=tftp --permanent # firewall-cmd --reloadВыполните команды настройки ufw:
# ufw allow 8080/tcp # ufw allow 5050/tcp # ufw allow 6385/tcp # ufw allow 67/udp # ufw allow 69/udp
Настройка пользователя и пароля 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).Авторизуйтесь с помощью реквизитов для 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 совпадает с указанными default_gateway. Если это не так, измените их и сохраните изменения.
Настройте конфигурационные контексты для каждой роли узла (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:
В NetBox в разделе API tokens, скопируйте токен.
На LCM-узле выполните скрипт из XLSX-файла в CLI, вкладка update_ctx.sh, предварительно заменив значения:
NETBOX_TOKEN— токен NetBox из раздела API tokens;NETBOX_URI— адрес NetBox в форматеhttps://netbox.cloud.itkey.com/.
Активируйте все BMC-узлы инфраструктуры:
В веб-интерфейсе NetBox перейдите в раздел .
Отметьте все необходимые узлы.
Нажмите Edit Selected.
В открывшейся форме для параметра state в разделе Custom Fields установите значение
ready.Сохраните изменения.
Запуск пайплайнов развертывания¶
Примечание
Для корректной работы протокола PXE на портах коммутаторов сетевой инфраструктуры должна быть включена функция LACP Fallback. Включите LACP Fallback на всех используемых портах коммутаторов.
Запустите пайплайн для развертывания системы. Данную операцию необходимо произвести для узлов каждого типа.
Откройте веб-интерфейс GitLab.
Откройте проект project_k / services / baremetal.
Создайте новый пайплайн: .
В открывшемся окне добавьте переменные:
TARGET_ROLE— тип узла, определенный в NetBox:controller— для Controller-узлов,network— для Network-узлов,compute— для Compute-узлов.
TARGET_CLOUD— имя тега региона в NetBox;TARGET_NODE— имя конкретного узла для развертывания, можно перечислить несколько имён узлов через пробел;IRONIC_ENV— окружение для развертывания узлов (по умолчаниюBIFROST);IRONIC_SSH_KEY— собственные SSH-ключи (формат — один ключ на строку);IRONIC_IMAGE_URL— путь до образа системы, который будет установлен на узел, в форматеhttp://<IP адрес LCM узла>:8080/sberlinux-9.4-x86_64.qcow2. Требования к образу:только поддерживаемый тип операционной системы;
формат — QCOW2;
hash-файл образа в формате
<имя образа>.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, используемый для пайплайна;EXPERIMENTAL_NETBOX_INTROSPECTION:true— использовать автозаполнение интерфейсов устройств в NetBox;KEYSTACK_RELEASE— тег релиза KeyStack;CI_DEBUG_TRACE:true— выводить отладочную информацию в пайплайне.
Запустите пайплайн, нажав кнопку Run pipeline.
Дождитесь завершения выполнения операции.
Повторите шаги запуска пайплайна для остальных типов узлов.
Перейдите в раздел в NetBox и убедитесь, что все нужные узлы поменяли значение state на
production.
После выполнения описанной выше подготовки серверной инфраструктуры можно переходить к развёртыванию регионов.