Перейти к содержанию

Системные параметры

BASE_PATH

По умолчанию: None

Базовый путь URL для использования при доступе к InfraVision. Не включайте схему или доменное имя. Например, если установлено по адресу https://example.com/netbox/, установите:

BASE_PATH = 'netbox/'

DATABASE_ROUTERS

По умолчанию: [] (пустой список)

Итерируемый объект маршрутизаторов базы данных для автоматического выбора соответствующей базы данных для запроса. Это полезно только при настройке нескольких баз данных.


DEFAULT_LANGUAGE

По умолчанию: en-us (американский английский)

Определяет предпочитаемый язык/локаль по умолчанию для запросов, которые не указывают его. (Этот параметр соответствует внутренней настройке Django LANGUAGE_CODE.)


DOCS_ROOT

По умолчанию: $INSTALL_ROOT/docs/

Путь в файловой системе к документации InfraVision. Используется при представлении контекстно-зависимой документации в веб-интерфейсе. По умолчанию это будет каталог docs/ в корневом каталоге установки InfraVision. (Установите в None, чтобы отключить встроенную документацию.)


EMAIL

Для отправки электронной почты InfraVision требуется настроенный почтовый сервер. Следующие элементы могут быть определены в параметре конфигурации EMAIL:

  • SERVER - Имя хоста или IP-адрес почтового сервера (используйте localhost при локальной работе)
  • PORT - TCP-порт для подключения (по умолчанию: 25)
  • USERNAME - Имя пользователя для аутентификации
  • PASSWORD - Пароль для аутентификации
  • USE_SSL - Использовать SSL при подключении к серверу (по умолчанию: False)
  • USE_TLS - Использовать TLS при подключении к серверу (по умолчанию: False)
  • SSL_CERTFILE - Путь к файлу SSL-сертификата в формате PEM (опционально)
  • SSL_KEYFILE - Путь к файлу закрытого ключа SSL в формате PEM (опционально)
  • TIMEOUT - Время ожидания соединения, в секундах (по умолчанию: 10)
  • FROM_EMAIL - Адрес отправителя для писем, отправляемых InfraVision

Примечание

Параметры USE_SSL и USE_TLS взаимоисключающие.

Электронная почта отправляется из InfraVision только для критических событий или если настроено для логирования. Если вы хотите протестировать конфигурацию почтового сервера, Django предоставляет удобную функцию send_mail(), доступную в оболочке InfraVision:

# python ./manage.py nbshell
>>> from django.core.mail import send_mail
>>> send_mail(
  'Test Email Subject',
  'Test Email Body',
  'noreply-netbox@example.com',
  ['users@example.com'],
  fail_silently=False
)

HOSTNAME

Информация

Этот параметр был введён в InfraVision v4.4.

По умолчанию: Системное имя хоста

Имя хоста, отображаемое в пользовательском интерфейсе для идентификации системы, на которой работает InfraVision. Если не определено, по умолчанию используется системное имя хоста, возвращаемое функцией Python platform.node().


HTTP_PROXIES

По умолчанию: None

Словарь HTTP-прокси для использования при исходящих запросах из InfraVision (например, при отправке webhook-запросов). Прокси должны быть указаны по схеме (HTTP и HTTPS) согласно документации библиотеки Python requests. Например:

HTTP_PROXIES = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}

Если требуется большая гибкость в определении того, какой прокси использовать для данного запроса, рассмотрите возможность реализации одного или нескольких пользовательских маршрутизаторов прокси через параметр PROXY_ROUTERS.


INTERNAL_IPS

По умолчанию: ('127.0.0.1', '::1')

Список IP-адресов, признаваемых внутренними для системы, используется для управления отображением отладочного вывода. Например, панель инструментов отладки будет видна только при доступе клиента к InfraVision с одного из перечисленных IP-адресов (и DEBUG установлен в True).


ISOLATED_DEPLOYMENT

По умолчанию: False

Установите этот параметр конфигурации в True для развёртываний InfraVision, которые не имеют доступа к Интернету. Это отключит различные функции, зависящие от доступа в Интернет.

Примечание

Если доступ в Интернет возможен через прокси, установите HTTP_PROXIES вместо этого.


JINJA2_FILTERS

По умолчанию: {}

Словарь пользовательских фильтров Jinja2, где ключ — это имя фильтра, а значение — вызываемый объект. Для получения дополнительной информации см. документацию Jinja2. Например:

def uppercase(x):
    return str(x).upper()

JINJA2_FILTERS = {
    'uppercase': uppercase,
}

LOGGING

По умолчанию все сообщения уровня INFO или выше будут записываться в консоль. Кроме того, если DEBUG равен False и настроен доступ к электронной почте, сообщения ERROR и CRITICAL будут отправлены по электронной почте пользователям, определённым в ADMINS.

Фреймворк Django, на котором работает InfraVision, позволяет настраивать формат и назначение логирования. Пожалуйста, обратитесь к документации Django по логированию для получения дополнительной информации о настройке этого параметра. Ниже приведён пример, который запишет все сообщения INFO и выше в локальный файл:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': '/var/log/netbox.log',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'INFO',
        },
    },
}

Доступные логгеры

  • netbox.<app>.<model> - Общая форма для сообщений журнала, специфичных для модели
  • netbox.auth.* - События аутентификации
  • netbox.api.views.* - Представления, обрабатывающие бизнес-логику для REST API
  • netbox.event_rules - Правила событий
  • netbox.jobs.* - Фоновые задачи
  • netbox.reports.* - Выполнение отчётов (module.name)
  • netbox.scripts.* - Выполнение пользовательских скриптов (module.name)
  • netbox.views.* - Представления, обрабатывающие бизнес-логику для веб-интерфейса

MEDIA_ROOT

По умолчанию: $INSTALL_ROOT/netbox/media/

Путь к файловой системе, где хранятся медиафайлы (такие как вложения изображений). По умолчанию это каталог netbox/media/ в базовом каталоге установки InfraVision.


PROXY_ROUTERS

По умолчанию: ["utilities.proxy.DefaultProxyRouter"]

Список Python-классов, ответственных за определение того, какой прокси-сервер(ы) использовать для исходящих HTTP-запросов. Каждый элемент в списке может быть самим классом или путём с точками к классу.

Метод route() каждого класса должен возвращать словарь кандидатов прокси, упорядоченных по протоколу (например, http и/или https), или None, если жизнеспособный прокси не может быть определён. Класс по умолчанию, DefaultProxyRouter, просто возвращает содержимое HTTP_PROXIES.


REPORTS_ROOT

По умолчанию: $INSTALL_ROOT/netbox/reports/

Путь к файловой системе, где будут храниться пользовательские отчёты. По умолчанию это каталог netbox/reports/ в базовом каталоге установки InfraVision.


SCRIPTS_ROOT

По умолчанию: $INSTALL_ROOT/netbox/scripts/

Путь к файловой системе, где будут храниться пользовательские скрипты. По умолчанию это каталог netbox/scripts/ в базовом каталоге установки InfraVision.


SEARCH_BACKEND

По умолчанию: 'netbox.search.backends.CachedValueSearchBackend'

Путь с точками к желаемому классу бэкенда поиска. CachedValueSearchBackend в настоящее время является единственным бэкендом поиска, предоставляемым в InfraVision, однако этот параметр может быть использован для включения пользовательского бэкенда.


STORAGES

Бэкенд хранилища для обработки загруженных файлов, таких как вложения изображений и пользовательские скрипты. InfraVision интегрируется с библиотеками django-storages и django-storage-swift, которые предоставляют бэкенды для нескольких популярных сервисов файлового хранения. Если не настроено, будет использоваться локальное хранилище файловой системы.

По умолчанию используется следующая конфигурация:

STORAGES = {
    "default": {
        "BACKEND": "django.core.files.storage.FileSystemStorage",
    },
    "staticfiles": {
        "BACKEND": "django.contrib.staticfiles.storage.StaticFilesStorage",
    },
    "scripts": {
        "BACKEND": "extras.storage.ScriptFileSystemStorage",
    },
}

В словаре STORAGES "default" используется для загрузки изображений, "staticfiles" — для статических файлов, а "scripts" — для пользовательских скриптов.

При использовании удалённого хранилища, такого как S3, определите конфигурацию как STORAGES[key]["OPTIONS"] для каждого элемента хранилища по мере необходимости. Например:

STORAGES = {
    "scripts": {
        "BACKEND": "storages.backends.s3boto3.S3Boto3Storage",
        "OPTIONS": {
            'access_key': 'ключ доступа',
            'secret_key': 'секретный ключ',
        }
    },
}

Конкретные настройки конфигурации для каждого бэкенда хранилища можно найти в документации django-storages.

Примечание

Любые ключи, определённые в параметре конфигурации STORAGES, заменяют ключи в конфигурации по умолчанию. Необходимо определять ключи в STORAGES только для конкретного бэкенда(ов), который вы хотите настроить.

Переменные окружения и сторонние библиотеки

InfraVision использует явный подход к конфигурации Python, а не автоматическое определение переменных окружения. Хотя это обеспечивает чёткое управление конфигурацией и возможности контроля версий, это влияет на работу некоторых сторонних библиотек, таких как django-storages, в контексте InfraVision.

Многие библиотеки Django (включая django-storages) ожидают автоматического определения переменных окружения, таких как AWS_STORAGE_BUCKET_NAME или AWS_S3_ACCESS_KEY_ID. Однако обработка конфигурации InfraVision предотвращает работу этого автоматического определения, как задокументировано в некоторых из этих библиотек.

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

import os

STORAGES = {
    'default': {
        'BACKEND': 'storages.backends.s3.S3Storage',
        'OPTIONS': {
            'bucket_name': os.environ.get('AWS_STORAGE_BUCKET_NAME'),
            'access_key': os.environ.get('AWS_S3_ACCESS_KEY_ID'),
            'secret_key': os.environ.get('AWS_S3_SECRET_ACCESS_KEY'),
            'endpoint_url': os.environ.get('AWS_S3_ENDPOINT_URL'),
            'location': 'media/',
        }
    },
    'staticfiles': {
        'BACKEND': 'storages.backends.s3.S3Storage',
        'OPTIONS': {
            'bucket_name': os.environ.get('AWS_STORAGE_BUCKET_NAME'),
            'access_key': os.environ.get('AWS_S3_ACCESS_KEY_ID'),
            'secret_key': os.environ.get('AWS_S3_SECRET_ACCESS_KEY'),
            'endpoint_url': os.environ.get('AWS_S3_ENDPOINT_URL'),
            'location': 'static/',
        }
    },
}

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

Внимание

Простая установка переменных окружения, таких как AWS_STORAGE_BUCKET_NAME, без их явного чтения в вашей конфигурации не сработает. Переменные должны быть прочитаны с помощью os.environ.get() в вашем файле configuration.py.


TIME_ZONE

По умолчанию: "UTC"

Часовой пояс, который InfraVision будет использовать при работе с датами и временем. Рекомендуется использовать время UTC, если у вас нет конкретной необходимости использовать локальный часовой пояс. Пожалуйста, см. список доступных часовых поясов.


TRANSLATION_ENABLED

По умолчанию: True

Включает перевод языка для пользовательского интерфейса. (Этот параметр соответствует настройке Django USE_I18N.)