NetBox — Управление физической инфраструктурой

NetBox — компонент в составе инсталлятора, размещённый на LCM-узле. Данный сервис включен в базовую последовательность установки продукта. NetBox предоставляет веб-интерфейс для внесения и хранения информации о серверах, сетевых интерфейсах и других данных, которые используются при автоматизированной установке и настройке операционных систем серверов.

Пользовательский веб-интерфейс доступен по адресу https://netbox.<имя домена>.

При включенной ролевой модели доступ к NetBox получают пользователи с ролями admin, security_auditor и reader. Пользователь с ролью admin может создавать, изменять и удалять объекты NetBox. Пользователи с ролями security_auditor и reader получают доступ только на чтение. Пользователи с ролями member, operator_vm, app_operator и os_operator не получают доступ к NetBox.

Подробное поведение ролей в NetBox описано в разделе Ролевая модель в NetBox.

Интерфейс NetBox

Интерфейс NetBox

Навигация по основным разделам веб-интерфейса осуществляется с помощью меню слева.

Кроме того, можно осуществлять операции с целой группой сущностей, а не с каждой по отдельности. Для этого выделите выбранные объекты в соответствующей таблице. Под таблицей доступны действия Изменить выбранное, Переименовать выбранное и Удалить выбранное.

Массовое редактирование в NetBox

Массовое редактирование в NetBox

Добавление новых вычислительных узлов

  1. Подготовьте описание серверов для NetBox.

    Для этого добавьте новое устройство в NetBox. При включенной ролевой модели используйте учетную запись пользователя с ролью admin. Если ролевая модель выключена, пароль администратора NetBox находится в Vault по пути secret_v2 / deployments / <LCM FQDN> / secrets / accounts. Веб-интерфейс NetBox доступен по адресу https://netbox.<имя домена>/dcim/devices/.

    Добавление нового устройства в NetBox

    Добавление нового устройства в NetBox

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

    • Имя — имя сервера;

    • Роль устройстваServer;

    • Тип устройства — выберите соответствующий тип;

    • Площадка — выберите соответствующую площадку, например, ks-region1;

    • Арендатор — выберите тенант;

    • role — выберите роль в выпадающем списке: controller, compute или network;

    • state — выберите Ready.

  2. После того как устройство будет добавлено, откройте его карточку и добавьте сетевые интерфейсы.

    Для этого перейдите на вкладку Интерфейсы, нажмите Добавить компоненты и выберите пункт Интерфейсы.

    Также интерфейсы можно добавить из списка устройств: выберите устройство, нажмите Добавить компоненты и выберите пункт Интерфейсы.

    Добавление сетевых интерфейсов

    Добавление сетевых интерфейсов

  3. Установите операционную систему:

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

    2. Откройте проект project_k / deployments / <имя региона>.

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

    4. Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag master-<имя релиза keystack>.

    5. В открывшемся окне измените значения для следующих переменных:

      • TARGET_ROLEcompute, controller или network;

      • TARGET_CLOUDks-region1;

      • IRONIC_IMAGE_URL — при указанном TARGET_ROLE=network, укажите http://LCM_IP:8080/ubuntu-20.04-mellanox-keystack.qcow2; в остальных случаях оставьте значение по умолчанию.

    6. Запустите пайплайн: New pipeline.

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

  4. Добавьте новый сервер в группу [compute] в файле inventory/inventory-ci в репозитории региона в GitLab.

  5. Выполните развёртывание нового гипервизора:

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

    2. Выберите ветку вашего релиза в выпадающем списке Run for branch name or tag master-<имя релиза keystack>.

    3. В открывшемся окне измените значения для следующих переменных:

      • KOLLA_ARGS--limit <имя нового гипервизора>.

    4. Запустите пайплайн: New pipeline.

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

    6. Запустите операцию deploy и дождитесь её завершения.

  6. Проверьте, что гипервизор функционирует, как ожидается: создаются виртуальные машины, работает миграция, имеется сетевая связность, имеется доступ по SSH до тестовых виртуальных машин:

    • Создайте виртуальную машину на требуемом гипервизоре через OpenStack CLI:

      $ openstack server create --image <image-id> --flavor <flavor-id> --availability-zone nova:<hypervisor-host-name>  --nic net-id=<network-id> Test-VM
      
    • Проверьте, что она создалась и перешла в статус ACTIVE:

      $ openstack server show <server-id>
      
    • Добавьте к ней FIP (Floating IP address) и проверьте SSH-доступ (должно быть соответствующее разрешающее правило).

    • Убедитесь, что виртуальную машину можно мигрировать. Сделать это можно c помощью OpenStack CLI:

      $ openstack server migrate --os-compute-api-version 2.87 --live-migration <instance-id>  --host <new-host-name>
      

Удаление вычислительного узла из кластера

  1. Удалите описание сервера из NetBox: https://netbox.<имя домена>/dcim/devices/

  2. Удалите сервер из файла inventory из группы [compute] в GitLab: https://<домен GitLab>/project_k/deployments/stage1/-/blob/dev-stage1/inventory (пример для stage1).

  3. Далее удалите связанные сущности в OpenStack (предполагается, что виртуальных машин на сервере нет):

    $ HOST_FOR_REMOVAL=<computeN>
    $ openstack --os-compute-api-version 2.87 compute service list --host $HOST_FOR_REMOVAL --service nova-compute -f value -c ID | xargs openstack --os-compute-api-version 2.87 compute service delete
    $ openstack network agent list --host $HOST_FOR_REMOVAL -f value -c ID | while read agent_id; do openstack network agent delete $agent_id; done
    $ openstack resource provider list --name $HOST_FOR_REMOVAL -f value -c uuid | xargs openstack resource provider show --allocations -f json |jq .allocations | jq 'keys[]' | xargs -n1 openstack resource provider allocation delete
    $ openstack resource provider list --name $HOST_FOR_REMOVAL -f value -c uuid | xargs openstack resource provider delete
    

Базовая настройка сервиса

Для базовой настройки сервиса достаточно заполнить следующие разделы: Организация, Настройка, IPAM, Выделение ресурсов и Устройства.

В первую очередь настройте параметры в разделах Площадки и Аренда. Последовательность создания сущностей для работы с NetBox: группа площадок > регион > площадка.

Арендаторы

Для того чтобы добавить арендатора, перейдите в раздел Организация > Аренда > Арендаторы и нажмите +.

Пример заполнения данных:

Name

Group

Description

itkey

Добавление нового арендатора в NetBox

Добавление нового арендатора в NetBox

Группы площадок

Для того чтобы создать группу площадок в NetBox, перейдите в раздел Организация > Площадки > Группы площадок и нажмите + Добавить.

Пример заполнения данных:

Имя

Подстрока

Описание

ItKey Group

itkey-group

Добавление новой группы площадок в NetBox

Добавление новой группы площадок в NetBox

Регионы

Для того чтобы добавить регион в NetBox, перейдите в раздел Организация > Площадки > Регионы и нажмите + Добавить.

Пример заполнения данных:

Имя

Подстрока

Описание

Russia

russia

Добавление нового региона в NetBox

Добавление нового региона в NetBox

Площадки

Площадки — основная сущность в NetBox. Для того чтобы добавить площадку, перейдите в раздел Организация > Площадки > Площадки и нажмите + Добавить.

Пример заполнения данных:

Имя

Подстрока

Статус

Регион

Группа

Объект

Арендатор

Описание

Region1

region1

Активный

Russia

ItKey Group

itkey

Добавление новой площадки в NetBox

Добавление новой площадки в NetBox

Настраиваемые поля

В разделе Настройка > Настраиваемые Поля можно создавать дополнительные поля и задавать набор предопределенных параметров для каждого из них. Например, добавочные поля role и state.

Настраиваемые поля, необходимые для работы с пайплайнами GitLab:

Типы объектов

Имя

лейбл

Имя группы

Описание

Тип

Требуется

Значение по умолчанию

DCIM > Device

role

role

Multiple selection

False

DCIM > Device

state

state

Selection

False

Добавление нового настраиваемого поля в NetBox

Добавление нового настраиваемого поля в NetBox

Tags

Теги — важный элемент в разделе Настройка > Tags, поскольку сбор всей информации происходит по ним. По тегам происходит поиск серверов, для которых нужно выполнить откат развёртывания. По тегам можно также фильтровать разные сущности, например, устройства.

Теги необходимо создать соответственно регионам и точкам развёртывания у заказчика.

Пример заполнения данных:

Название

Подстрока

Цвет

Вес

Описание

itkey

itkey

Зеленый

1000

Добавление нового тега в NetBox

Добавление нового тега в NetBox

IPAM

Раздел IPAM включает настройки для модулей IPAM и содержит всё, что относится к сетям.

В работе с NetBox желательно наличие как минимум трех сетей VLAN (для сайта и тенанта). В нашем случае это pxe, mgmt и external.

Для создания префикса для сети перейдите в раздел IPAM > Префиксы > Префиксы и нажмите + Добавить. Затем укажите префикс, статус, область применения и, если требуется, VLAN. Созданный префикс появится в параметрах VLAN и IP-адреса.

Заполните этот раздел согласно данным заказчика:

  • VLAN

  • Prefix

Добавление нового префикса в NetBox

Добавление нового префикса в NetBox

Производители

Для того чтобы определить производителей, перейдите в раздел Устройства > Типы устройств > Производители и заполните данные, т.е. марку сервера. Если марка отсутствует, добавьте её, нажав + Добавить.

Пример заполнения данных:

Name

Device Types

Inventory Items

Platforms

Description

Slug

Accedian

1

0

0

accedian

Adam Hall

1

0

0

adam-hall

APC

19

0

0

apc

Arista

40

0

0

arista

Asrock

2

0

0

asrock

ATEN

2

0

0

aten

Avocent

8

0

0

avocent

Backblaze

1

0

0

backblaze

Brocade

2

0

0

brocade

Cabeus

2

0

0

cabeus

Chenbro

1

0

0

chenbro

Cisco

64

44

0

cisco

Dell

37

0

0

dell

Delta

4

0

0

delta

Dlink

2

0

0

dlink

EMC

7

0

0

emc

Extreme

1

0

0

extreme

Fiberstore

6

0

0

fiberstore

FlyghtPro

0

0

0

flyghtpro

Flyht Pro

1

0

0

flyht-pro

Furukawa

1

0

0

furukawa

Geist

2

0

0

geist

Gigabyte

7

0

0

gigabyte

Graphcore

1

0

0

graphcore

HGST

4

0

0

hgst

HP

46

0

0

hp

Huawei

2

0

0

huawei

Intel

4

0

0

intel

Juniper

11

0

0

juniper

KEMP

1

0

0

kemp

KINX

1

0

0

kinx

Lenovo

1

0

0

lenovo

Lextron

1

0

0

lextron

Mellanox

1

0

0

MELLANOX

MikroTik

1

0

0

mikrotik

NetApp

2

0

0

netapp

Nokia

1

0

0

nokia

Noname

27

0

0

noname

NSFOCUS

1

0

0

nsfocus

Opengear

2

0

0

opengear

Oracle

7

0

0

oracle

Organiser

2

0

0

organiser

Panduit

2

0

0

panduit

Patchpanel

1

0

0

patchpanel

Pure Storage

1

0

0

pure-storage

QNAP

1

0

0

qnap

Quicknet

2

0

0

quicknet

Raritan

5

0

0

raritan

Rittal

4

0

0

rittal

Riverbed

2

0

0

riverbed

SNR

1

0

0

snr

std_config

0

0

0

std_config

STS

0

0

0

sts

Sun

2

0

0

sun

Supermicro

73

0

0

supermicro

Synology

1

0

0

synology

TP-LINK

1

0

0

tp-link

Tyan

1

0

0

tyan

Unknown

1

0

0

unknown

Vertiv

2

0

0

vetiv

Добавление нового производителя в NetBox

Добавление нового производителя в NetBox

Роли устройств

Для того чтобы определить роли устройств, откройте раздел Устройства > Устройства > Роли устройств и выберите, что нужно установить. Обычно это Server.

Пример заполнения данных:

Name

Devices

VMs

Color

VM Role

Description

Access Switch

0

0

#2196f3

False

Cable management

0

0

#111111

False

Console Server

0

0

#009688

False

Core Switch

0

0

#2196f3

False

Customer equipment

0

0

#e91e63

False

DCcore

0

0

#4caf50

False

Disk enclosure

0

0

#3f51b5

False

Network HW

0

0

#4caf50

False

PDU

0

0

#607d8b

False

Patch Panel

0

0

#03a9f4

False

Planned

0

0

#f44336

False

Power

0

0

#ff9800

False

Rack mount boxes

0

0

#795548

False

Rack mounting kit

0

0

#111111

False

Router

0

0

#9c27b0

False

SAN

0

0

#ff9800

False

Server

5

0

#673ab7

False

Server enclosure

1

0

#2196f3

False

Добавление новой роли устройства в NetBox

Добавление новой роли устройства в NetBox

Типы устройств

Определите тип устройств в соответствующем разделе. Это шаблон, с которого создаётся новый сервер.

Для того чтобы добавить новый тип устройства, откройте раздел Устройства > Типы устройств > Типы устройств и нажмите + Добавить.

Пример для блейд-корзины DELL M1000e:

Device Type

Manufacturer

Part number

Height (U)

Full Depth

Instances

Dell M1000e

Dell

10

True

1

M620

Dell

0

True

4

M830

Dell

0

True

1

Добавление нового типа устройств в NetBox

Добавление нового типа устройств в NetBox

Контексты конфигурации

Для того чтобы создать контекст конфигурации, перейдите в раздел Выделение ресурсов > Конфигурации > Контексты конфигурации и нажмите +.

Пример заполнения данных:

Имя

Вес

Описание

itkey

1000

Добавление нового контекста конфигурации в NetBox

Добавление нового контекста конфигурации в NetBox

Devices

В данном разделе все параметры заполняются по данным заказчика:

  • Device;

  • Порты;

  • Бонды;

  • IP Address (rmi);

  • IP Address (mgmt);

  • IP Address (vxlan);

  • IP Address (strg), если требуется.

Связанные пайплайны для Baremetal

Когда в GitLab настраивается пайплайн, эти параметры соответствуют следующим данным из NetBox:

  • TARGET_ROLE = role (compute);

  • TARGET_CLOUD = tag (itkey);

  • TARGET_NODE = node (name);

  • IRONIC_SSH_KEY = SSH-key;

  • IRONIC_IMAGE_URL = Image (адрес образа).

После настройки запустите пайплайн, нажав New pipeline. Статус Passed пайплайна означает, что сервер успешно поднялся.

Настройки безопасности

Аутентификация и авторизация

  1. NetBox поддерживает аутентификацию через LDAP, что позволяет интегрировать его с существующей системой управления доступом, например, Active Directory. Подробнее см. Интеграция с LDAP.

  2. При включенной ролевой модели права доступа пользователей определяются ролями KeyStack. Подробнее см. Ролевая модель в NetBox.

  3. Для работы с API можно использовать токены с разным уровнем доступа. Это позволяет контролировать, какие действия пользователь или приложение может выполнять через API.

  4. NetBox поддерживает аутентификацию через OAuth2 для более гибкого управления доступом.

Права доступа и группы

  1. При включенной ролевой модели пользователь с ролью admin может просматривать, создавать, изменять и удалять объекты NetBox.

  2. Пользователи с ролями security_auditor и reader получают доступ к NetBox только на чтение.

  3. Пользователи с ролями member, operator_vm, app_operator и os_operator не получают доступ к NetBox.

Шифрование

  1. NetBox поддерживает шифрование данных через SSL/TLS при настройке с использованием веб-сервера. Это защищает данные при передаче между клиентом и сервером.

Таймаут веб-интерфейса

Для веб-интерфейса NetBox можно настроить интервал простоя, что позволяет принудительно завершать сеанс доступа при отсутствии активности со стороны пользователя.

Чтобы установить желаемое значение, перед развёртыванием необходимо изменить значение для параметра LOGIN_TIMEOUT в файле по пути installer/netbox-docker/configuration/configuration.py. Интервал выставляется в секундах.