mirror of
https://github.com/netbox-community/netbox.git
synced 2026-03-21 20:18:38 -06:00
Allow REDIS KWARGS to be set in configuration.py (#21377)
CI / build (20.x, 3.12) (push) Failing after 12s
CI / build (20.x, 3.13) (push) Failing after 12s
CI / build (20.x, 3.14) (push) Failing after 12s
CodeQL / Analyze (actions) (push) Failing after 44s
CodeQL / Analyze (javascript-typescript) (push) Failing after 57s
CodeQL / Analyze (python) (push) Failing after 1m5s
CI / build (20.x, 3.12) (push) Failing after 12s
CI / build (20.x, 3.13) (push) Failing after 12s
CI / build (20.x, 3.14) (push) Failing after 12s
CodeQL / Analyze (actions) (push) Failing after 44s
CodeQL / Analyze (javascript-typescript) (push) Failing after 57s
CodeQL / Analyze (python) (push) Failing after 1m5s
* Allow REDIS KWARGS to be set in configuration.py * cleanup * cleanup * cleanup * Update netbox/netbox/settings.py Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com> * Update netbox/netbox/settings.py Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com> * document in REDIS config section --------- Co-authored-by: Jeremy Stretch <jstretch@netboxlabs.com>
This commit is contained in:
@@ -200,6 +200,48 @@ REDIS = {
|
|||||||
!!! note
|
!!! note
|
||||||
It is permissible to use Sentinel for only one database and not the other.
|
It is permissible to use Sentinel for only one database and not the other.
|
||||||
|
|
||||||
|
### SSL Configuration
|
||||||
|
|
||||||
|
If you need to configure SSL/TLS for Redis beyond the basic `SSL`, `CA_CERT_PATH`, and `INSECURE_SKIP_TLS_VERIFY` options (for example, client certificates, a specific TLS version, or custom ciphers), you can pass additional parameters via the `KWARGS` key in either the `tasks` or `caching` subsection.
|
||||||
|
|
||||||
|
NetBox already maps `CA_CERT_PATH` to `ssl_ca_certs` and (for caching) `INSECURE_SKIP_TLS_VERIFY` to `ssl_cert_reqs`; only add `KWARGS` when you need to override or extend those settings (for example, to supply client certificates or restrict TLS version or ciphers).
|
||||||
|
|
||||||
|
* `KWARGS` - Optional dictionary of additional SSL/TLS (or other) parameters passed to the Redis client. These are passed directly to the underlying Redis client: for `tasks` to [redis-py](https://redis-py.readthedocs.io/en/stable/connections.html), and for `caching` to the [django-redis](https://github.com/jazzband/django-redis#configure-as-cache-backend) connection pool.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```python
|
||||||
|
REDIS = {
|
||||||
|
'tasks': {
|
||||||
|
'HOST': 'redis.example.com',
|
||||||
|
'PORT': 1234,
|
||||||
|
'SSL': True,
|
||||||
|
'CA_CERT_PATH': '/etc/ssl/certs/ca.crt',
|
||||||
|
'KWARGS': {
|
||||||
|
'ssl_certfile': '/path/to/client-cert.pem',
|
||||||
|
'ssl_keyfile': '/path/to/client-key.pem',
|
||||||
|
'ssl_min_version': ssl.TLSVersion.TLSv1_2,
|
||||||
|
'ssl_ciphers': 'HIGH:!aNULL',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
'caching': {
|
||||||
|
'HOST': 'redis.example.com',
|
||||||
|
'PORT': 1234,
|
||||||
|
'SSL': True,
|
||||||
|
'CA_CERT_PATH': '/etc/ssl/certs/ca.crt',
|
||||||
|
'KWARGS': {
|
||||||
|
'ssl_certfile': '/path/to/client-cert.pem',
|
||||||
|
'ssl_keyfile': '/path/to/client-key.pem',
|
||||||
|
'ssl_min_version': ssl.TLSVersion.TLSv1_2,
|
||||||
|
'ssl_ciphers': 'HIGH:!aNULL',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
If you use `ssl.TLSVersion` in your configuration (e.g. `ssl_min_version`), add `import ssl` at the top of your configuration file.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## SECRET_KEY
|
## SECRET_KEY
|
||||||
|
|||||||
@@ -408,6 +408,11 @@ if CACHING_REDIS_CA_CERT_PATH:
|
|||||||
CACHES['default']['OPTIONS'].setdefault('CONNECTION_POOL_KWARGS', {})
|
CACHES['default']['OPTIONS'].setdefault('CONNECTION_POOL_KWARGS', {})
|
||||||
CACHES['default']['OPTIONS']['CONNECTION_POOL_KWARGS']['ssl_ca_certs'] = CACHING_REDIS_CA_CERT_PATH
|
CACHES['default']['OPTIONS']['CONNECTION_POOL_KWARGS']['ssl_ca_certs'] = CACHING_REDIS_CA_CERT_PATH
|
||||||
|
|
||||||
|
# Merge in KWARGS for additional parameters
|
||||||
|
if caching_redis_kwargs := REDIS['caching'].get('KWARGS'):
|
||||||
|
CACHES['default']['OPTIONS'].setdefault('CONNECTION_POOL_KWARGS', {})
|
||||||
|
CACHES['default']['OPTIONS']['CONNECTION_POOL_KWARGS'].update(caching_redis_kwargs)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Sessions
|
# Sessions
|
||||||
@@ -817,6 +822,11 @@ if TASKS_REDIS_CA_CERT_PATH:
|
|||||||
RQ_PARAMS.setdefault('REDIS_CLIENT_KWARGS', {})
|
RQ_PARAMS.setdefault('REDIS_CLIENT_KWARGS', {})
|
||||||
RQ_PARAMS['REDIS_CLIENT_KWARGS']['ssl_ca_certs'] = TASKS_REDIS_CA_CERT_PATH
|
RQ_PARAMS['REDIS_CLIENT_KWARGS']['ssl_ca_certs'] = TASKS_REDIS_CA_CERT_PATH
|
||||||
|
|
||||||
|
# Merge in KWARGS for additional parameters
|
||||||
|
if tasks_redis_kwargs := TASKS_REDIS.get('KWARGS'):
|
||||||
|
RQ_PARAMS.setdefault('REDIS_CLIENT_KWARGS', {})
|
||||||
|
RQ_PARAMS['REDIS_CLIENT_KWARGS'].update(tasks_redis_kwargs)
|
||||||
|
|
||||||
# Define named RQ queues
|
# Define named RQ queues
|
||||||
RQ_QUEUES = {
|
RQ_QUEUES = {
|
||||||
RQ_QUEUE_HIGH: RQ_PARAMS,
|
RQ_QUEUE_HIGH: RQ_PARAMS,
|
||||||
|
|||||||
Reference in New Issue
Block a user