NetBox ====== NetBox представляет собой веб-интерфейс для хранения и поддержки информации о серверах, сетевых интерфейсах и других данных, которые используются при автоматизированной установке и настройке операционной системы для серверов. NetBox — компонент в составе инсталлятора, который используется для хранения и настройки серверов и их сетей для сервиса Baremetal. Данный сервис не является обязательным для использования, однако он включен в базовую последовательность установки продукта KeyStack. Интерфейс NetBox ---------------- Пользовательский веб-интерфейс доступен по адресу \https://netbox.. .. figure:: Media/image0.png :alt: IMG0-interface | Навигация по основным разделам веб-интерфейса осуществляется с помощью меню слева. | В этом меню доступны следующие разделы: - Organization - Devices - Connections - Wireless - IPAM - VPN - Virtualization - Circuits - Power - Provisioning - Customization - Operations - Admin | Стартовая страница отображает разделы, выбранные и настроенные самостоятельно. | В примере выше присутствуют следующие разделы: - Organization - Circuits - Virtualization - IPAM - DCIM - Welcome (приветственный раздел) - NetBox News (новости NetBox) - Change Log (логи) Преимущества NetBox ------------------- **Логирование** | В NetBox можно отслеживать внесенные изменения — например, дату, время и автора изменений. Для этого необходимо перейти в раздел **Change Log** по следующему пути: Operations → Logging → Change Log. | Для удобства можно дополнительно настроить интерфейс, чтобы данный раздел сразу отображается на основном экране. .. figure:: Media/image1.png :alt: IMG1-changelog **Массовое редактирование** Редактировать, переименовывать и удалять можно целую группу сущностей, а не каждую из них по отдельности. Для этого необходимо выделить выбранные сущности в соответствующей таблице и нажать кнопку **Edit Selected** рядом с ними. Другие кнопки — **Rename** и **Delete Selected** — позволяют, соответственно, переименовать и удалять выбранные элементы. .. figure:: Media/image2.png :alt: IMG2-mass_edit Базовая настройка NetBox ------------------------ Для базовой настройки сервиса следует заполнить параметры в разделах **Organization**, **Customization**, **IPAM**, **Provisioning** и **Devices**. Organization ~~~~~~~~~~~~ | В первую очередь необходимо настроить параметры в разделах **Sites** и **Tenancy**. | Последовательность создания сущностей для работы с NetBox такая: сайт-группа → регион → сайт. | Если есть владелец ресурса или клиент, его следует указать в разделе **Tenancy**. В данном случае — ``itkey``. Выполните следующие действия: 1. Откройте разделы в следующем порядке: Organization → Tenancy → Tenant. Добавьте тенанта. |IMG3-tenant| 2. Перейдите в Organization → Sites → Site Groups и создайте новую сайт-группу. 3. Добавьте регион в Organization → Sites → Regions. 4. Создайте сайт в Organization → Sites → Sites. Сайты здесь — основная сущность. При создании сайта выберите, к какому региону он относится, в какой группе состоит и какому пользователю принадлежит. |IMG4-site| 5. Данные в разделе **Contact Info** заполните по необходимости: это необязательная информация, которая никак не влияет на работу сервиса. Так вы добавите тенанта и сайт-группу по имени клиента. Customization ~~~~~~~~~~~~~ | В разделе **Customization** можно настраивать сущности, которые нужны для сервиса. Важнейший элемент в этом разделе — теги, поскольку сбор всей информации происходит по ним. По тегам ищутся сервера, которые нужно раздеплоить. | По тегам можно также фильтровать разные сущности, например, девайсы. Теги можно создавать и редактировать в Customization → Customization → Tags. .. figure:: Media/image5.png :alt: IMG5-tag В разделе **Custom Fields** можно создавать дополнительные поля и задавать набор предопределенных параметров для каждого из них. Пример таких добавочных полей — два поля: role и state. Дополнительные поля создаются и конфигурируются в Customization → Customization → Custom Fields. IPAM ~~~~ | Раздел **IPAM** включает настройки для модулей IPAM и содержит все, что относится к сетям. В нашем случае используются сети VLAN, поэтому VLANs — самые главные сущности в разделе по сетям. | На основе данных, заполненных для VLAN, префиксы и IP-адресы заполняются автоматически. Эти параметры необходимы главным образом при планировании. В работе с NetBox желательно наличие как минимум трех VLANs (для сайта и тенанта). В нашем случае это ``pxe``, ``mgmt`` и ``external``. Чтобы добавить сеть, выполните следующие действия: 1. Создайте префикс для сети в разделе IPAM → Prefixes → Prefixes. Такой префикс используется для PCI-сети, которая необходима для установки Baremetal-серверов. 2. Выберите сайт и VLAN для префикса. Созданный префикс появится в параметрах VLAN и IP-адреса. .. figure:: Media/image6.png :alt: IMG6-vlan Provisioning ~~~~~~~~~~~~ В разделе **Config Contexts** можно создавать специальный контекст (config context), который отвечает за дополнительные настройки сети. При создании такого контекста можно копировать информацию из другого контекста. Заполняются такие поля, как Regions, Sites, Tenants и Tags (последний является обязательным параметром). Этот раздел доступен по следующему адресу: Provisioning → Configurations → Config Contexts. .. figure:: Media/image7.png :alt: IMG7-config_context Devices ~~~~~~~ **Devices** является важным разделом в работе с NetBox, поскольку здесь настраиваются параметры серверов. Создание сервера ^^^^^^^^^^^^^^^^ Если в NetBox еще не заполнены данные по серверу, нужно выполнить следующие действия: 1. Перейдите в Devices → Device Types → Manufacturers и заполните там данные, т.е. марку сервера. Если марка отсутствует, ее необходимо добавить. 2. В Device Types → Device Roles выберите, что именно нужно установить. Обычно это Server. 3. Можно добавить новый device type в соответствующем разделе. Это шаблон, с которого создается новый сервер. 4. Создайте новый сервер в разделе **Devices**. Заполните следующие параметры: 1. В **Device** — Name, Device role (Server) и Tags; 2. В **Hardware** — Device type; 3. В **Location** — Site; 4. В **Custom Fields** — role и state. Дополнительно можно заполнить следующее: - **Tenancy** — Tenant; - **Local Context Config Data**. .. figure:: Media/image8.png :alt: IMG8-device | Созданный сервер можно посмотреть в разделе **Devices**. | Содержимое тегов отображается на вкладке **Config Context** в этом же разделе. | На вкладке **Interfaces** можно добавить новый IP-адрес для сервера, нажав ``+`` в соответствующей строке в таблице. Однако такой IP-адрес не будет отображаться в разделе IPAM слева. .. figure:: Media/image9.png :alt: IMG9-server Создание интерфейса ^^^^^^^^^^^^^^^^^^^ Новый интерфейс для сервера можно создать несколькими способами: - Devices → Devices → Interfaces → Add Interface; - Devices → Devices → Add Components → Interfaces. Для интерфейса нужно указать следующие данные: 1. В **Interface** — Device, Name, Type; 2. В **Operation** — MTU; 3. В **Related Interfaces** — Parent interface; 4. В **802.1Q Switching** — 802.1Q Mode и Untagged VLAN. .. figure:: Media/image10.png :alt: IMG10-interface Связанные пайплайны для Baremetal ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Когда в GitLab настраивается пайплайн, эти параметры соответствуют следующим данным из NetBox: 1. TARGET_ROLE = role (``compute``); 2. TARGET_CLOUD = tag (``itkey``); 3. TARGET_NODE = node (``name``); 4. IRONIC_SSH_KEY = SSH-key; 5. IRONIC_IMAGE_URL = Image (адрес образа). После этого нужно запустить пайплайн, нажав "Run pipeline". Статус Passed пайплайна означает, что сервер успешно поднялся. .. figure:: Media/image11.png :alt: IMG11-pipeline .. |IMG3-tenant| image:: Media/image3.png .. |IMG4-site| image:: Media/image4.png Настройки безопасности ---------------------- Аутентификация и авторизация ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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``. Интервал выставляется в секундах. Данный раздел в дальнейшем будет дополняться.