Make startup scripts optional

To optimize the application boot time the startup scripts can now be
disabled by an ENV variable. The default when the variable is not set,
is to run the startup scripts. This means that the default behaviour is
not changed from earlier releases.
This commit is contained in:
Tobias Genannt 2019-02-28 09:20:10 +01:00
parent d4b394c999
commit 8c95f32b0c
2 changed files with 9 additions and 4 deletions

View File

@ -144,6 +144,7 @@ You can also dynamically add any other report to this same directory and Netbox
### Custom Initialization Code (e.g. Automatically Setting Up Custom Fields) ### Custom Initialization Code (e.g. Automatically Setting Up Custom Fields)
When using `docker-compose`, all the python scripts present in `/opt/netbox/startup_scripts` will automatically be executed after the application boots in the context of `./manage.py`. When using `docker-compose`, all the python scripts present in `/opt/netbox/startup_scripts` will automatically be executed after the application boots in the context of `./manage.py`.
The execution of the startup scripts can be prevented by setting the environment variable `SKIP_STARTUP_SCRIPTS` to `true`, e.g. in the file `env/netbox.env`.
That mechanism can be used for many things, e.g. to create Netbox custom fields: That mechanism can be used for many things, e.g. to create Netbox custom fields:

View File

@ -39,10 +39,14 @@ if not User.objects.filter(username='${SUPERUSER_NAME}'):
Token.objects.create(user=u, key='${SUPERUSER_API_TOKEN}') Token.objects.create(user=u, key='${SUPERUSER_API_TOKEN}')
END END
for script in /opt/netbox/startup_scripts/*.py; do if [ "$SKIP_STARTUP_SCRIPTS" == "true" ]; then
echo "☇ Skipping startup scripts"
else
for script in /opt/netbox/startup_scripts/*.py; do
echo "⚙️ Executing '$script'" echo "⚙️ Executing '$script'"
./manage.py shell --interface python < "${script}" ./manage.py shell --interface python < "${script}"
done done
fi
# copy static files # copy static files
./manage.py collectstatic --no-input ./manage.py collectstatic --no-input