Merge branch 'develop' into Buildx
This commit is contained in:
commit
c78b2ad9b0
99
README.md
99
README.md
|
@ -7,47 +7,28 @@
|
||||||
![Docker Pulls](https://img.shields.io/docker/pulls/netboxcommunity/netbox)
|
![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]
|
[![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.
|
[The Github repository](netbox-docker-github) houses the components needed to build NetBox as a container.
|
||||||
Images are built using this code and are released to [Docker Hub][netbox-dockerhub] and [Quay.io][netbox-quayio] once a day.
|
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?
|
Do you have any questions?
|
||||||
Before opening an issue on Github,
|
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-stargazers]: https://github.com/netbox-community/netbox-docker/stargazers
|
||||||
[github-release]: https://github.com/netbox-community/netbox-docker/releases
|
[github-release]: https://github.com/netbox-community/netbox-docker/releases
|
||||||
[netbox-docker-microbadger]: https://microbadger.com/images/netboxcommunity/netbox
|
[netbox-docker-microbadger]: https://microbadger.com/images/netboxcommunity/netbox
|
||||||
[netbox-dockerhub]: https://hub.docker.com/r/netboxcommunity/netbox/
|
[netbox-dockerhub]: https://hub.docker.com/r/netboxcommunity/netbox/
|
||||||
|
[netbox-quayio]: https://quay.io/repository/netboxcommunity/netbox
|
||||||
|
[netbox-ghcr]: https://ghcr.io/netbox-community/netbox/
|
||||||
[netbox-docker-github]: https://github.com/netbox-community/netbox-docker/
|
[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]: 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-docker-slack-channel]: https://netdev-community.slack.com/archives/C01P0GEVBU7
|
||||||
[netbox-slack-channel]: https://netdev-community.slack.com/archives/C01P0FRSXRV
|
[netbox-slack-channel]: https://netdev-community.slack.com/archives/C01P0FRSXRV
|
||||||
[netbox-docker-license]: https://github.com/netbox-community/netbox-docker/blob/release/LICENSE
|
[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
|
## 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.
|
There is a more complete [_Getting Started_ guide on our wiki][wiki-getting-started] which explains every step.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -77,10 +58,59 @@ The default credentials are:
|
||||||
[wiki-getting-started]: https://github.com/netbox-community/netbox-docker/wiki/Getting-Started
|
[wiki-getting-started]: https://github.com/netbox-community/netbox-docker/wiki/Getting-Started
|
||||||
[docker-reception]: https://github.com/nxt-engineering/reception
|
[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 pre-release 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
|
## Documentation
|
||||||
|
|
||||||
Please refer [to our wiki on Github][netbox-docker-wiki] for further information on how to use this NetBox Docker image properly.
|
Please refer [to our wiki on Github][netbox-docker-wiki] for further information on how to use the NetBox Docker image properly.
|
||||||
It covers advanced topics such as using files for secrets, deployment to Kubernetes, monitoring and configuring NAPALM or LDAP.
|
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/
|
[netbox-docker-wiki]: https://github.com/netbox-community/netbox-docker/wiki/
|
||||||
|
|
||||||
|
@ -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`.
|
To check the version installed on your system run `docker --version` and `docker-compose --version`.
|
||||||
|
|
||||||
## Breaking Changes
|
## Updating
|
||||||
|
|
||||||
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}}"`.
|
|
||||||
|
|
||||||
Please read [the release notes][releases] carefully when updating to a new image version.
|
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
|
[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
|
## 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].
|
For more details on custom builds [consult our wiki][netbox-docker-wiki-build].
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,14 @@ echo "▶️ $0 $*"
|
||||||
|
|
||||||
source ./build-functions/gh-functions.sh
|
source ./build-functions/gh-functions.sh
|
||||||
|
|
||||||
|
###
|
||||||
|
# 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
|
# Checking for the presence of GITHUB_OAUTH_CLIENT_ID
|
||||||
# and GITHUB_OAUTH_CLIENT_SECRET
|
# and GITHUB_OAUTH_CLIENT_SECRET
|
||||||
|
|
|
@ -62,6 +62,7 @@ REDIS = {
|
||||||
'PASSWORD': _read_secret('redis_password', environ.get('REDIS_PASSWORD', '')),
|
'PASSWORD': _read_secret('redis_password', environ.get('REDIS_PASSWORD', '')),
|
||||||
'DATABASE': int(environ.get('REDIS_DATABASE', 0)),
|
'DATABASE': int(environ.get('REDIS_DATABASE', 0)),
|
||||||
'SSL': environ.get('REDIS_SSL', 'False').lower() == 'true',
|
'SSL': environ.get('REDIS_SSL', 'False').lower() == 'true',
|
||||||
|
'INSECURE_SKIP_TLS_VERIFY': environ.get('REDIS_INSECURE_SKIP_TLS_VERIFY', 'False').lower() == 'true',
|
||||||
},
|
},
|
||||||
'caching': {
|
'caching': {
|
||||||
'HOST': environ.get('REDIS_CACHE_HOST', environ.get('REDIS_HOST', 'localhost')),
|
'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', ''))),
|
'PASSWORD': _read_secret('redis_cache_password', environ.get('REDIS_CACHE_PASSWORD', environ.get('REDIS_PASSWORD', ''))),
|
||||||
'DATABASE': int(environ.get('REDIS_CACHE_DATABASE', 1)),
|
'DATABASE': int(environ.get('REDIS_CACHE_DATABASE', 1)),
|
||||||
'SSL': environ.get('REDIS_CACHE_SSL', environ.get('REDIS_SSL', 'False')).lower() == 'true',
|
'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',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ services:
|
||||||
env_file: env/netbox.env
|
env_file: env/netbox.env
|
||||||
environment:
|
environment:
|
||||||
SKIP_STARTUP_SCRIPTS: ${SKIP_STARTUP_SCRIPTS-false}
|
SKIP_STARTUP_SCRIPTS: ${SKIP_STARTUP_SCRIPTS-false}
|
||||||
user: '101'
|
user: 'unit:root'
|
||||||
volumes:
|
volumes:
|
||||||
- ./startup_scripts:/opt/netbox/startup_scripts:z,ro
|
- ./startup_scripts:/opt/netbox/startup_scripts:z,ro
|
||||||
- ./${INITIALIZERS_DIR-initializers}:/opt/netbox/initializers:z,ro
|
- ./${INITIALIZERS_DIR-initializers}:/opt/netbox/initializers:z,ro
|
||||||
|
@ -18,7 +18,7 @@ services:
|
||||||
- ./scripts:/etc/netbox/scripts:z,ro
|
- ./scripts:/etc/netbox/scripts:z,ro
|
||||||
- netbox-media-files:/opt/netbox/netbox/media:z
|
- netbox-media-files:/opt/netbox/netbox/media:z
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:13-alpine
|
image: postgres:14-alpine
|
||||||
env_file: env/postgres.env
|
env_file: env/postgres.env
|
||||||
redis:
|
redis:
|
||||||
image: redis:6-alpine
|
image: redis:6-alpine
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
version: '3.4'
|
version: '3.4'
|
||||||
services:
|
services:
|
||||||
netbox: &netbox
|
netbox: &netbox
|
||||||
image: netboxcommunity/netbox:${VERSION-v3.0}
|
image: netboxcommunity/netbox:${VERSION-v3.0-1.4.1}
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
- redis
|
- redis
|
||||||
- redis-cache
|
- redis-cache
|
||||||
- netbox-worker
|
- netbox-worker
|
||||||
env_file: env/netbox.env
|
env_file: env/netbox.env
|
||||||
user: '101'
|
user: 'unit:root'
|
||||||
volumes:
|
volumes:
|
||||||
- ./startup_scripts:/opt/netbox/startup_scripts:z,ro
|
- ./startup_scripts:/opt/netbox/startup_scripts:z,ro
|
||||||
- ./initializers:/opt/netbox/initializers:z,ro
|
- ./initializers:/opt/netbox/initializers:z,ro
|
||||||
|
@ -35,7 +35,7 @@ services:
|
||||||
|
|
||||||
# postgres
|
# postgres
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:13-alpine
|
image: postgres:14-alpine
|
||||||
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
|
||||||
|
|
|
@ -52,5 +52,5 @@ exec unitd \
|
||||||
--log /dev/stdout \
|
--log /dev/stdout \
|
||||||
--state /opt/unit/state/ \
|
--state /opt/unit/state/ \
|
||||||
--tmp /opt/unit/tmp/ \
|
--tmp /opt/unit/tmp/ \
|
||||||
--user 101 \
|
--user unit \
|
||||||
--group 0
|
--group root
|
||||||
|
|
|
@ -24,10 +24,12 @@ NAPALM_TIMEOUT=10
|
||||||
NAPALM_USERNAME=
|
NAPALM_USERNAME=
|
||||||
REDIS_CACHE_DATABASE=1
|
REDIS_CACHE_DATABASE=1
|
||||||
REDIS_CACHE_HOST=redis-cache
|
REDIS_CACHE_HOST=redis-cache
|
||||||
|
REDIS_CACHE_INSECURE_SKIP_TLS_VERIFY=false
|
||||||
REDIS_CACHE_PASSWORD=t4Ph722qJ5QHeQ1qfu36
|
REDIS_CACHE_PASSWORD=t4Ph722qJ5QHeQ1qfu36
|
||||||
REDIS_CACHE_SSL=false
|
REDIS_CACHE_SSL=false
|
||||||
REDIS_DATABASE=0
|
REDIS_DATABASE=0
|
||||||
REDIS_HOST=redis
|
REDIS_HOST=redis
|
||||||
|
REDIS_INSECURE_SKIP_TLS_VERIFY=false
|
||||||
REDIS_PASSWORD=H733Kdjndks81
|
REDIS_PASSWORD=H733Kdjndks81
|
||||||
REDIS_SSL=false
|
REDIS_SSL=false
|
||||||
RELEASE_CHECK_URL=https://api.github.com/repos/netbox-community/netbox/releases
|
RELEASE_CHECK_URL=https://api.github.com/repos/netbox-community/netbox/releases
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
napalm==3.3.1
|
napalm==3.3.1
|
||||||
ruamel.yaml==0.17.16
|
ruamel.yaml==0.17.17
|
||||||
django-auth-ldap==3.0.0
|
django-auth-ldap==3.0.0
|
||||||
google-crc32c==1.2.0
|
google-crc32c==1.3.0
|
||||||
django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.11.1
|
django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.12.3
|
||||||
|
|
|
@ -18,6 +18,6 @@ for groupname, group_details in groups.items():
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
group.user_set.add(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()
|
group.save()
|
||||||
|
|
|
@ -47,7 +47,10 @@ for permission_name, permission_details in object_permissions.items():
|
||||||
|
|
||||||
if group:
|
if group:
|
||||||
object_permission.groups.add(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):
|
if permission_details.get("users", 0):
|
||||||
for username in permission_details["users"]:
|
for username in permission_details["users"]:
|
||||||
|
@ -55,6 +58,9 @@ for permission_name, permission_details in object_permissions.items():
|
||||||
|
|
||||||
if user:
|
if user:
|
||||||
object_permission.users.add(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()
|
object_permission.save()
|
||||||
|
|
|
@ -42,6 +42,9 @@ for cf_name, cf_details in customfields.items():
|
||||||
if cf_details.get("type", False):
|
if cf_details.get("type", False):
|
||||||
custom_field.type = cf_details["type"]
|
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:
|
if cf_details.get("weight", -1) >= 0:
|
||||||
custom_field.weight = cf_details["weight"]
|
custom_field.weight = cf_details["weight"]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue