NetBox — Управление физической инфраструктурой¶
NetBox — компонент в составе инсталлятора, размещённый на LCM-узле. Данный сервис включен в базовую последовательность установки продукта. NetBox предоставляет собой веб-интерфейс для внесения и хранения информации о серверах, сетевых интерфейсах и других данных, которые используются при автоматизированной установке и настройке операционных систем серверов.
Пользовательский веб-интерфейс доступен по адресу https://netbox.<имя домена>.
Интерфейс NetBox¶
Навигация по основным разделам веб-интерфейса осуществляется с помощью меню слева.
В NetBox всегда можно отследить внесенные изменения (время, автора изменений и т.д.) в разделе .
Логирование в NetBox¶
Кроме того, можно осуществлять операции с целой группой сущностей, а не с каждой по отдельности. Для этого выделите выбранные объекты в соответствующей таблице и нажмите Edit Selected под таблицей с ними. Кнопки Rename Selected и Delete Selected позволяют переименовать или удалить выбранные объекты.
Массовое редактирование в NetBox¶
Добавление новых вычислительных узлов¶
Подготовьте описание серверов для NetBox.
Для этого добавьте новое устройство в NetBox (пароль находится в Vault в разделе secret_v2 / deployments / <LCM FQDN> / secrets / accounts)
https://netbox.<имя домена>/dcim/devices/.
Добавление нового устройства в NetBox¶
Затем заполните параметры:
Name — имя сервера;
Device role —
Server;Device type — выберите соответствующий тип;
Site — выберите соответствующий сайт, например,
ks-region1;Status —
Active;Tenant — выберите тенант;
Role — выберите роль в выпадающем списке (
controller,computeилиnetwork);Status —
Ready.
После того как устройство будет добавлено, зайдите в него и добавьте сетевые интерфейсы.
Установите операционную систему:
Откройте веб-интерфейс развернутого GitLab.
Откройте проект project_k / deployments / <имя региона>.
Создайте новый пайплайн: .
В открывшемся окне измените значения для следующих переменных:
TARGET_ROLE —
compute,controllerилиnetwork;TARGET_CLOUD —
ks-region1;IRONIC_IMAGE_URL — при указанном
TARGET_ROLE=network, укажитеhttp://LCM_IP:8080/ubuntu-20.04-mellanox-keystack.qcow2; в остальных случаях оставьте значение по умолчанию.
Запустите пайплайн: New pipeline.
Дождитесь завершения выполнения операции.
Добавьте новый сервер в группу
[compute]в файлеinventory/inventory-ciв репозитории региона в GitLab .Выполните развёртывание нового гипервизора:
Создайте новый пайплайн: .
В открывшемся окне измените значения для следующих переменных:
KOLLA_ARGS —
–-limit <имя нового гипервизора>.
Запустите пайплайн: New pipeline.
Дождитесь завершения выполнения операции
bootstrap-servers.Запустите операцию
deployи дождитесь её завершения.
Проверьте, что гипервизор функционирует, как ожидается: создаются виртуальные машины, работает миграция, имеется сетевая связность, имеется доступ по 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>
Удаление вычислительного узла из кластера¶
Удалите описание сервера из NetBox:
https://netbox.<имя домена>/dcim/devices/Удалите сервер из файла inventory из группы [compute] в GitLab:
https://<домен GitLab>/project_k/deployments/stage1/-/blob/dev-stage1/inventory(пример дляstage1).Далее удалите связанные сущности в 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¶
Для того чтобы добавить заказчика, перейдите в раздел и нажмите +Add.
Пример заполнения данных:
Name |
Group |
Description |
|---|---|---|
itkey |
Добавление нового заказчика в NetBox¶
Site Groups¶
Для того чтобы создать сайт-группу в NetBox, перейдите в раздел и нажмите +Add.
Пример заполнения данных:
Name |
Description |
|---|---|
Group1 |
Добавление новой сайт-группы в NetBox¶
Region¶
Для того чтобы добавить регион в NetBox, перейдите в раздел и нажмите +Add.
Пример заполнения данных:
Name |
Description |
|---|---|
BELARUS |
Добавление нового региона в NetBox¶
Site¶
Сайты — основная сущность в NetBox. Для того, чтобы добавить сайт, перейдите в раздел и нажмите +Add.
Пример заполнения данных:
Name |
Status |
Region |
Group |
Facility |
Tenant |
Description |
|---|---|---|---|---|---|---|
Site1 |
Active |
Group1 |
Russia |
itkey |
Добавление нового сайта в NetBox¶
Custom Fields¶
В разделе можно создавать дополнительные поля и задавать набор предопределенных параметров для каждого из них. Например, добавочные поля role и state.
Дополнительные поля создаются и конфигурируются в разделе .
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¶
IPAM¶
Раздел включает настройки для модулей IPAM и содержит всё, что относится к сетям.
В работе с NetBox желательно наличие как минимум трех сетей VLAN (для сайта и тенанта). В нашем случае это pxe, mgmt и external.
Для создания префикса для сети перейдите в раздел и нажмите +Add. Затем выберите сайт и VLAN для префикса. Созданный префикс появится в параметрах VLAN и IP-адреса.
Заполните этот раздел согласно данным заказчика:
VLAN
Prefix
Добавление нового префикса в NetBox¶
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¶
Device Role¶
Для того чтобы определить роли устройств, откройте раздел и выберите, что нужно установить. Обычно это 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¶
Device Type¶
Определите тип устройств в соответствующем разделе. Это шаблон, с которого создаётся новый сервер.
Для того чтобы добавить новый тип устройства, откройте раздел и нажмите +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¶
Config Contexts¶
Для того чтобы создавать специальный контекст, который отвечает за дополнительные настройки сети перейдите в раздел и нажмите +Add.
Пример заполнения данных:
Name |
Weight |
Description |
|---|---|---|
itkey |
1000 |
Добавление нового специального контекста в 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 пайплайна означает, что сервер успешно поднялся.
Настройки безопасности¶
Аутентификация и авторизация¶
NetBox поддерживает аутентификацию через LDAP, что позволяет интегрировать его с существующей системой управления доступом, например, Active Directory.
Поддержка SAML (Security Assertion Markup Language) для единого входа (Single Sign-On, SSO), что облегчает управление учетными записями пользователей.
Для работы с API можно использовать токены с разным уровнем доступа. Это позволяет контролировать, какие действия пользователь или приложение могут выполнять через API.
NetBox поддерживает аутентификацию через OAuth2 для более гибкого управления доступом.
Права доступа и группы¶
В NetBox можно настроить группы пользователей с различными правами доступа, что позволяет разделять доступ к разным разделам или функциям системы.
Права доступа можно настраивать на основе ролей (RBAC), что позволяет ограничивать доступ к функциям и объектам на основе должностных обязанностей или ролей в организации.
Шифрование¶
NetBox поддерживает шифрование данных через SSL/TLS при настройке с использованием веб-сервера. Это защищает данные при передаче между клиентом и сервером.
Таймаут веб-интерфейса¶
Для веб-интерфейса NetBox можно настроить интервал простоя, что позволяет принудительно завершать сеанс доступа при отсутствии активности со стороны пользователя.
Чтобы установить желаемое значение, перед развёртыванием необходимо изменить значение для параметра LOGIN_TIMEOUT в файле по пути installer/netbox-docker/configuration/configuration.py. Интервал выставляется в секундах.