Подготовка baremetal-узлов для установки KeyStack

Для установки продукта KeyStack на baremetal-серверную инфраструктуру необходимо выполнить подготовку серверов.

Примечание

В данной инструкции в качестве базового доменного имени облачной платформы используется cloud.itkey.com и имена сервисов по умолчанию. При выполнении инструкции указывайте ваши действительные имена.

Настройка пользователя и пароля IPMI-интерфейсов

Для первоначального провиженинга baremetal-узлов необходимо создать учетную запись пользователя на IPMI-интерфейсах. На всех узлах должен быть задан одинаковый пользователь и пароль. Сконфигурируйте IPMI-интерфейсы всех узлов:

  1. Добавьте учетную запись (одинаковый пользователь и пароль на всех узлах).

  2. Установите ему права доступа на:

    • однократную загрузку по PXE,

    • включение и выключение сервера.

При провиженинге узлов Bifrost будет брать имя пользователя и пароль из сервиса Vault. Добавьте их в Vault:

  1. Перейдите в веб-интерфейс Vault (vault.cloud.itkey.com).

  2. Авторизуйтесь с помощью реквизитов для Vault, полученных на этапе установки дистрибутива KeyStack.

  3. Перейдите в директорию с настройками Bifrost: secret_v2 / deployments / <LCM FQDN> / bifrost / rmi.

  4. Нажмите Create new для создания новой версии секрета.

  5. Задайте параметры user и password интерфейса IPMI-узлов и сохраните новую версию.

Настройка перечня оборудования в NetBox

  1. Откройте файл с данными об оборудовании netbox2csv.xlsx, заполненный на этапе подготовки серверной инфраструктуры.

  2. Откройте веб-интерфейс развёрнутого NetBox (netbox.cloud.itkey.com).

  3. Авторизуйтесь:

    • если ролевая модель включена — пользователем с ролью admin;

    • если ролевая модель выключена — с помощью реквизитов для NetBox, полученных на этапе установки дистрибутива KeyStack.

  4. Откройте вкладку SERVERS в Excel. По одному добавьте в NetBox все уникальные значения тегов из столбца Tags, выполнив следующие шаги:

    1. В разделе NetBox Customization > Tags нажмите Add.

    2. Введите название тега, его slug (используется в URL) и цвет.

  5. Импортируйте данные о тенантах из Excel в NetBox:

    1. Скопируйте данные с вкладки Excel netbox_tenant.csv.

    2. В разделе NetBox Organization > Tenants нажмите Import.

    3. Вставьте скопированные данные в поле Data.

  6. Аналогичным образом импортируйте прочие данные из Excel в NetBox:

    • с вкладки netbox_site.csv — в раздел Organization > Sites;

    • с вкладки netbox_device.csv — в раздел Devices > Devices;

    • с вкладки netbox_interface.csv — в раздел Devices > Interfaces;

    • с вкладки netbox_ip.csv — в раздел IPAM > IP Addresses.

  7. Создайте виртуальные локальные сети:

    1. В разделе NetBox IPAM > VLANs нажмите Add.

    2. Укажите соответствующие значения VLAN ID, Name, Tenant и Site.

    3. В разделе Prefixes нажмите Add Prefix и укажите соответствующее сети VLAN значение IP-префикса.

  8. Проверьте соответствие префиксов и адресов шлюзов:

    1. Перейдите в раздел IPAM > Prefixes.

    2. Убедитесь, что значение Prefix совпадает с указанным First available IP. Если это не так, измените их и сохраните изменения.

  9. Настройте конфигурационные контексты для каждой роли узла (control, compute и так далее). Для этого выполните следующие действия:

    1. Подготовьте описание конфигурационных контекстов для каждой роли узла в формате 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"
              }
          ]
      }
      

      Здесь:

      • 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.

    2. Перейдите в раздел NetBox Provisioning > Config Contexts.

    3. Нажмите Add.

    4. Заполните поля Name и Weight.

    5. Вставьте конфигурацию в поле Data.

    6. В поле Tags укажите соответствующие конфигурационному контексту теги.

    7. Повторите настройку конфигурационного контекста для узлов каждой роли.

  10. Завершите настройку NetBox:

    1. В Vault в разделе secrets скопируйте значение NETBOX_TOKEN.

    2. Сохраните содержимое первой строки на вкладке update_ctx.sh XLSX-файла netbox2csv.xlsx в виде файла update_ctx.sh.

    3. На LCM-узле выполните скрипт из XLSX-файла в CLI, вкладка update_ctx.sh, предварительно заменив значения необходимое количество раз для каждого устройства:

      • NETBOX_TOKEN — значение из раздела secrets в Vault;

      • NETBOX_URI — адрес NetBox в формате https://netbox.cloud.itkey.com/.

  11. Активируйте все BMC-узлы инфраструктуры. В пайплайн попадают только узлы NetBox, которые соответствуют всем следующим условиям: StatusActive, заполнено поле role, а state (раздел Custom Fields) — одно из значений ready, shred, setup, free (для первичной установки используйте ready):

    1. В веб-интерфейсе NetBox перейдите в раздел Devices > Devices.

    2. Отметьте все необходимые узлы.

    3. Нажмите Edit Selected.

    4. В открывшейся форме для параметра state в разделе Custom Fields установите значение ready.

    5. Сохраните изменения.

  12. Заполните IP-адреса интерфейсов каждого сервера. Даже при включённой переменной EXPERIMENTAL_NETBOX_INTROSPECTION NetBox создаст интерфейсы и IP-объекты автоматически, но значения самих IP-адресов нужно указать вручную:

    1. В веб-интерфейсе NetBox перейдите в раздел Devices > Devices.

    2. Перейдите на карточку устройства и нажмите Edit.

    3. Укажите IP-адреса интерфейсов в разделе Local Config Context Data.

    4. Сохраните изменения.

    5. Повторите действия для каждого устройства.

Запуск пайплайнов развертывания

Примечание

Для корректной работы протокола 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 (описание переменных приведено ниже).

Запустите пайплайн для развертывания системы. Данную операцию необходимо произвести для узлов каждого типа.

  1. Откройте веб-интерфейс GitLab.

  2. Откройте проект project_k / services / baremetal.

  3. Создайте новый пайплайн: Build > Pipelines > New Pipeline.

  4. Оставьте ветку по умолчанию, соответствующую установленному релизу.

  5. В открывшемся окне проверьте переменные, предзаполненные формой 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.qcow2 hash-файл должен называться 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 перед провиженингом. Актуальна при повторных запусках пайплайна.

  6. Запустите пайплайн, нажав кнопку New pipeline.

  7. Дождитесь завершения выполнения операции.

  8. Повторите шаги запуска пайплайна для остальных типов узлов.

  9. Перейдите в раздел Devices > Devices в NetBox и убедитесь, что все нужные узлы поменяли значение state на production.

После выполнения описанной выше подготовки серверной инфраструктуры можно переходить к развёртыванию регионов.