diff --git a/CHANGELOG.md b/CHANGELOG.md index 990e42b9d..bdcf78aa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -83,13 +83,18 @@ For the exhaustive list of exposed metrics, visit the `/metrics` endpoint on you ## Changes -### New Dependency: Redis +### New Dependencies: Redis and django-rq [Redis](https://redis.io/) is an in-memory data store similar to memcached. While Redis has been an optional component of NetBox since the introduction of webhooks in version 2.4, it is now required to support NetBox's new caching -functionality (as well as other planned features). +functionality (as well as other planned features). Redis can be installed via your platform's package manager: for +example, `sudo apt-get install redis-server` on Ubuntu or `sudo yum install redis` on CentOS. -Redis is configured using a configuration setting similar to `DATABASE` in `configuration.py`: +[`django-rq`](https://github.com/rq/django-rq) is a Django integration for Redis-based queuing used for webhook +processing. As of v2.6 it is also a required dependency even if webhooks are not enabled. Installation of `django-rq` is +handled automatically during the NetBox upgrade process. + +The Redis database is configured using a configuration setting similar to `DATABASE` in `configuration.py`: ``` REDIS = { diff --git a/base_requirements.txt b/base_requirements.txt index e331143ff..f0f6cfe38 100644 --- a/base_requirements.txt +++ b/base_requirements.txt @@ -22,6 +22,10 @@ django-filter # https://github.com/django-mptt/django-mptt django-mptt +# Django integration for RQ (Reqis queuing) +# https://github.com/rq/django-rq +django-rq + # Prometheus metrics library for Django # https://github.com/korfuri/django-prometheus django-prometheus diff --git a/docs/additional-features/webhooks.md b/docs/additional-features/webhooks.md index 68f342e88..0e74640fa 100644 --- a/docs/additional-features/webhooks.md +++ b/docs/additional-features/webhooks.md @@ -4,14 +4,6 @@ A webhook defines an HTTP request that is sent to an external application when c An optional secret key can be configured for each webhook. This will append a `X-Hook-Signature` header to the request, consisting of a HMAC (SHA-512) hex digest of the request body using the secret as the key. This digest can be used by the receiver to authenticate the request's content. -## Installation - -If you are upgrading from a previous version of Netbox and want to enable the webhook feature, please follow the directions listed in the sections below. - -* [Install Redis server and djano-rq package](../installation/2-netbox/#install-python-packages) -* [Modify configuration to enable webhooks](../installation/2-netbox/#webhooks-configuration) -* [Create supervisord program to run the rqworker process](../installation/3-http-daemon/#supervisord-installation) - ## Requests The webhook POST request is structured as so (assuming `application/json` as the Content-Type): diff --git a/docs/installation/2-netbox.md b/docs/installation/2-netbox.md index 8941a4949..bd08c4f02 100644 --- a/docs/installation/2-netbox.md +++ b/docs/installation/2-netbox.md @@ -1,18 +1,18 @@ # Installation -This section of the documentation discusses installing and configuring the NetBox application. +This section of the documentation discusses installing and configuring the NetBox application. Begin by installing all system packages required by NetBox and its dependencies: **Ubuntu** ```no-highlight -# apt-get install -y python3 python3-pip python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev +# apt-get install -y python3 python3-pip python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev redis-server zlib1g-dev ``` **CentOS** ```no-highlight # yum install -y epel-release -# yum install -y gcc python36 python36-devel python36-setuptools libxml2-devel libxslt-devel libffi-devel graphviz openssl-devel redhat-rpm-config +# yum install -y gcc python36 python36-devel python36-setuptools libxml2-devel libxslt-devel libffi-devel graphviz openssl-devel redhat-rpm-config redis # easy_install-3.6 pip # ln -s /usr/bin/python36 /usr/bin/python3 ``` @@ -90,28 +90,6 @@ NetBox supports integration with the [NAPALM automation](https://napalm-automati # pip3 install napalm ``` -## Webhooks (Optional) - -[Webhooks](../data-model/extras/#webhooks) allow NetBox to integrate with external services by pushing out a notification each time a relevant object is created, updated, or deleted. Enabling the webhooks feature requires [Redis](https://redis.io/), a lightweight in-memory database. You may opt to install a Redis sevice locally (see below) or connect to an external one. - -**Ubuntu** - -```no-highlight -# apt-get install -y redis-server -``` - -**CentOS** - -```no-highlight -# yum install -y redis -``` - -Enabling webhooks also requires installing the [`django-rq`](https://github.com/ui/django-rq) package. This allows NetBox to use the Redis database as a queue for outgoing webhooks. - -```no-highlight -# pip3 install django-rq -``` - # Configuration Move into the NetBox configuration directory and make a copy of `configuration.example.py` named `configuration.py`. diff --git a/docs/installation/migrating-to-python3.md b/docs/installation/migrating-to-python3.md index 1d5ceb977..2c2c2b917 100644 --- a/docs/installation/migrating-to-python3.md +++ b/docs/installation/migrating-to-python3.md @@ -1,7 +1,7 @@ # Migration !!! warning - Beginning with v2.5, NetBox will no longer support Python 2. It is strongly recommended that you upgrade to Python 3 as soon as possible. + As of version 2.5, NetBox no longer supports Python 2. Python 3 is required to run any 2.5 release or later. ## Ubuntu @@ -36,9 +36,3 @@ If using LDAP authentication, install the `django-auth-ldap` package: ```no-highlight # pip3 install django-auth-ldap ``` - -If using Webhooks, install the `django-rq` package: - -```no-highlight -# pip3 install django-rq -``` diff --git a/requirements.txt b/requirements.txt index 948603c46..ccf2f475f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,7 @@ django-debug-toolbar==1.11 django-filter==2.1.0 django-mptt==0.9.1 django-prometheus==1.0.15 +django-rq==2.0 django-tables2==2.0.6 django-taggit==1.1.0 django-taggit-serializer==0.1.7