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

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

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

Интерфейс NetBox

Интерфейс NetBox

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

В NetBox всегда можно отследить внесенные изменения (время, автора изменений и т.д.) в разделе Operations > Logging > Change Log.

Логирование в NetBox

Логирование в NetBox

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

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

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

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

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

    Для этого добавьте новое устройство в NetBox (пароль находится в Vault в разделе secret_v2 / deployments / <LCM FQDN> / secrets / accounts) https://netbox.<имя домена>/dcim/devices/.

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

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

    Затем заполните параметры:

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

    • Device roleServer;

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

    • Site — выберите соответствующий сайт, например, ks-region1;

    • StatusActive;

    • Tenant — выберите тенант;

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

    • StatusReady.

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

    Для этого перейдите в любой из разделов:

    • Devices > Devices > Interfaces > Add Interface;

    • Devices > Devices > Add Components > Interfaces;

    • Devices > Devices Components > Interfaces.

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

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

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

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

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

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

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

      • TARGET_ROLEcompute, controller или network;

      • TARGET_CLOUDks-region1;

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

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

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

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

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

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

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

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

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

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

    5. Запустите операцию 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
    

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

Для базовой настройки сервиса достаточно заполнить следующие разделы: Organization, Customization, IPAM, Provisioning и Devices.

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

Tenants

Для того чтобы добавить заказчика, перейдите в раздел Organization > Tenancy > Tenant и нажмите +Add.

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

Name

Group

Description

itkey

Добавление нового заказчика в NetBox

Добавление нового заказчика в NetBox

Site Groups

Для того чтобы создать сайт-группу в NetBox, перейдите в раздел Organization > Sites > Site Groups и нажмите +Add.

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

Name

Description

Group1

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

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

Region

Для того чтобы добавить регион в NetBox, перейдите в раздел Organization > Sites > Regions и нажмите +Add.

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

Name

Description

BELARUS

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

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

Site

Сайты — основная сущность в NetBox. Для того, чтобы добавить сайт, перейдите в раздел Organization > Sites > Sites и нажмите +Add.

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

Name

Status

Region

Group

Facility

Tenant

Description

Site1

Active

Group1

Russia

itkey

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

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

Custom Fields

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

Дополнительные поля создаются и конфигурируются в разделе Customization > Customization > Custom Fields.

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

Object types

Name

Label

Group name

Description

Type

Required

Default value

Search weight

Filter logic

UI visibility

Cloneable

Display weight

Choice set

DCIM > Device

role

role

Multiple selection

False

1000

Loose

Always

False

100

role Choices

DCIM > Device

state

state

Selection

False

1000

Loose

Always

False

100

state Choices

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

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

Tags

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

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

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

Name

Color

Description

itkey

Green

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

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

IPAM

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

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

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

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

  • VLAN

  • Prefix

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

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

Manufacturers

Для того чтобы определить производителей, перейдите в раздел Devices > Device Types > Manufacturers и заполните данные, т.е. марку сервера. Если марка отсутствует, добавьте её, нажав +Add.

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

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

Device Role

Для того чтобы определить роли устройств, откройте раздел Device Types > Device Roles и выберите, что нужно установить. Обычно это 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

Device Type

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

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

Пример для блейд-корзины 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

Config Contexts

Для того чтобы создавать специальный контекст, который отвечает за дополнительные настройки сети перейдите в раздел Provisioning > Configurations > Config Contexts и нажмите +Add.

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

Name

Weight

Description

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.

  2. Поддержка SAML (Security Assertion Markup Language) для единого входа (Single Sign-On, SSO), что облегчает управление учетными записями пользователей.

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

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

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

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

  2. Права доступа можно настраивать на основе ролей (RBAC), что позволяет ограничивать доступ к функциям и объектам на основе должностных обязанностей или ролей в организации.

Шифрование

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

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

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

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