Working implementation of webhooks using new 'redis' container
This commit is contained in:
parent
6b5a4cf1db
commit
b88974ef9f
15
Dockerfile
15
Dockerfile
@ -13,7 +13,8 @@ RUN apk add --no-cache \
|
|||||||
libxslt-dev \
|
libxslt-dev \
|
||||||
openldap-dev \
|
openldap-dev \
|
||||||
postgresql-dev \
|
postgresql-dev \
|
||||||
wget
|
wget \
|
||||||
|
supervisor
|
||||||
|
|
||||||
RUN pip install \
|
RUN pip install \
|
||||||
# gunicorn is used for launching netbox
|
# gunicorn is used for launching netbox
|
||||||
@ -21,7 +22,14 @@ RUN pip install \
|
|||||||
# napalm is used for gathering information from network devices
|
# napalm is used for gathering information from network devices
|
||||||
napalm \
|
napalm \
|
||||||
# ruamel is used in startup_scripts
|
# ruamel is used in startup_scripts
|
||||||
ruamel.yaml
|
ruamel.yaml \
|
||||||
|
# if the Django package is not installed here to this pinned version
|
||||||
|
# django-rq will install the latest version (currently 2.1)
|
||||||
|
# then, when the requirements.txt of netbox is run, it will be
|
||||||
|
# uninstalled because it currently causes problems with netbox
|
||||||
|
Django==2.0.8 \
|
||||||
|
# django-rq is used for webhooks
|
||||||
|
django-rq
|
||||||
|
|
||||||
WORKDIR /opt
|
WORKDIR /opt
|
||||||
|
|
||||||
@ -40,6 +48,7 @@ COPY docker/docker-entrypoint.sh docker-entrypoint.sh
|
|||||||
COPY startup_scripts/ /opt/netbox/startup_scripts/
|
COPY startup_scripts/ /opt/netbox/startup_scripts/
|
||||||
COPY initializers/ /opt/netbox/initializers/
|
COPY initializers/ /opt/netbox/initializers/
|
||||||
COPY configuration/configuration.py /etc/netbox/config/configuration.py
|
COPY configuration/configuration.py /etc/netbox/config/configuration.py
|
||||||
|
COPY configuration/supervisord.conf /etc/supervisord.conf
|
||||||
|
|
||||||
WORKDIR /opt/netbox/netbox
|
WORKDIR /opt/netbox/netbox
|
||||||
|
|
||||||
@ -47,7 +56,7 @@ ENTRYPOINT [ "/opt/netbox/docker-entrypoint.sh" ]
|
|||||||
|
|
||||||
VOLUME ["/etc/netbox-nginx/"]
|
VOLUME ["/etc/netbox-nginx/"]
|
||||||
|
|
||||||
CMD ["gunicorn", "-c /etc/netbox/config/gunicorn_config.py", "netbox.wsgi"]
|
CMD ["supervisord", "-c /etc/supervisord.conf"]
|
||||||
|
|
||||||
LABEL SRC_URL="$URL"
|
LABEL SRC_URL="$URL"
|
||||||
|
|
||||||
|
@ -139,6 +139,19 @@ PAGINATE_COUNT = int(os.environ.get('PAGINATE_COUNT', 50))
|
|||||||
# prefer IPv4 instead.
|
# prefer IPv4 instead.
|
||||||
PREFER_IPV4 = os.environ.get('PREFER_IPV4', 'False').lower() == 'true'
|
PREFER_IPV4 = os.environ.get('PREFER_IPV4', 'False').lower() == 'true'
|
||||||
|
|
||||||
|
# The Webhook event backend is disabled by default. Set this to True to enable it. Note that this requires a Redis
|
||||||
|
# database be configured and accessible by NetBox (see `REDIS` below).
|
||||||
|
WEBHOOKS_ENABLED = os.environ.get('WEBHOOKS_ENABLED', 'True').lower() == 'true'
|
||||||
|
|
||||||
|
# Redis database settings (optional). A Redis database is required only if the webhooks backend is enabled.
|
||||||
|
REDIS = {
|
||||||
|
'HOST': os.environ.get('REDIS_HOST', 'localhost'),
|
||||||
|
'PORT': os.environ.get('REDIS_PORT', '6379'),
|
||||||
|
'PASSWORD': os.environ.get('REDIS_PASSWORD', ''),
|
||||||
|
'DATABASE': os.environ.get('REDIS_DATABASE', '0'),
|
||||||
|
'DEFAULT_TIMEOUT': os.environ.get('REDIS_TIMEOUT', '300'),
|
||||||
|
}
|
||||||
|
|
||||||
# The file path where custom reports will be stored. A trailing slash is not needed. Note that the default value of
|
# The file path where custom reports will be stored. A trailing slash is not needed. Note that the default value of
|
||||||
# this setting is derived from the installed location.
|
# this setting is derived from the installed location.
|
||||||
REPORTS_ROOT = os.environ.get('REPORTS_ROOT', '/etc/netbox/reports')
|
REPORTS_ROOT = os.environ.get('REPORTS_ROOT', '/etc/netbox/reports')
|
||||||
|
16
configuration/supervisord.conf
Normal file
16
configuration/supervisord.conf
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
[supervisord]
|
||||||
|
nodaemon=true
|
||||||
|
|
||||||
|
[supervisorctl]
|
||||||
|
|
||||||
|
[program:netbox]
|
||||||
|
command = gunicorn -c /etc/netbox/config/gunicorn_config.py netbox.wsgi
|
||||||
|
directory = /opt/netbox/netbox/
|
||||||
|
stdout_logfile=/dev/stdout
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
user = nobody
|
||||||
|
|
||||||
|
[program:netbox-rqworker]
|
||||||
|
command = python3 /opt/netbox/netbox/manage.py rqworker
|
||||||
|
directory = /opt/netbox/netbox/
|
||||||
|
user = nobody
|
@ -8,6 +8,7 @@ services:
|
|||||||
image: ninech/netbox:${VERSION-latest}
|
image: ninech/netbox:${VERSION-latest}
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
|
- redis
|
||||||
env_file: netbox.env
|
env_file: netbox.env
|
||||||
volumes:
|
volumes:
|
||||||
- ./startup_scripts:/opt/netbox/startup_scripts:ro
|
- ./startup_scripts:/opt/netbox/startup_scripts:ro
|
||||||
@ -32,6 +33,21 @@ services:
|
|||||||
env_file: postgres.env
|
env_file: postgres.env
|
||||||
volumes:
|
volumes:
|
||||||
- netbox-postgres-data:/var/lib/postgresql/data
|
- netbox-postgres-data:/var/lib/postgresql/data
|
||||||
|
redis:
|
||||||
|
image: redis:4-alpine
|
||||||
|
environment:
|
||||||
|
REDIS_PASS_FILE: /run/secrets/redis-pass
|
||||||
|
command: [
|
||||||
|
"sh", "-c",
|
||||||
|
'
|
||||||
|
docker-entrypoint.sh
|
||||||
|
--appendonly yes
|
||||||
|
--requirepass "$$(cat $$REDIS_PASS_FILE)"
|
||||||
|
'
|
||||||
|
]
|
||||||
|
volumes:
|
||||||
|
- ./redis-pass:/run/secrets/redis-pass
|
||||||
|
- netbox-redis-data:/data
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
netbox-static-files:
|
netbox-static-files:
|
||||||
@ -44,3 +60,5 @@ volumes:
|
|||||||
driver: local
|
driver: local
|
||||||
netbox-postgres-data:
|
netbox-postgres-data:
|
||||||
driver: local
|
driver: local
|
||||||
|
netbox-redis-data:
|
||||||
|
driver: local
|
||||||
|
@ -13,6 +13,8 @@ NAPALM_USERNAME=
|
|||||||
NAPALM_PASSWORD=
|
NAPALM_PASSWORD=
|
||||||
NAPALM_TIMEOUT=10
|
NAPALM_TIMEOUT=10
|
||||||
MAX_PAGE_SIZE=0
|
MAX_PAGE_SIZE=0
|
||||||
|
REDIS_HOST=redis
|
||||||
|
REDIS_PASSWORD=J5brHrAXFLQSif0K
|
||||||
SECRET_KEY=r8OwDznj!!dci#P9ghmRfdu1Ysxm0AiPeDCQhKE+N_rClfWNj
|
SECRET_KEY=r8OwDznj!!dci#P9ghmRfdu1Ysxm0AiPeDCQhKE+N_rClfWNj
|
||||||
SUPERUSER_NAME=admin
|
SUPERUSER_NAME=admin
|
||||||
SUPERUSER_EMAIL=admin@example.com
|
SUPERUSER_EMAIL=admin@example.com
|
||||||
|
1
redis-pass
Normal file
1
redis-pass
Normal file
@ -0,0 +1 @@
|
|||||||
|
J5brHrAXFLQSif0K
|
Loading…
Reference in New Issue
Block a user