Merge pull request #1298 from netbox-community/develop

Version 3.0.0
This commit is contained in:
Tobias Genannt 2024-09-03 22:03:12 +02:00 committed by GitHub
commit ab2a7bc8e5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 302 additions and 274 deletions

4
.github/FUNDING.yml vendored
View File

@ -1,8 +1,8 @@
# These are supported funding model platforms # These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
- cimnine - cimnine
- tobiasge - tobiasge
patreon: # Replace with a single Patreon username patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username ko_fi: # Replace with a single Ko-fi username

View File

@ -1,148 +1,148 @@
name: Bug report name: Bug report
description: Create a report about a malfunction of the Docker setup description: Create a report about a malfunction of the Docker setup
body: body:
- type: markdown - type: markdown
attributes: attributes:
value: | value: |
Please only raise an issue if you're certain that you've found a bug. Please only raise an issue if you're certain that you've found a bug.
Else, see these other means to get help: Else, see these other means to get help:
- See our troubleshooting section: - See our troubleshooting section:
https://github.com/netbox-community/netbox-docker/wiki/Troubleshooting https://github.com/netbox-community/netbox-docker/wiki/Troubleshooting
- Have a look at the rest of the wiki: - Have a look at the rest of the wiki:
https://github.com/netbox-community/netbox-docker/wiki https://github.com/netbox-community/netbox-docker/wiki
- Check the release notes: - Check the release notes:
https://github.com/netbox-community/netbox-docker/releases https://github.com/netbox-community/netbox-docker/releases
- Look through the issues already resolved: - Look through the issues already resolved:
https://github.com/netbox-community/netbox-docker/issues?q=is%3Aclosed https://github.com/netbox-community/netbox-docker/issues?q=is%3Aclosed
If you did not find what you're looking for, If you did not find what you're looking for,
try the help of our community: try the help of our community:
- Post to Github Discussions: - Post to Github Discussions:
https://github.com/netbox-community/netbox-docker/discussions https://github.com/netbox-community/netbox-docker/discussions
- Join the `#netbox-docker` channel on our Slack: - Join the `#netbox-docker` channel on our Slack:
https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ
- Ask on the NetBox mailing list: - Ask on the NetBox mailing list:
https://groups.google.com/d/forum/netbox-discuss https://groups.google.com/d/forum/netbox-discuss
Please don't open an issue to open a PR. Please don't open an issue to open a PR.
Just submit the PR, that's good enough. Just submit the PR, that's good enough.
- type: textarea - type: textarea
id: current-behavior id: current-behavior
attributes: attributes:
label: Current Behavior label: Current Behavior
description: Please describe what you did and how you think it misbehaved description: Please describe what you did and how you think it misbehaved
placeholder: I tried to … by doing …, but it … placeholder: I tried to … by doing …, but it …
validations: validations:
required: true required: true
- type: textarea - type: textarea
id: expected-behavior id: expected-behavior
attributes: attributes:
label: Expected Behavior label: Expected Behavior
description: Please describe what you expected instead description: Please describe what you expected instead
placeholder: I expected that … when I do … placeholder: I expected that … when I do …
validations: validations:
required: true required: true
- type: input - type: input
id: docker-compose-version id: docker-compose-version
attributes: attributes:
label: Docker Compose Version label: Docker Compose Version
description: Please paste the output of `docker-compose version` description: Please paste the output of `docker-compose version`
placeholder: Docker Compose version vX.Y.Z placeholder: Docker Compose version vX.Y.Z
validations: validations:
required: true required: true
- type: textarea - type: textarea
id: docker-version id: docker-version
attributes: attributes:
label: Docker Version label: Docker Version
description: Please paste the output of `docker version` description: Please paste the output of `docker version`
render: text render: text
placeholder: | placeholder: |
Client: Client:
Cloud integration: 1.0.17 Cloud integration: 1.0.17
Version: 20.10.8 Version: 20.10.8
API version: 1.41 API version: 1.41
Go version: go1.16.6 Go version: go1.16.6
Git commit: 3967b7d Git commit: 3967b7d
Built: Fri Jul 30 19:55:20 2021 Built: Fri Jul 30 19:55:20 2021
OS/Arch: darwin/amd64 OS/Arch: darwin/amd64
Context: default Context: default
Experimental: true Experimental: true
Server: Docker Engine - Community Server: Docker Engine - Community
Engine: Engine:
Version: 20.10.8 Version: 20.10.8
API version: 1.41 (minimum version 1.12) API version: 1.41 (minimum version 1.12)
Go version: go1.16.6 Go version: go1.16.6
Git commit: 75249d8 Git commit: 75249d8
Built: Fri Jul 30 19:52:10 2021 Built: Fri Jul 30 19:52:10 2021
OS/Arch: linux/amd64 OS/Arch: linux/amd64
Experimental: false Experimental: false
containerd: containerd:
Version: 1.4.9 Version: 1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3 GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc: runc:
Version: 1.0.1 Version: 1.0.1
GitCommit: v1.0.1-0-g4144b63 GitCommit: v1.0.1-0-g4144b63
docker-init: docker-init:
Version: 0.19.0 Version: 0.19.0
GitCommit: de40ad0 GitCommit: de40ad0
validations: validations:
required: true required: true
- type: input - type: input
id: git-rev id: git-rev
attributes: attributes:
label: The git Revision label: The git Revision
description: Please paste the output of `git rev-parse HEAD` description: Please paste the output of `git rev-parse HEAD`
validations: validations:
required: true required: true
- type: textarea - type: textarea
id: git-status id: git-status
attributes: attributes:
label: The git Status label: The git Status
description: Please paste the output of `git status` description: Please paste the output of `git status`
render: text render: text
placeholder: | placeholder: |
On branch main On branch main
nothing to commit, working tree clean nothing to commit, working tree clean
validations: validations:
required: true required: true
- type: input - type: input
id: run-command id: run-command
attributes: attributes:
label: Startup Command label: Startup Command
description: Please specify the command you used to start the project description: Please specify the command you used to start the project
placeholder: docker compose up placeholder: docker compose up
validations: validations:
required: true required: true
- type: textarea - type: textarea
id: netbox-logs id: netbox-logs
attributes: attributes:
label: NetBox Logs label: NetBox Logs
description: Please paste the output of `docker-compose logs netbox` (or `docker compose logs netbox`) description: Please paste the output of `docker-compose logs netbox` (or `docker compose logs netbox`)
render: text render: text
placeholder: | placeholder: |
netbox_1 | ⚙️ Applying database migrations netbox_1 | ⚙️ Applying database migrations
netbox_1 | 🧬 loaded config '/etc/netbox/config/configuration.py' netbox_1 | 🧬 loaded config '/etc/netbox/config/configuration.py'
netbox_1 | 🧬 loaded config '/etc/netbox/config/a.py' netbox_1 | 🧬 loaded config '/etc/netbox/config/a.py'
netbox_1 | 🧬 loaded config '/etc/netbox/config/extra.py' netbox_1 | 🧬 loaded config '/etc/netbox/config/extra.py'
netbox_1 | 🧬 loaded config '/etc/netbox/config/logging.py' netbox_1 | 🧬 loaded config '/etc/netbox/config/logging.py'
netbox_1 | 🧬 loaded config '/etc/netbox/config/plugins.py' netbox_1 | 🧬 loaded config '/etc/netbox/config/plugins.py'
... ...
validations: validations:
required: true required: true
- type: textarea - type: textarea
id: docker-compose-override-yml id: docker-compose-override-yml
attributes: attributes:
label: Content of docker-compose.override.yml label: Content of docker-compose.override.yml
description: Please paste the output of `cat docker-compose.override.yml` description: Please paste the output of `cat docker-compose.override.yml`
render: yaml render: yaml
placeholder: | placeholder: |
version: '3.4' version: '3.4'
services: services:
netbox: netbox:
ports: ports:
- '8080:8080' - '8080:8080'
validations: validations:
required: true required: true

View File

@ -6,7 +6,7 @@ contact_links:
- name: Chat - name: Chat
url: https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ url: https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ
about: 'Usually the quickest way to seek help with small issues is to join our #netbox-docker Slack channel.' about: "Usually the quickest way to seek help with small issues is to join our #netbox-docker Slack channel."
- name: Community Wiki - name: Community Wiki
url: https://github.com/netbox-community/netbox-docker/wiki url: https://github.com/netbox-community/netbox-docker/wiki

View File

@ -1,68 +1,68 @@
name: Feature or Change Request name: Feature or Change Request
description: Request a new feature or a change of the current behavior description: Request a new feature or a change of the current behavior
body: body:
- type: markdown - type: markdown
attributes: attributes:
value: | value: |
This issue type is to propose new features for the Docker setup. This issue type is to propose new features for the Docker setup.
To just spin an idea, see the Github Discussions section, please. To just spin an idea, see the Github Discussions section, please.
Before asking for help, see these links first: Before asking for help, see these links first:
- See our troubleshooting section: - See our troubleshooting section:
https://github.com/netbox-community/netbox-docker/wiki/Troubleshooting https://github.com/netbox-community/netbox-docker/wiki/Troubleshooting
- Have a look at the rest of the wiki: - Have a look at the rest of the wiki:
https://github.com/netbox-community/netbox-docker/wiki https://github.com/netbox-community/netbox-docker/wiki
- Check the release notes: - Check the release notes:
https://github.com/netbox-community/netbox-docker/releases https://github.com/netbox-community/netbox-docker/releases
- Look through the issues already resolved: - Look through the issues already resolved:
https://github.com/netbox-community/netbox-docker/issues?q=is%3Aclosed https://github.com/netbox-community/netbox-docker/issues?q=is%3Aclosed
If you did not find what you're looking for, If you did not find what you're looking for,
try the help of our community: try the help of our community:
- Post to Github Discussions: - Post to Github Discussions:
https://github.com/netbox-community/netbox-docker/discussions https://github.com/netbox-community/netbox-docker/discussions
- Join the `#netbox-docker` channel on our Slack: - Join the `#netbox-docker` channel on our Slack:
https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ
- Ask on the NetBox mailing list: - Ask on the NetBox mailing list:
https://groups.google.com/d/forum/netbox-discuss https://groups.google.com/d/forum/netbox-discuss
Please don't open an issue to open a PR. Please don't open an issue to open a PR.
Just submit the PR, that's good enough. Just submit the PR, that's good enough.
- type: textarea - type: textarea
id: desired-behavior id: desired-behavior
attributes: attributes:
label: Desired Behavior label: Desired Behavior
description: Please describe the desired behavior description: Please describe the desired behavior
placeholder: To me, it would be useful, if … because … placeholder: To me, it would be useful, if … because …
validations: validations:
required: true required: true
- type: textarea - type: textarea
id: contrast-to-current id: contrast-to-current
attributes: attributes:
label: Contrast to Current Behavior label: Contrast to Current Behavior
description: Please describe how the desired behavior is different from the current behavior description: Please describe how the desired behavior is different from the current behavior
placeholder: The current behavior is …, but this lacks … placeholder: The current behavior is …, but this lacks …
validations: validations:
required: true required: true
- type: textarea - type: textarea
id: required-changes id: required-changes
attributes: attributes:
label: Required Changes label: Required Changes
description: If you can, please elaborate what changes will be required to implement the desired behavior description: If you can, please elaborate what changes will be required to implement the desired behavior
placeholder: I suggest to change the file … placeholder: I suggest to change the file …
validations: validations:
required: false required: false
- type: textarea - type: textarea
id: discussion id: discussion
attributes: attributes:
label: 'Discussion: Benefits and Drawbacks' label: "Discussion: Benefits and Drawbacks"
description: | description: |
Please make your case here: Please make your case here:
- Why do you think this project and the community will benefit from your suggestion? - Why do you think this project and the community will benefit from your suggestion?
- What are the drawbacks of this change? Is it backwards-compatible? - What are the drawbacks of this change? Is it backwards-compatible?
- Anything else that you think is relevant to the discussion of this feature/change request. - Anything else that you think is relevant to the discussion of this feature/change request.
placeholder: I suggest to change the file … placeholder: I suggest to change the file …
validations: validations:
required: false required: false

View File

@ -80,6 +80,6 @@ into the release notes.
Please put an x into the brackets (like `[x]`) if you've completed that task. Please put an x into the brackets (like `[x]`) if you've completed that task.
--> -->
* [ ] I have read the comments and followed the PR template. - [ ] I have read the comments and followed the PR template.
* [ ] I have explained my PR according to the information in the comments. - [ ] I have explained my PR according to the information in the comments.
* [ ] My PR targets the `develop` branch. - [ ] My PR targets the `develop` branch.

View File

@ -26,9 +26,9 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: '3.9' python-version: "3.9"
- name: Lint Code Base - name: Lint Code Base
uses: github/super-linter@v6 uses: github/super-linter@v7
env: env:
DEFAULT_BRANCH: develop DEFAULT_BRANCH: develop
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -6,7 +6,7 @@ on:
types: types:
- published - published
schedule: schedule:
- cron: '45 5 * * *' - cron: "45 5 * * *"
workflow_dispatch: workflow_dispatch:
jobs: jobs:

View File

@ -1,5 +1,4 @@
--- ---
rules: rules:
line-length: line-length:
max: 120 max: 160

View File

@ -63,17 +63,16 @@ RUN export DEBIAN_FRONTEND=noninteractive \
openssh-client \ openssh-client \
openssl \ openssl \
python3 \ python3 \
python3-distutils \
tini \ tini \
&& curl --silent --output /usr/share/keyrings/nginx-keyring.gpg \ && curl --silent --output /etc/apt/keyrings/nginx-keyring.gpg \
https://unit.nginx.org/keys/nginx-keyring.gpg \ https://unit.nginx.org/keys/nginx-keyring.gpg \
&& echo "deb [signed-by=/usr/share/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ mantic unit" \ && echo "deb [signed-by=/etc/apt/keyrings/nginx-keyring.gpg] https://packages.nginx.org/unit/ubuntu/ mantic unit" \
> /etc/apt/sources.list.d/unit.list \ > /etc/apt/sources.list.d/unit.list \
&& apt-get update -qq \ && apt-get update -qq \
&& apt-get install \ && apt-get install \
--yes -qq --no-install-recommends \ --yes -qq --no-install-recommends \
unit=1.32.0-1~mantic \ unit=1.32.1-1~mantic \
unit-python3.11=1.32.0-1~mantic \ unit-python3.12=1.32.1-1~mantic \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
COPY --from=builder /opt/netbox/venv /opt/netbox/venv COPY --from=builder /opt/netbox/venv /opt/netbox/venv

View File

@ -1 +1 @@
2.9.1 3.0.0

View File

@ -61,7 +61,7 @@ DOCKERFILE The name of Dockerfile to use.
${_GREEN}Default:${_CLEAR} Dockerfile ${_GREEN}Default:${_CLEAR} Dockerfile
DOCKER_FROM The base image to use. DOCKER_FROM The base image to use.
${_GREEN}Default:${_CLEAR} 'ubuntu:23.10' ${_GREEN}Default:${_CLEAR} 'ubuntu:24.04'
BUILDX_PLATFORMS BUILDX_PLATFORMS
Specifies the platform(s) to build the image for. Specifies the platform(s) to build the image for.
@ -219,7 +219,7 @@ fi
# Determining the value for DOCKER_FROM # Determining the value for DOCKER_FROM
### ###
if [ -z "$DOCKER_FROM" ]; then if [ -z "$DOCKER_FROM" ]; then
DOCKER_FROM="docker.io/ubuntu:23.10" DOCKER_FROM="docker.io/ubuntu:24.04"
fi fi
### ###

View File

@ -200,10 +200,10 @@ if 'CENSUS_REPORTING_ENABLED' in environ:
EXEMPT_VIEW_PERMISSIONS = _environ_get_and_map('EXEMPT_VIEW_PERMISSIONS', '', _AS_LIST) EXEMPT_VIEW_PERMISSIONS = _environ_get_and_map('EXEMPT_VIEW_PERMISSIONS', '', _AS_LIST)
# HTTP proxies NetBox should use when sending outbound HTTP requests (e.g. for webhooks). # HTTP proxies NetBox should use when sending outbound HTTP requests (e.g. for webhooks).
# HTTP_PROXIES = { HTTP_PROXIES = {
# 'http': 'http://10.10.1.10:3128', 'http': environ.get('HTTP_PROXY', None),
# 'https': 'http://10.10.1.10:1080', 'https': environ.get('HTTPS_PROXY', None),
# } }
# IP addresses recognized as internal to the system. The debugging toolbar will be available only to clients accessing # IP addresses recognized as internal to the system. The debugging toolbar will be available only to clients accessing
# NetBox from an internal IP. # NetBox from an internal IP.
@ -221,9 +221,9 @@ if 'GRAPHQL_ENABLED' in environ:
# authenticated to NetBox indefinitely. # authenticated to NetBox indefinitely.
LOGIN_PERSISTENCE = _environ_get_and_map('LOGIN_PERSISTENCE', 'False', _AS_BOOL) LOGIN_PERSISTENCE = _environ_get_and_map('LOGIN_PERSISTENCE', 'False', _AS_BOOL)
# Setting this to True will permit only authenticated users to access any part of NetBox. By default, anonymous users # When enabled, only authenticated users are permitted to access any part of NetBox.
# are permitted to access most data in NetBox (excluding secrets) but not make any changes. # Disabling this will allow unauthenticated users to access most areas of NetBox (but not make any changes).
LOGIN_REQUIRED = _environ_get_and_map('LOGIN_REQUIRED', 'False', _AS_BOOL) LOGIN_REQUIRED = _environ_get_and_map('LOGIN_REQUIRED', 'True', _AS_BOOL)
# The length of time (in seconds) for which a user will remain logged into the web UI before being prompted to # The length of time (in seconds) for which a user will remain logged into the web UI before being prompted to
# re-authenticate. (Default: 1209600 [14 days]) # re-authenticate. (Default: 1209600 [14 days])
@ -286,12 +286,23 @@ if 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH' in environ:
RACK_ELEVATION_DEFAULT_UNIT_WIDTH = _environ_get_and_map('RACK_ELEVATION_DEFAULT_UNIT_WIDTH', None, _AS_INT) RACK_ELEVATION_DEFAULT_UNIT_WIDTH = _environ_get_and_map('RACK_ELEVATION_DEFAULT_UNIT_WIDTH', None, _AS_INT)
# Remote authentication support # Remote authentication support
REMOTE_AUTH_ENABLED = _environ_get_and_map('REMOTE_AUTH_ENABLED', 'False', _AS_BOOL) REMOTE_AUTH_AUTO_CREATE_GROUPS = _environ_get_and_map('REMOTE_AUTH_AUTO_CREATE_GROUPS', 'False', _AS_BOOL)
REMOTE_AUTH_BACKEND = _environ_get_and_map('REMOTE_AUTH_BACKEND', 'netbox.authentication.RemoteUserBackend', _AS_LIST)
REMOTE_AUTH_HEADER = environ.get('REMOTE_AUTH_HEADER', 'HTTP_REMOTE_USER')
REMOTE_AUTH_AUTO_CREATE_USER = _environ_get_and_map('REMOTE_AUTH_AUTO_CREATE_USER', 'False', _AS_BOOL) REMOTE_AUTH_AUTO_CREATE_USER = _environ_get_and_map('REMOTE_AUTH_AUTO_CREATE_USER', 'False', _AS_BOOL)
REMOTE_AUTH_BACKEND = _environ_get_and_map('REMOTE_AUTH_BACKEND', 'netbox.authentication.RemoteUserBackend', _AS_LIST)
REMOTE_AUTH_DEFAULT_GROUPS = _environ_get_and_map('REMOTE_AUTH_DEFAULT_GROUPS', '', _AS_LIST) REMOTE_AUTH_DEFAULT_GROUPS = _environ_get_and_map('REMOTE_AUTH_DEFAULT_GROUPS', '', _AS_LIST)
# REMOTE_AUTH_DEFAULT_PERMISSIONS = {} # REMOTE_AUTH_DEFAULT_PERMISSIONS = {} # dicts can't be configured via environment variables. See extra.py instead.
REMOTE_AUTH_ENABLED = _environ_get_and_map('REMOTE_AUTH_ENABLED', 'False', _AS_BOOL)
REMOTE_AUTH_GROUP_HEADER = _environ_get_and_map('REMOTE_AUTH_GROUP_HEADER', 'HTTP_REMOTE_USER_GROUP')
REMOTE_AUTH_GROUP_SEPARATOR = _environ_get_and_map('REMOTE_AUTH_GROUP_SEPARATOR', '|')
REMOTE_AUTH_GROUP_SYNC_ENABLED = _environ_get_and_map('REMOTE_AUTH_GROUP_SYNC_ENABLED', 'False', _AS_BOOL)
REMOTE_AUTH_HEADER = environ.get('REMOTE_AUTH_HEADER', 'HTTP_REMOTE_USER')
REMOTE_AUTH_USER_EMAIL = environ.get('REMOTE_AUTH_USER_EMAIL', 'HTTP_REMOTE_USER_EMAIL')
REMOTE_AUTH_USER_FIRST_NAME = environ.get('REMOTE_AUTH_USER_FIRST_NAME', 'HTTP_REMOTE_USER_FIRST_NAME')
REMOTE_AUTH_USER_LAST_NAME = environ.get('REMOTE_AUTH_USER_LAST_NAME', 'HTTP_REMOTE_USER_LAST_NAME')
REMOTE_AUTH_SUPERUSER_GROUPS = _environ_get_and_map('REMOTE_AUTH_SUPERUSER_GROUPS', '', _AS_LIST)
REMOTE_AUTH_SUPERUSERS = _environ_get_and_map('REMOTE_AUTH_SUPERUSERS', '', _AS_LIST)
REMOTE_AUTH_STAFF_GROUPS = _environ_get_and_map('REMOTE_AUTH_STAFF_GROUPS', '', _AS_LIST)
REMOTE_AUTH_STAFF_USERS = _environ_get_and_map('REMOTE_AUTH_STAFF_USERS', '', _AS_LIST)
# This repository is used to check whether there is a new release of NetBox available. Set to None to disable the # This repository is used to check whether there is a new release of NetBox available. Set to None to disable the
# version check or use the URL below to check for release in the official NetBox repository. # version check or use the URL below to check for release in the official NetBox repository.

View File

@ -1,6 +1,6 @@
services: services:
netbox: &netbox netbox: &netbox
image: ${IMAGE-netboxcommunity/netbox:latest} image: ${IMAGE-docker.io/netboxcommunity/netbox:latest}
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy
@ -13,10 +13,10 @@ services:
volumes: volumes:
- ./test-configuration/test_config.py:/etc/netbox/config/test_config.py:z,ro - ./test-configuration/test_config.py:/etc/netbox/config/test_config.py:z,ro
healthcheck: healthcheck:
test: curl -f http://localhost:8080/login/ || exit 1
start_period: ${NETBOX_START_PERIOD-120s} start_period: ${NETBOX_START_PERIOD-120s}
timeout: 3s timeout: 3s
interval: 15s interval: 15s
test: "curl -f http://localhost:8080/api/ || exit 1"
netbox-worker: netbox-worker:
<<: *netbox <<: *netbox
command: command:
@ -24,42 +24,47 @@ services:
- /opt/netbox/netbox/manage.py - /opt/netbox/netbox/manage.py
- rqworker - rqworker
healthcheck: healthcheck:
test: ps -aux | grep -v grep | grep -q rqworker || exit 1
start_period: 40s start_period: 40s
timeout: 3s timeout: 3s
interval: 15s interval: 15s
test: "ps -aux | grep -v grep | grep -q rqworker || exit 1"
netbox-housekeeping: netbox-housekeeping:
<<: *netbox <<: *netbox
command: command:
- /opt/netbox/housekeeping.sh - /opt/netbox/housekeeping.sh
healthcheck: healthcheck:
test: ps -aux | grep -v grep | grep -q housekeeping || exit 1
start_period: 40s start_period: 40s
timeout: 3s timeout: 3s
interval: 15s interval: 15s
test: "ps -aux | grep -v grep | grep -q housekeeping || exit 1"
postgres: postgres:
image: postgres:16-alpine image: docker.io/postgres:16-alpine
env_file: env/postgres.env env_file: env/postgres.env
healthcheck: healthcheck:
test: "pg_isready -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER" ## $$ because of docker-compose test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER ## $$ because of docker-compose
interval: 10s start_period: 20s
interval: 1s
timeout: 5s timeout: 5s
retries: 5 retries: 5
redis: &redis redis: &redis
image: redis:7-alpine image: docker.io/valkey/valkey:8.0-alpine
command: command:
- sh - sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env - -c # this is to evaluate the $REDIS_PASSWORD from the env
- redis-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose - valkey-server --save "" --appendonly no --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
env_file: env/redis.env env_file: env/redis.env
healthcheck: healthcheck:
start_period: 20s test: "[ $$(valkey-cli --pass \"$${REDIS_PASSWORD}\" ping) = 'PONG' ]"
start_period: 5s
timeout: 3s timeout: 3s
interval: 15s interval: 1s
test: "timeout 2 redis-cli ping" retries: 5
redis-cache: redis-cache:
<<: *redis <<: *redis
env_file: env/redis-cache.env env_file: env/redis-cache.env
volumes: volumes:
netbox-media-files: netbox-media-files:
driver: local driver: local

View File

@ -1,75 +1,88 @@
services: services:
netbox: &netbox netbox: &netbox
image: docker.io/netboxcommunity/netbox:${VERSION-v4.0-2.9.1} image: docker.io/netboxcommunity/netbox:${VERSION-v4.1-3.0.0}
depends_on: depends_on:
- postgres - postgres
- redis - redis
- redis-cache - redis-cache
env_file: env/netbox.env env_file: env/netbox.env
user: 'unit:root' user: "unit:root"
healthcheck: healthcheck:
start_period: 60s test: curl -f http://localhost:8080/login/ || exit 1
start_period: 90s
timeout: 3s timeout: 3s
interval: 15s interval: 15s
test: "curl -f http://localhost:8080/login/ || exit 1"
volumes: volumes:
- ./configuration:/etc/netbox/config:z,ro - ./configuration:/etc/netbox/config:z,ro
- netbox-media-files:/opt/netbox/netbox/media:rw - netbox-media-files:/opt/netbox/netbox/media:rw
- netbox-reports-files:/opt/netbox/netbox/reports:rw - netbox-reports-files:/opt/netbox/netbox/reports:rw
- netbox-scripts-files:/opt/netbox/netbox/scripts:rw - netbox-scripts-files:/opt/netbox/netbox/scripts:rw
netbox-worker: netbox-worker:
<<: *netbox <<: *netbox
depends_on: depends_on:
netbox: netbox:
condition: service_healthy condition: service_healthy
command: command:
- /opt/netbox/venv/bin/python - /opt/netbox/venv/bin/python
- /opt/netbox/netbox/manage.py - /opt/netbox/netbox/manage.py
- rqworker - rqworker
healthcheck: healthcheck:
test: ps -aux | grep -v grep | grep -q rqworker || exit 1
start_period: 20s start_period: 20s
timeout: 3s timeout: 3s
interval: 15s interval: 15s
test: "ps -aux | grep -v grep | grep -q rqworker || exit 1"
netbox-housekeeping: netbox-housekeeping:
<<: *netbox <<: *netbox
depends_on: depends_on:
netbox: netbox:
condition: service_healthy condition: service_healthy
command: command:
- /opt/netbox/housekeeping.sh - /opt/netbox/housekeeping.sh
healthcheck: healthcheck:
test: ps -aux | grep -v grep | grep -q housekeeping || exit 1
start_period: 20s start_period: 20s
timeout: 3s timeout: 3s
interval: 15s interval: 15s
test: "ps -aux | grep -v grep | grep -q housekeeping || exit 1"
# postgres # postgres
postgres: postgres:
image: docker.io/postgres:16-alpine image: docker.io/postgres:16-alpine
healthcheck:
test: pg_isready -q -t 2 -d $$POSTGRES_DB -U $$POSTGRES_USER
start_period: 20s
timeout: 30s
interval: 10s
retries: 5
env_file: env/postgres.env env_file: env/postgres.env
volumes: volumes:
- netbox-postgres-data:/var/lib/postgresql/data - netbox-postgres-data:/var/lib/postgresql/data
# redis # redis
redis: redis:
image: docker.io/redis:7-alpine image: docker.io/valkey/valkey:8.0-alpine
command: command:
- sh - sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env - -c # this is to evaluate the $REDIS_PASSWORD from the env
- redis-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose - valkey-server --appendonly yes --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
healthcheck: &redis-healthcheck
test: '[ $$(valkey-cli --pass "$${REDIS_PASSWORD}" ping) = ''PONG'' ]'
start_period: 5s
timeout: 3s
interval: 1s
retries: 5
env_file: env/redis.env env_file: env/redis.env
volumes: volumes:
- netbox-redis-data:/data - netbox-redis-data:/data
redis-cache: redis-cache:
image: docker.io/redis:7-alpine image: docker.io/valkey/valkey:8.0-alpine
command: command:
- sh - sh
- -c # this is to evaluate the $REDIS_PASSWORD from the env - -c # this is to evaluate the $REDIS_PASSWORD from the env
- redis-server --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose - valkey-server --requirepass $$REDIS_PASSWORD ## $$ because of docker-compose
healthcheck: *redis-healthcheck
env_file: env/redis-cache.env env_file: env/redis-cache.env
volumes: volumes:
- netbox-redis-cache-data:/data - netbox-redis-cache-data:/data
volumes: volumes:
netbox-media-files: netbox-media-files:

View File

@ -1,5 +1,5 @@
django-auth-ldap==4.8.0 django-auth-ldap==4.8.0
django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.14.3 django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.14.4
dulwich==0.22.1 dulwich==0.22.1
python3-saml==1.16.0 --no-binary lxml python3-saml==1.16.0 --no-binary lxml,xmlsec
sentry-sdk[django]==2.1.1 sentry-sdk[django]==2.12.0

View File

@ -4,3 +4,4 @@ LOGGING = {
} }
DEFAULT_PERMISSIONS = {} DEFAULT_PERMISSIONS = {}
LOGIN_REQUIRED = False

View File

@ -84,7 +84,7 @@ test_netbox_web() {
--retry 5 \ --retry 5 \
--retry-delay 0 \ --retry-delay 0 \
--retry-max-time 40 \ --retry-max-time 40 \
http://127.0.0.1:8000/ http://127.0.0.1:8000/login/
) )
if [ "$RESP_CODE" == "200" ]; then if [ "$RESP_CODE" == "200" ]; then
echo "Webservice running" echo "Webservice running"