Compare commits

...

69 Commits
1.4.1 ... 1.6.1

Author SHA1 Message Date
61a3afbb3b Merge pull request #734 from netbox-community/develop
Version 1.6.1
2022-04-06 09:58:45 +02:00
91ab616cc5 Preparation for 1.6.1 2022-04-06 09:39:22 +02:00
43d62f1284 Merge pull request #733 from tobiasge/remove-tzdata
tzdata is already required in Netbox
2022-04-06 09:03:28 +02:00
d61470d6ef Merge pull request #725 from netbox-community/renovate/napalm-3.x
Update dependency napalm to v3.4.0
2022-04-06 08:50:29 +02:00
091d23d537 tzdata is already required in Netbox 2022-04-06 08:43:10 +02:00
2f24902436 Update dependency napalm to v3.4.0 2022-03-21 20:43:51 +00:00
36d47b9b88 Merge pull request #711 from netbox-community/renovate/actions-checkout-3.x
Update actions/checkout action to v3
2022-03-02 07:46:38 +01:00
2c20771682 Update actions/checkout action to v3 2022-03-01 19:06:16 +00:00
a9cdec6d87 Merge pull request #708 from netbox-community/renovate/actions-setup-python-3.x
Update actions/setup-python action to v3
2022-03-01 09:17:08 +01:00
f1efccea6b Update actions/setup-python action to v3 2022-02-28 13:52:44 +00:00
226d8438de Merge pull request #705 from netbox-community/develop
Release 1.6.0
2022-02-21 12:17:25 +01:00
b6d6f85dc0 Preparation for 1.6.0 2022-02-21 11:25:37 +01:00
49ed10bbee Merge pull request #701 from tobiasge/requirements
Added missing tzdata
2022-02-16 12:22:27 +01:00
3afdd3bf13 Added missing tzdata 2022-02-16 09:32:03 +01:00
0170ed7d6f Merge pull request #700 from netbox-community/renovate/ruamel.yaml-0.x
Update dependency ruamel.yaml to v0.17.21
2022-02-15 18:39:26 +01:00
dad2e93572 Update dependency ruamel.yaml to v0.17.21 2022-02-12 11:16:45 +00:00
d726426611 Merge pull request #665 from netbox-community/renovate/django-auth-ldap-4.x
Update dependency django-auth-ldap to v4
2022-02-05 11:37:07 +01:00
b31d99b936 Update dependency django-auth-ldap to v4 2022-02-03 16:50:11 +00:00
8860d32f97 Cleanup & Reorg startup scripts (#691)
* Cleanup & Reorg startup scripts
2022-02-03 17:10:39 +01:00
b9dff0d22e Merge pull request #697 from tobiasge/feature-build-fix
Fixed build for Netbox feature branch
2022-02-02 17:07:32 +01:00
297aab1fd3 Fixed build for Netbox feature branch 2022-02-02 16:49:29 +01:00
54bf7a3819 Merge pull request #695 from ryanmerolle/graphql
Explicitly set GRAPHQL_ENABLED
2022-02-02 16:43:32 +01:00
52876be723 add graphql 2022-01-31 21:45:29 -05:00
ff20e4f49c Merge pull request #685 from tobiasge/asn-initializers
Added ASN initializer script
2022-01-10 11:14:55 +01:00
ee47ba04bc Added ASN initializer script 2022-01-10 10:49:51 +01:00
688374d13f Merge pull request #681 from netbox-community/renovate/ruamel.yaml-0.x
Update dependency ruamel.yaml to v0.17.20
2022-01-03 12:28:53 +01:00
22c4212438 Update dependency ruamel.yaml to v0.17.20 2022-01-03 09:48:22 +00:00
26dcb2f2e0 Merge pull request #668 from netbox-community/renovate/ruamel.yaml-0.x
Update dependency ruamel.yaml to v0.17.19
2021-12-29 22:47:22 +01:00
46afa266fa Update dependency ruamel.yaml to v0.17.19 2021-12-26 15:22:25 +00:00
b2d26d9dce Merge pull request #660 from tobiasge/fix-link
Fixed GHCR link
2021-12-11 12:12:13 +01:00
0b622361f3 Merge pull request #661 from tobiasge/disable-edge
Removed Alpine edge from tests
2021-12-11 12:12:02 +01:00
ed48909f96 Removed Alpine edge from tests 2021-12-10 14:29:53 +01:00
60d191bb2a Fixed textlint errors 2021-12-09 22:23:03 +01:00
4f482e484f Fixed GHCR link 2021-12-09 22:06:59 +01:00
58a1579832 Merge pull request #659 from netbox-community/develop
Version 1.5.1
2021-12-09 12:36:52 +01:00
6d5cf7a815 Preparation for 1.5.1 2021-12-09 12:15:26 +01:00
2e92554423 Merge pull request #658 from tobiasge/fix-action
Fixed release action workflow
2021-12-09 12:10:23 +01:00
2456a642b7 Fixed release action workflow 2021-12-09 11:23:30 +01:00
b5108625ff Merge pull request #657 from netbox-community/develop
Version 1.5.0
2021-12-09 08:48:49 +01:00
9ab54f27b1 Preparation for 1.5.0 2021-12-09 08:29:42 +01:00
4b7037bbe6 Merge pull request #656 from tobiasge/fix-653
Add __dir__ to configuration file
2021-11-30 11:48:11 +01:00
f183603bc0 Fix #653: Add missing __dir__ to configuration.py 2021-11-30 11:19:49 +01:00
544a58325d Merge pull request #640 from netbox-community/renovate/ruamel.yaml-0.x
Update dependency ruamel.yaml to v0.17.17
2021-11-01 12:54:39 +01:00
9557bdf209 Update dependency ruamel.yaml to v0.17.17 2021-10-31 21:08:10 +00:00
4890a8510d Merge pull request #637 from netbox-community/renovate/django-storages-1.x
Update dependency django-storages to v1.12.3
2021-10-30 10:12:25 +02:00
66f77b5eb1 Update dependency django-storages to v1.12.3 2021-10-30 04:09:42 +00:00
661b6b07a3 Merge pull request #632 from grawert/startup_scripts_typos
Startup scripts typos
2021-10-25 14:59:08 +02:00
ce8db1065d Fix some small typos in startup_scripts
- group creation prints proper group name
  - permission creation prints proper permission name
2021-10-25 14:36:37 +02:00
9a0e1115ed Merge pull request #633 from tobiasge/fix-540
Set filter_logic from YAML file
2021-10-25 14:08:00 +02:00
2b4c058af8 Set filter_logic from YAML file 2021-10-21 17:06:24 +02:00
a206ad6811 Merge pull request #630 from tobiasge/fix-580
Added ENV variables for INSECURE_SKIP_TLS_VERIFY
2021-10-20 09:49:33 +02:00
a1dabcb758 Added ENV variables for INSECURE_SKIP_TLS_VERIFY 2021-10-20 09:27:18 +02:00
940c1bb50c Merge pull request #625 from cimnine/UpdateReadme 2021-10-19 17:49:28 +02:00
6c49d4fef5 Merge pull request #594 from netbox-community/renovate/postgres-14.x
Update postgres Docker tag to v14
2021-10-19 17:30:49 +02:00
621df33df9 Add missing words 2021-10-19 17:29:29 +02:00
7e86ba002f More overhaul of the README 2021-10-19 17:22:19 +02:00
6f12cb36af Add ghcr 2021-10-19 17:14:48 +02:00
4ef35aadb6 Update the README with regards to the tags 2021-10-19 17:10:50 +02:00
d4081c15e1 Update postgres Docker tag to v14 2021-10-19 12:25:17 +00:00
6e870b4d0b Merge pull request #622 from netbox-community/renovate/django-storages-1.x
Update dependency django-storages to v1.12.2
2021-10-19 14:24:58 +02:00
1e78ccd204 Merge pull request #621 from cimnine/GHCR
Publish image to GitHub Container Registry
2021-10-19 14:24:07 +02:00
84e9b63524 Update dependency django-storages to v1.12.2 2021-10-18 23:36:23 +00:00
4cc7f13b6e Push to ghcr.io 2021-10-18 11:42:59 +02:00
fc2d0d1852 Merge pull request #620 from tobiasge/psql-client
Install postgresql-client
2021-10-14 16:31:21 +02:00
ef98ad54fa Install postgresql-client
Make usage of 'manage.py dbshell' possible
2021-10-14 15:37:30 +02:00
4785e09945 Merge pull request #607 from rsp2k/patch-1
Add friendly check for jq
2021-10-14 09:11:56 +02:00
d4f9bb6da3 Shellcheck errors 2021-10-14 08:37:28 +02:00
ab41eaa5d9 Add friendly message/exit when jq isn't available 2021-10-14 08:37:28 +02:00
02794f368b Add friendly check for jq 2021-10-14 08:37:28 +02:00
57 changed files with 206 additions and 163 deletions

View File

@ -13,11 +13,11 @@ jobs:
runs-on: ubuntu-latest
name: Checks syntax of our code
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
# Full git history is needed to get a proper list of changed files within `super-linter`
fetch-depth: 0
- uses: actions/setup-python@v2
- uses: actions/setup-python@v3
- name: Lint Code Base
uses: github/super-linter@v4
env:
@ -46,14 +46,13 @@ jobs:
- ./build.sh develop
docker_from:
- '' # use the default of the build script
- alpine:edge
fail-fast: false
runs-on: ubuntu-latest
name: Builds new NetBox Docker Images
steps:
- id: git-checkout
name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- id: docker-build
name: Build the image from '${{ matrix.docker_from }}' with '${{ matrix.build_cmd }}'
run: ${{ matrix.build_cmd }}

View File

@ -1,9 +1,9 @@
name: release
on:
push:
branches:
- release
release:
types:
- published
schedule:
- cron: '45 5 * * *'
@ -19,65 +19,69 @@ jobs:
fail-fast: false
runs-on: ubuntu-latest
name: Builds new NetBox Docker Images
env:
GH_ACTION: enable
steps:
- id: git-checkout
-
name: Checkout
uses: actions/checkout@v2
- id: docker-build
uses: actions/checkout@v3
-
name: Get Version of NetBox Docker
run: |
echo "::set-output name=version::$(cat VERSION)"
shell: bash
-
id: docker-build
name: Build the image with '${{ matrix.build_cmd }}'
run: ${{ matrix.build_cmd }}
env:
GH_ACTION: enable
- id: docker-test
-
name: Test the image
run: IMAGE="${FINAL_DOCKER_TAG}" ./test.sh
if: steps.docker-build.outputs.skipped != 'true'
- id: registry-login
name: Login to the Docker Registry
run: |
echo "::add-mask::$DOCKERHUB_USERNAME"
echo "::add-mask::$DOCKERHUB_PASSWORD"
docker login -u "$DOCKERHUB_USERNAME" --password "${DOCKERHUB_PASSWORD}" "${DOCKER_REGISTRY}"
env:
DOCKERHUB_USERNAME: ${{ secrets.dockerhub_username }}
DOCKERHUB_PASSWORD: ${{ secrets.dockerhub_password }}
# docker.io
-
name: Login to docker.io
uses: docker/login-action@v1
with:
registry: docker.io
username: ${{ secrets.dockerhub_username }}
password: ${{ secrets.dockerhub_password }}
if: steps.docker-build.outputs.skipped != 'true'
- id: registry-push
name: Push the image
-
name: Push the image to docker.io
run: ${{ matrix.build_cmd }} --push-only
if: steps.docker-build.outputs.skipped != 'true'
- id: registry-logout
name: Logout of the Docker Registry
run: docker logout "${DOCKER_REGISTRY}"
if: steps.docker-build.outputs.skipped != 'true'
# Quay.io
- id: quayio-docker-build
name: Build the image with '${{ matrix.build_cmd }}'
run: ${{ matrix.build_cmd }}
env:
DOCKER_REGISTRY: quay.io
GH_ACTION: enable
- id: quayio-registry-login
name: Login to the Quay.io Registry
run: |
echo "::add-mask::$QUAYIO_USERNAME"
echo "::add-mask::$QUAYIO_PASSWORD"
docker login -u "$QUAYIO_USERNAME" --password "${QUAYIO_PASSWORD}" "${DOCKER_REGISTRY}"
env:
DOCKER_REGISTRY: quay.io
QUAYIO_USERNAME: ${{ secrets.quayio_username }}
QUAYIO_PASSWORD: ${{ secrets.quayio_password }}
# quay.io
-
name: Login to Quay.io
uses: docker/login-action@v1
with:
registry: quay.io
username: ${{ secrets.quayio_username }}
password: ${{ secrets.quayio_password }}
if: steps.docker-build.outputs.skipped != 'true'
- id: quayio-registry-push
name: Push the image
run: ${{ matrix.build_cmd }} --push-only
-
name: Build and push the image with '${{ matrix.build_cmd }}'
run: ${{ matrix.build_cmd }} --push
env:
DOCKER_REGISTRY: quay.io
if: steps.docker-build.outputs.skipped != 'true'
- id: quayio-registry-logout
name: Logout of the Docker Registry
run: docker logout "${DOCKER_REGISTRY}"
env:
DOCKER_REGISTRY: quay.io
# ghcr.io
-
name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
if: steps.docker-build.outputs.skipped != 'true'
-
name: Build and push the image with '${{ matrix.build_cmd }}'
run: ${{ matrix.build_cmd }} --push
env:
DOCKER_REGISTRY: ghcr.io
DOCKER_ORG: netbox-community
if: steps.docker-build.outputs.skipped != 'true'

View File

@ -63,6 +63,7 @@ RUN apk add --no-cache \
libjpeg-turbo \
libxslt \
openssl \
postgresql-client \
postgresql-libs \
py3-pip \
python3 \
@ -96,7 +97,7 @@ WORKDIR /opt/netbox/netbox
RUN mkdir -p static /opt/unit/state/ /opt/unit/tmp/ \
&& chown -R unit:root media /opt/unit/ \
&& chmod -R g+w media /opt/unit/ \
&& cd /opt/netbox/ && /opt/netbox/venv/bin/python -m mkdocs build \
&& cd /opt/netbox/ && SECRET_KEY="dummy" /opt/netbox/venv/bin/python -m mkdocs build \
--config-file /opt/netbox/mkdocs.yml --site-dir /opt/netbox/netbox/project-static/docs/ \
&& SECRET_KEY="dummy" /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py collectstatic --no-input

101
README.md
View File

@ -7,47 +7,28 @@
![Docker Pulls](https://img.shields.io/docker/pulls/netboxcommunity/netbox)
[![GitHub license](https://img.shields.io/github/license/netbox-community/netbox-docker)][netbox-docker-license]
[The Github repository](netbox-docker-github) houses the components needed to build NetBox as a Docker container.
Images are built using this code and are released to [Docker Hub][netbox-dockerhub] and [Quay.io][netbox-quayio] once a day.
[The GitHub repository](netbox-docker-github) houses the components needed to build NetBox as a container.
Images are built regularly using the code in that repository and are pushed to [Docker Hub][netbox-dockerhub], [Quay.io][netbox-quayio] and [GitHub Container Registry][netbox-ghcr].
Do you have any questions?
Before opening an issue on Github,
please join the [our Slack][netbox-docker-slack] and ask for help in the [`#netbox-docker`][netbox-docker-slack-channel] channel.
please join [our Slack][netbox-docker-slack] and ask for help in the [`#netbox-docker`][netbox-docker-slack-channel] channel.
[github-stargazers]: https://github.com/netbox-community/netbox-docker/stargazers
[github-release]: https://github.com/netbox-community/netbox-docker/releases
[netbox-docker-microbadger]: https://microbadger.com/images/netboxcommunity/netbox
[netbox-dockerhub]: https://hub.docker.com/r/netboxcommunity/netbox/
[netbox-quayio]: https://quay.io/repository/netboxcommunity/netbox
[netbox-ghcr]: https://github.com/netbox-community/netbox-docker/pkgs/container/netbox
[netbox-docker-github]: https://github.com/netbox-community/netbox-docker/
[netbox-docker-slack]: https://join.slack.com/t/netdev-community/shared_invite/zt-mtts8g0n-Sm6Wutn62q_M4OdsaIycrQ
[netbox-docker-slack-channel]: https://netdev-community.slack.com/archives/C01P0GEVBU7
[netbox-slack-channel]: https://netdev-community.slack.com/archives/C01P0FRSXRV
[netbox-docker-license]: https://github.com/netbox-community/netbox-docker/blob/release/LICENSE
[netbox-quayio]: https://quay.io/repository/netboxcommunity/netbox
## Docker Tags
* `vX.Y.Z`: These are release builds, automatically built from [the corresponding releases of NetBox][netbox-releases].
* `latest`: These are release builds, automatically built from [the `master` branch of NetBox][netbox-master].
* `snapshot`: These are pre-release builds, automatically built from the [`develop` branch of NetBox][netbox-develop].
* `develop-X.Y`: These are pre-release builds, automatically built from the corresponding [branch of NetBox][netbox-branches].
Then there is currently one extra tags for each of the above tags:
* `-ldap`: Contains additional dependencies and configurations for connecting NetBox to an LDAP directory.
[Learn more about that in our wiki][netbox-docker-ldap].
New images are built and published automatically every ~24h.
[netbox-releases]: https://github.com/netbox-community/netbox/releases
[netbox-master]: https://github.com/netbox-community/netbox/tree/master
[netbox-develop]: https://github.com/netbox-community/netbox/tree/develop
[netbox-branches]: https://github.com/netbox-community/netbox/branches
[netbox-docker-ldap]: https://github.com/netbox-community/netbox-docker/wiki/LDAP
## Quickstart
To get NetBox Docker up and running run the following commands.
To get _NetBox Docker_ up and running run the following commands.
There is a more complete [_Getting Started_ guide on our wiki][wiki-getting-started] which explains every step.
```bash
@ -77,16 +58,65 @@ The default credentials are:
[wiki-getting-started]: https://github.com/netbox-community/netbox-docker/wiki/Getting-Started
[docker-reception]: https://github.com/nxt-engineering/reception
## Container Image Tags
New container images are built and published automatically every ~24h.
> We recommend to use either the `vX.Y.Z-a.b.c` tags or the `vX.Y-a.b.c` tags in production!
* `vX.Y.Z-a.b.c`, `vX.Y-a.b.c`:
These are release builds containing _NetBox version_ `vX.Y.Z`.
They contain the support files of _NetBox Docker version_ `a.b.c`.
You must use _NetBox Docker version_ `a.b.c` to guarantee the compatibility.
These images are automatically built from [the corresponding releases of NetBox][netbox-releases].
* `latest-a.b.c`:
These are release builds, containing the latest stable version of NetBox.
They contain the support files of _NetBox Docker version_ `a.b.c`.
You must use _NetBox Docker version_ `a.b.c` to guarantee the compatibility.
These images are automatically built from [the `master` branch of NetBox][netbox-master].
* `snapshot-a.b.c`:
These are prerelease builds.
They contain the support files of _NetBox Docker version_ `a.b.c`.
You must use _NetBox Docker version_ `a.b.c` to guarantee the compatibility.
These images are automatically built from the [`develop` branch of NetBox][netbox-develop].
For each of the above tag, there is an extra tag:
* `vX.Y.Z`, `vX.Y`:
This is the same version as `vX.Y.Z-a.b.c` (or `vX.Y-a.b.c`, respectively).
It always points to the latest version of _NetBox Docker_.
* `latest`
This is the same version as `latest-a.b.c`.
It always points to the latest version of _NetBox Docker_.
* `snapshot`
This is the same version as `snapshot-a.b.c`.
It always points to the latest version of _NetBox Docker_.
Then there is currently one extra tags for each of the above tags:
* `-ldap`:
These container images contain additional dependencies and configuration files for connecting NetBox to an LDAP directory.
[Learn more about that in our wiki][netbox-docker-ldap].
[netbox-releases]: https://github.com/netbox-community/netbox/releases
[netbox-master]: https://github.com/netbox-community/netbox/tree/master
[netbox-develop]: https://github.com/netbox-community/netbox/tree/develop
[netbox-branches]: https://github.com/netbox-community/netbox/branches
[netbox-docker-ldap]: https://github.com/netbox-community/netbox-docker/wiki/LDAP
## Documentation
Please refer [to our wiki on Github][netbox-docker-wiki] for further information on how to use this NetBox Docker image properly.
It covers advanced topics such as using files for secrets, deployment to Kubernetes, monitoring and configuring NAPALM or LDAP.
Please refer [to our wiki on GitHub][netbox-docker-wiki] for further information on how to use the NetBox Docker image properly.
The wiki covers advanced topics such as using files for secrets, configuring TLS, deployment to Kubernetes, monitoring and configuring NAPALM and LDAP.
Our wiki is a community effort.
Feel free to correct errors, update outdated information or provide additional guides and insights.
[netbox-docker-wiki]: https://github.com/netbox-community/netbox-docker/wiki/
## Getting Help
Feel free to ask questions in our [Github Community][netbox-community]
Feel free to ask questions in our [GitHub Community][netbox-community]
or [join our Slack][netbox-docker-slack] and ask [in our channel `#netbox-docker`][netbox-docker-slack-channel],
which is free to use and where there are almost always people online that can help you in the Slack channel.
@ -104,22 +134,19 @@ This project relies only on *Docker* and *docker-compose* meeting these requirem
To check the version installed on your system run `docker --version` and `docker-compose --version`.
## Breaking Changes
From time to time it might become necessary to re-engineer the structure of this setup.
Things like the `docker-compose.yml` file or your Kubernetes or OpenShift configurations have to be adjusted as a consequence.
Since November 2019 each image built from this repo contains a `org.opencontainers.image.version` label.
(The images contained labels since April 2018, although in November 2019 the labels' names changed.)
You can check the label of your local image by running `docker inspect netboxcommunity/netbox:v2.7.1 --format "{{json .Config.Labels}}"`.
## Updating
Please read [the release notes][releases] carefully when updating to a new image version.
Note that the version of the NetBox Docker container image must stay in sync with the code.
If you update for the first time, be sure [to follow our _How To Update NetBox Docker_ guide in the wiki][netbox-docker-wiki-updating].
[releases]: https://github.com/netbox-community/netbox-docker/releases
[netbox-docker-wiki-updating]: https://github.com/netbox-community/netbox-docker/wiki/Updating
## Rebuilding the Image
`./build.sh` can be used to rebuild the Docker image. See `./build.sh --help` for more information.
`./build.sh` can be used to rebuild the container image. See `./build.sh --help` for more information.
For more details on custom builds [consult our wiki][netbox-docker-wiki-build].

View File

@ -1 +1 @@
1.4.1
1.6.1

View File

@ -3,6 +3,14 @@
echo "▶️ $0 $*"
###
# Check for the jq library needed for parsing JSON
###
if ! command -v jq; then
echo "⚠️ jq command missing from \$PATH!"
exit 1
fi
###
# Checking for the presence of GITHUB_OAUTH_CLIENT_ID
# and GITHUB_OAUTH_CLIENT_SECRET

View File

@ -62,6 +62,7 @@ REDIS = {
'PASSWORD': _read_secret('redis_password', environ.get('REDIS_PASSWORD', '')),
'DATABASE': int(environ.get('REDIS_DATABASE', 0)),
'SSL': environ.get('REDIS_SSL', 'False').lower() == 'true',
'INSECURE_SKIP_TLS_VERIFY': environ.get('REDIS_INSECURE_SKIP_TLS_VERIFY', 'False').lower() == 'true',
},
'caching': {
'HOST': environ.get('REDIS_CACHE_HOST', environ.get('REDIS_HOST', 'localhost')),
@ -69,6 +70,7 @@ REDIS = {
'PASSWORD': _read_secret('redis_cache_password', environ.get('REDIS_CACHE_PASSWORD', environ.get('REDIS_PASSWORD', ''))),
'DATABASE': int(environ.get('REDIS_CACHE_DATABASE', 1)),
'SSL': environ.get('REDIS_CACHE_SSL', environ.get('REDIS_SSL', 'False')).lower() == 'true',
'INSECURE_SKIP_TLS_VERIFY': environ.get('REDIS_CACHE_INSECURE_SKIP_TLS_VERIFY', environ.get('REDIS_INSECURE_SKIP_TLS_VERIFY', 'False')).lower() == 'true',
},
}
@ -145,6 +147,9 @@ ENFORCE_GLOBAL_UNIQUE = environ.get('ENFORCE_GLOBAL_UNIQUE', 'False').lower() ==
# by anonymous users. List models in the form `<app>.<model>`. Add '*' to this list to exempt all models.
EXEMPT_VIEW_PERMISSIONS = list(filter(None, environ.get('EXEMPT_VIEW_PERMISSIONS', '').split(' ')))
# Enable GraphQL API.
GRAPHQL_ENABLED = environ.get('GRAPHQL_ENABLED', 'True').lower() == 'true'
# Enable custom logging. Please see the Django documentation for detailed guidance on configuring custom logs:
# https://docs.djangoproject.com/en/stable/topics/logging/
LOGGING = {}

View File

@ -18,7 +18,7 @@ services:
- ./scripts:/etc/netbox/scripts:z,ro
- netbox-media-files:/opt/netbox/netbox/media:z
postgres:
image: postgres:13-alpine
image: postgres:14-alpine
env_file: env/postgres.env
redis:
image: redis:6-alpine

View File

@ -1,7 +1,7 @@
version: '3.4'
services:
netbox: &netbox
image: netboxcommunity/netbox:${VERSION-v3.0-1.4.1}
image: netboxcommunity/netbox:${VERSION-v3.2-1.6.1}
depends_on:
- postgres
- redis
@ -35,7 +35,7 @@ services:
# postgres
postgres:
image: postgres:13-alpine
image: postgres:14-alpine
env_file: env/postgres.env
volumes:
- netbox-postgres-data:/var/lib/postgresql/data

View File

@ -82,3 +82,10 @@ def __getattr__(name):
except:
pass
raise AttributeError
def __dir__():
names = []
for config in _loaded_configurations:
names.extend(config.__dir__())
return names

3
env/netbox.env vendored
View File

@ -14,6 +14,7 @@ EMAIL_USERNAME=netbox
# EMAIL_USE_SSL and EMAIL_USE_TLS are mutually exclusive, i.e. they can't both be `true`!
EMAIL_USE_SSL=false
EMAIL_USE_TLS=false
GRAPHQL_ENABLED=true
HOUSEKEEPING_INTERVAL=86400
MAX_PAGE_SIZE=1000
MEDIA_ROOT=/opt/netbox/netbox/media
@ -23,10 +24,12 @@ NAPALM_TIMEOUT=10
NAPALM_USERNAME=
REDIS_CACHE_DATABASE=1
REDIS_CACHE_HOST=redis-cache
REDIS_CACHE_INSECURE_SKIP_TLS_VERIFY=false
REDIS_CACHE_PASSWORD=t4Ph722qJ5QHeQ1qfu36
REDIS_CACHE_SSL=false
REDIS_DATABASE=0
REDIS_HOST=redis
REDIS_INSECURE_SKIP_TLS_VERIFY=false
REDIS_PASSWORD=H733Kdjndks81
REDIS_SSL=false
RELEASE_CHECK_URL=https://api.github.com/repos/netbox-community/netbox/releases

7
initializers/asns.yml Normal file
View File

@ -0,0 +1,7 @@
# - asn: 1
# rir: RFC1918
# tenant: tenant1
# - asn: 2
# rir: RFC4193 ULA
# - asn: 3
# rir: RFC3849

View File

@ -3,7 +3,6 @@
# region: Downtown
# status: active
# facility: Amsterdam 1
# asn: 12345
# custom_field_data:
# text_field: Description for AMS1
# - name: AMS 2
@ -11,7 +10,6 @@
# region: Downtown
# status: active
# facility: Amsterdam 2
# asn: 54321
# custom_field_data:
# text_field: Description for AMS2
# - name: AMS 3
@ -19,7 +17,6 @@
# region: Suburbs
# status: active
# facility: Amsterdam 3
# asn: 67890
# tenant: tenant1
# custom_field_data:
# text_field: Description for AMS3
@ -28,7 +25,6 @@
# region: Singapore
# status: active
# facility: Singapore 1
# asn: 09876
# tenant: tenant2
# custom_field_data:
# text_field: Description for SING1

View File

@ -1,5 +1,5 @@
napalm==3.3.1
ruamel.yaml==0.17.16
django-auth-ldap==3.0.0
django-auth-ldap==4.0.0
django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.12.3
google-crc32c==1.3.0
django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.12.1
napalm==3.4.0
ruamel.yaml==0.17.21

View File

@ -18,6 +18,6 @@ for groupname, group_details in groups.items():
if user:
group.user_set.add(user)
print(" 👤 Assigned user %s to group %s" % (username, AdminGroup.name))
print(" 👤 Assigned user %s to group %s" % (username, group.name))
group.save()

View File

@ -47,7 +47,10 @@ for permission_name, permission_details in object_permissions.items():
if group:
object_permission.groups.add(group)
print(" 👥 Assigned group %s object permission of %s" % (groupname, groupname))
print(
" 👥 Assigned group %s object permission of %s"
% (groupname, object_permission.name)
)
if permission_details.get("users", 0):
for username in permission_details["users"]:
@ -55,6 +58,9 @@ for permission_name, permission_details in object_permissions.items():
if user:
object_permission.users.add(user)
print(" 👤 Assigned user %s object permission of %s" % (username, groupname))
print(
" 👤 Assigned user %s object permission of %s"
% (username, object_permission.name)
)
object_permission.save()

View File

@ -42,6 +42,9 @@ for cf_name, cf_details in customfields.items():
if cf_details.get("type", False):
custom_field.type = cf_details["type"]
if cf_details.get("filter_logic", False):
custom_field.filter_logic = cf_details["filter_logic"]
if cf_details.get("weight", -1) >= 0:
custom_field.weight = cf_details["weight"]

View File

@ -1,42 +0,0 @@
import sys
from dcim.models import Site
from startup_script_utils import load_yaml, pop_custom_fields, set_custom_fields_values
from tenancy.models import Tenant
from virtualization.models import Cluster, ClusterGroup, ClusterType
clusters = load_yaml("/opt/netbox/initializers/clusters.yml")
if clusters is None:
sys.exit()
required_assocs = {"type": (ClusterType, "name")}
optional_assocs = {
"site": (Site, "name"),
"group": (ClusterGroup, "name"),
"tenant": (Tenant, "name"),
}
for params in clusters:
custom_field_data = pop_custom_fields(params)
for assoc, details in required_assocs.items():
model, field = details
query = {field: params.pop(assoc)}
params[assoc] = model.objects.get(**query)
for assoc, details in optional_assocs.items():
if assoc in params:
model, field = details
query = {field: params.pop(assoc)}
params[assoc] = model.objects.get(**query)
cluster, created = Cluster.objects.get_or_create(**params)
if created:
set_custom_fields_values(cluster, custom_field_data)
print("🗄️ Created cluster", cluster.name)

View File

@ -1,15 +0,0 @@
import sys
from startup_script_utils import load_yaml
from virtualization.models import ClusterGroup
cluster_groups = load_yaml("/opt/netbox/initializers/cluster_groups.yml")
if cluster_groups is None:
sys.exit()
for params in cluster_groups:
cluster_group, created = ClusterGroup.objects.get_or_create(**params)
if created:
print("🗄️ Created Cluster Group", cluster_group.name)

View File

@ -0,0 +1,33 @@
import sys
from ipam.models import ASN, RIR
from startup_script_utils import load_yaml
from tenancy.models import Tenant
asns = load_yaml("/opt/netbox/initializers/asns.yml")
if asns is None:
sys.exit()
required_assocs = {"rir": (RIR, "name")}
optional_assocs = {"tenant": (Tenant, "name")}
for params in asns:
for assoc, details in required_assocs.items():
model, field = details
query = {field: params.pop(assoc)}
params[assoc] = model.objects.get(**query)
for assoc, details in optional_assocs.items():
if assoc in params:
model, field = details
query = {field: params.pop(assoc)}
params[assoc] = model.objects.get(**query)
asn, created = ASN.objects.get_or_create(**params)
if created:
print(f"🔡 Created ASN {asn.asn}")

View File

@ -52,6 +52,7 @@ for params in ip_addresses:
params["assigned_object_id"] = Interface.objects.get(**query).id
else:
query = {field: params.pop(assoc)}
params[assoc] = model.objects.get(**query)
ip_address, created = IPAddress.objects.get_or_create(**params)