65 lines
1.6 KiB
Bash
Executable file
65 lines
1.6 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
VERSION=$(cat "$__object/parameter/version")
|
|
|
|
src="netbox-$VERSION"
|
|
archive="v$VERSION.tar.gz"
|
|
url="https://github.com/netbox-community/netbox/archive/$archive"
|
|
install_dir=/opt/netbox/netbox
|
|
|
|
cat << EOF
|
|
set -e
|
|
|
|
# Ensure that coreutils is installed.
|
|
if [ ! -x \$(which mktemp) ]; then
|
|
echo "mktemp is not available on the remote host." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Create temporary working directory.
|
|
tmpdir=\$(mktemp -d)
|
|
cd "\$tmpdir"
|
|
|
|
# Download and extract sources.
|
|
curl -L '$url' > '$archive'
|
|
tar xf '$archive'
|
|
|
|
# Save cdist-upload configuration file.
|
|
cp '$install_dir/cdist/configuration.py' "\$tmpdir/configuration.py"
|
|
cp '$install_dir/cdist/ldap_config.py' "\$tmpdir/ldap_config.py"
|
|
|
|
# Deploy sources and restore configuration.
|
|
rm -r '$install_dir'
|
|
cp -r '$src/netbox' '$install_dir'
|
|
cp \$tmpdir/configuration.py '$install_dir/netbox/configuration.py'
|
|
cp \$tmpdir/ldap_config.py '$install_dir/netbox/ldap_config.py'
|
|
|
|
# Setup & enter python virtualenv.
|
|
virtualenv /opt/netbox/venv
|
|
|
|
# Install python dependencies.
|
|
/opt/netbox/venv/bin/pip3 install -r "\$tmpdir/$src/requirements.txt"
|
|
EOF
|
|
|
|
if [ -f "$__object/parameter/ldap-server" ]; then
|
|
echo "/opt/netbox/venv/bin/pip3 install django-auth-ldap"
|
|
fi
|
|
|
|
cat << EOF
|
|
# Set final permissions.
|
|
chown -R netbox /opt/netbox
|
|
|
|
# Run database migrations.
|
|
sudo -u netbox /opt/netbox/venv/bin/python3 /opt/netbox/netbox/manage.py migrate
|
|
|
|
# Generate static assets.
|
|
sudo -u netbox /opt/netbox/venv/bin/python3 /opt/netbox/netbox/manage.py collectstatic --no-input
|
|
|
|
# Remove temporary working directory.
|
|
cd /
|
|
rm -r "\$tmpdir"
|
|
|
|
# Restart services.
|
|
service netbox restart
|
|
service netbox-rq restart
|
|
EOF
|