Обязательные параметры конфигурации
ALLOWED_HOSTS
Это список допустимых полных доменных имён (FQDN) и/или IP-адресов, которые могут использоваться для доступа к сервису InfraVision. Обычно это то же самое, что и имя хоста сервера InfraVision, но может отличаться; например, при использовании обратного прокси, обслуживающего веб-сайт InfraVision под другим FQDN, чем имя хоста сервера InfraVision. Чтобы защититься от атак на HTTP-заголовок Host, InfraVision не разрешит доступ к серверу через любые другие имена хостов (или IP-адреса).
Примечание
Этот параметр всегда должен быть определён как список или кортеж, даже если предоставлено только одно значение.
Значение этого параметра также используется для установки CSRF_TRUSTED_ORIGINS, которое ограничивает POST-запросы тем же набором хостов (подробнее об этом здесь). Имейте в виду, что InfraVision по умолчанию устанавливает USE_X_FORWARDED_HOST в True, что означает, что если вы используете обратный прокси, именно FQDN, используемое для доступа к этому обратному прокси, должно быть в этом списке (подробнее об этом здесь).
Пример:
ALLOWED_HOSTS = ['infravision.example.com', '192.0.2.123']
Если вы ещё не уверены, какое доменное имя и/или IP-адрес будет у установки InfraVision, и готовы принять связанные с этим риски, вы можете установить подстановочный знак (звёздочку), чтобы разрешить все значения хоста:
ALLOWED_HOSTS = ['*']
DATABASE
Внимание
Параметр конфигурации DATABASE устарел и будет удалён в будущем релизе. Пользователям рекомендуется перейти на новый параметр DATABASES (множественное число), который позволяет настраивать несколько баз данных.
См. конфигурацию DATABASES ниже для использования.
DATABASES
InfraVision требует доступа к сервису базы данных PostgreSQL 14 или новее для хранения данных. Этот сервис может работать локально на сервере InfraVision или на удалённой системе. Базы данных определяются как именованные словари:
DATABASES = {
'default': {...},
'external1': {...},
'external2': {...},
}
Для самого InfraVision требуется только определение базы данных default. Однако некоторые плагины могут требовать настройки дополнительных баз данных. (Рассмотрите также настройку параметра DATABASE_ROUTERS при использовании нескольких баз данных.)
Для каждой базы данных должны быть определены следующие параметры:
NAME- Имя базы данныхUSER- Имя пользователя PostgreSQLPASSWORD- Пароль PostgreSQLHOST- Имя или IP-адрес сервера базы данных (используйтеlocalhostпри локальной работе)PORT- TCP-порт сервиса PostgreSQL; оставьте пустым для порта по умолчанию (TCP/5432)CONN_MAX_AGE- Время жизни постоянного соединения с базой данных, в секундах (по умолчанию 300)ENGINE- Бэкенд базы данных; должен быть совместимым с PostgreSQL бэкендом (например,django.db.backends.postgresql)
Пример:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'name', # Имя базы данных
'USER': 'user', # Имя пользователя PostgreSQL
'PASSWORD': 'J5brHrAXFLQSif0K', # Пароль PostgreSQL
'HOST': 'localhost', # Сервер базы данных
'PORT': '', # Порт базы данных (оставьте пустым для порта по умолчанию)
'CONN_MAX_AGE': 300, # Максимальное время жизни соединения с БД
}
}
Примечание
InfraVision поддерживает все параметры базы данных PostgreSQL, поддерживаемые базовым фреймворком Django. Полный список доступных параметров см. в документации Django.
Внимание
Параметр ENGINE должен указывать совместимый с PostgreSQL бэкенд базы данных. Если не определён, будет использоваться движок по умолчанию django.db.backends.postgresql.
REDIS
Redis — это легковесное хранилище данных в памяти, похожее на memcached. InfraVision использует Redis для очереди фоновых задач и других функций.
Redis настраивается с использованием параметра конфигурации, аналогичного DATABASE, и эти настройки одинаковы для обоих подразделов tasks и caching:
HOST- Имя или IP-адрес сервера Redis (используйтеlocalhostпри локальной работе)PORT- TCP-порт сервиса Redis; оставьте пустым для порта по умолчанию (6379)USERNAME- Имя пользователя Redis (если установлено)PASSWORD- Пароль Redis (если установлен)DATABASE- Числовой идентификатор базы данныхSSL- Использовать SSL-соединение с RedisINSECURE_SKIP_TLS_VERIFY- Установите вTrue, чтобы отключить проверку TLS-сертификата (не рекомендуется)
Ниже приведён пример конфигурации:
REDIS = {
'tasks': {
'HOST': 'redis.example.com',
'PORT': 1234,
'USERNAME': 'netbox',
'PASSWORD': 'foobar',
'DATABASE': 0,
'SSL': False,
},
'caching': {
'HOST': 'localhost',
'PORT': 6379,
'USERNAME': '',
'PASSWORD': '',
'DATABASE': 1,
'SSL': False,
}
}
Внимание
Настоятельно рекомендуется держать базы данных задач и кэша отдельно. Использование одного и того же номера базы данных на одном экземпляре Redis для обоих может привести к потере фоновых задач в очереди при событиях очистки кэша.
Поддержка UNIX-сокетов
Redis также можно настроить, указав полный URL вместо отдельных компонентов. Этот подход поддерживает использование соединения через UNIX-сокет. Например:
REDIS = {
'tasks': {
'URL': 'unix:///run/redis-netbox/redis.sock?db=0'
},
'caching': {
'URL': 'unix:///run/redis-netbox/redis.sock?db=1'
},
}
Использование Redis Sentinel
Если вы используете Redis Sentinel для целей высокой доступности, требуется минимальная настройка для перевода InfraVision на его распознавание. Это требует удаления ключей HOST и PORT из вышеприведённого примера и добавления трёх новых ключей.
SENTINELS: Список кортежей или кортеж кортежей, где каждый внутренний кортеж содержит имя или IP-адрес сервера Redis и порт для каждого экземпляра sentinel для подключенияSENTINEL_SERVICE: Имя master-сервиса для подключенияSENTINEL_TIMEOUT: Таймаут соединения, в секундах
Пример:
REDIS = {
'tasks': {
'SENTINELS': [('mysentinel.redis.example.com', 6379)],
'SENTINEL_SERVICE': 'netbox',
'SENTINEL_TIMEOUT': 10,
'PASSWORD': '',
'DATABASE': 0,
'SSL': False,
},
'caching': {
'SENTINELS': [
('mysentinel.redis.example.com', 6379),
('othersentinel.redis.example.com', 6379)
],
'SENTINEL_SERVICE': 'netbox',
'PASSWORD': '',
'DATABASE': 1,
'SSL': False,
}
}
Примечание
Допустимо использовать Sentinel только для одной базы данных, а не для другой.
SECRET_KEY
Это секретная псевдослучайная строка, используемая для создания новых криптографических хешей для паролей и HTTP-куки. Ключ, определённый здесь, не должен передаваться за пределы файла конфигурации. SECRET_KEY может быть изменён в любое время без влияния на сохранённые данные, однако имейте в виду, что это приведёт к аннулированию всех существующих пользовательских сессий. Развёртывания InfraVision, состоящие из нескольких узлов, должны иметь одинаковый секретный ключ, настроенный на всех узлах.
SECRET_KEY должен быть длиной не менее 50 символов и содержать комбинацию букв, цифр и символов. Скрипт, расположенный в $INSTALL_ROOT/netbox/generate_secret_key.py, может быть использован для генерации подходящего ключа. Обратите внимание, что этот ключ не используется напрямую для хеширования паролей пользователей или для зашифрованного хранения секретных данных в InfraVision.