@@ -14,24 +14,24 @@ network_check
1414update_os
1515
1616msg_info " Installing Dependencies"
17- $STD apt-get update
18- $STD apt-get install -y curl
19- $STD apt-get install -y sudo
20- $STD apt-get install -y mc
21- $STD apt-get install -y apache2
22- $STD apt-get install -y redis-server
23- $STD apt-get install -y postgresql
24- $STD apt-get install -y python3
25- $STD apt-get install -y python3-pip
26- $STD apt-get install -y python3-venv
27- $STD apt-get install -y python3-dev
28- $STD apt-get install -y build-essential
29- $STD apt-get install -y libxml2-dev
30- $STD apt-get install -y libxslt1-dev
31- $STD apt-get install -y libffi-dev
32- $STD apt-get install -y libpq-dev
33- $STD apt-get install -y libssl-dev
34- $STD apt-get install -y zlib1g-dev
17+ $STD apt-get install -y \
18+ curl \
19+ sudo \
20+ mc \
21+ apache2 \
22+ redis-server \
23+ postgresql \
24+ python3 \
25+ python3-pip \
26+ python3-venv \
27+ python3-dev \
28+ build-essential \
29+ libxml2-dev \
30+ libxslt1-dev \
31+ libffi-dev \
32+ libpq-dev \
33+ libssl-dev \
34+ zlib1g-dev
3535msg_ok " Installed Dependencies"
3636
3737msg_info " Setting up PostgreSQL"
@@ -40,76 +40,83 @@ DB_USER=netbox
4040DB_PASS=$( openssl rand -base64 18 | tr -dc ' a-zA-Z0-9' | cut -c1-13)
4141$STD sudo -u postgres psql -c " CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS ';"
4242$STD sudo -u postgres psql -c " CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;"
43+ {
44+ echo " Netbox-Credentials"
45+ echo -e " Netbox Database User: \e[32m$DB_USER \e[0m"
46+ echo -e " Netbox Database Password: \e[32m$DB_PASS \e[0m"
47+ echo -e " Netbox Database Name: \e[32m$DB_NAME \e[0m"
48+ } >> ~ /netbox.creds
4349msg_ok " Set up PostgreSQL"
4450
45- msg_info " Installing NetBox"
51+ msg_info " Installing NetBox"
52+ cd /opt
4653RELEASE=$( curl -s https://api.github.com/repos/netbox-community/netbox/releases/latest | grep " tag_name" | awk ' {print substr($2, 3, length($2)-4) }' )
47- wget -q " https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE} .tar.gz"
48- tar -xzf " v${RELEASE} .tar.gz" -C /opt
49- ln -s " /opt/netbox-${RELEASE} /" /opt/netbox
50- rm " v${RELEASE} .tar.gz"
54+ wget -q " https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE} .zip"
55+ unzip -q " v${RELEASE} .zip"
56+ mv /opt/netbox-${RELEASE} / /opt/netbox
5157
5258$STD adduser --system --group netbox
5359chown --recursive netbox /opt/netbox/netbox/media/
5460chown --recursive netbox /opt/netbox/netbox/reports/
5561chown --recursive netbox /opt/netbox/netbox/scripts/
5662
57- cp /opt/netbox/netbox/netbox/configuration_example.py /opt/netbox/netbox/netbox/configuration.py
63+ mv /opt/netbox/netbox/netbox/configuration_example.py /opt/netbox/netbox/netbox/configuration.py
5864
59- secret =$( python3 /opt/netbox/netbox/generate_secret_key.py)
60- escaped_secret =$( printf ' %s\n' " $secret " | sed ' s/[&/\]/\\&/g' )
65+ SECRET_KEY =$( python3 /opt/netbox/netbox/generate_secret_key.py)
66+ ESCAPED_SECRET_KEY =$( printf ' %s\n' " $SECRET_KEY " | sed ' s/[&/\]/\\&/g' )
6167
6268sed -i ' s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ["*"]/' /opt/netbox/netbox/netbox/configuration.py
63- sed -i " s|SECRET_KEY = ''|SECRET_KEY = '${escaped_secret } '|" /opt/netbox/netbox/netbox/configuration.py
69+ sed -i " s|SECRET_KEY = ''|SECRET_KEY = '${ESCAPED_SECRET_KEY } '|" /opt/netbox/netbox/netbox/configuration.py
6470sed -i " /DATABASE = {/,/}/s/'USER': '[^']*'/'USER': '$DB_USER '/" /opt/netbox/netbox/netbox/configuration.py
6571sed -i " /DATABASE = {/,/}/s/'PASSWORD': '[^']*'/'PASSWORD': '$DB_PASS '/" /opt/netbox/netbox/netbox/configuration.py
6672
67- $STD /opt/netbox/upgrade.sh & > /dev/null
68- sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
73+ $STD /opt/netbox/upgrade.sh
74+ ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
6975
70- sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
71- openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt -subj " /C=US/O=NetBox/OU=Certificate/CN=localhost" & > /dev/null
76+ mv /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
77+ $STD openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt -subj " /C=US/O=NetBox/OU=Certificate/CN=localhost"
7278$STD a2enmod ssl proxy proxy_http headers rewrite
7379$STD a2ensite netbox
7480systemctl restart apache2
7581
76- cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
77- cp /opt/netbox/contrib/* .service /etc/systemd/system/
82+ mv /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
83+ mv /opt/netbox/contrib/* .service /etc/systemd/system/
7884systemctl daemon-reload
7985systemctl enable -q --now netbox netbox-rq
8086
87+ echo " ${RELEASE} " > /opt/${APPLICATION} _version.txt
88+ {
89+ echo -e " Netbox Secret: \e[32m$SECRET_KEY \e[0m"
90+ } >> ~ /netbox.creds
91+ msg_ok " Set up PostgreSQL"
8192msg_ok " Installed NetBox"
8293
8394msg_info " Setting up Django Admin"
84- NetBox_USER =Admin
85- NetBox_PASS =$( openssl rand -base64 18 | tr -dc ' a-zA-Z0-9' | cut -c1-13)
95+ DJANGO_USER =Admin
96+ DJANGO_PASS =$( openssl rand -base64 18 | tr -dc ' a-zA-Z0-9' | cut -c1-13)
8697
8798source /opt/netbox/venv/bin/activate
8899$STD python3 /opt/netbox/netbox/manage.py shell << EOF
89100from django.contrib.auth import get_user_model
90101UserModel = get_user_model()
91- user = UserModel.objects.create_user('$NetBox_USER ', password='$NetBox_PASS ')
102+ user = UserModel.objects.create_user('$DJANGO_USER ', password='$DJANGO_PASS ')
92103user.is_superuser = True
93104user.is_staff = True
94105user.save()
95106EOF
107+ {
108+ echo " "
109+ echo " Netbox-Django-Credentials"
110+ echo -e " Django User: \e[32m$DJANGO_USER \e[0m"
111+ echo -e " Django Password: \e[32m$DJANGO_PASS \e[0m"
112+ } >> ~ /netbox.creds
96113msg_ok " Setup Django Admin"
97114
98- msg_info " Save credential file"
99- echo " " > ~/NetBox.creds
100- echo " NetBox Database Credentials" >> ~/NetBox.creds
101- echo " " >> ~/NetBox.creds
102- echo -e " NetBox Database User: \e[32m$DB_USER \e[0m" >> ~/NetBox.creds
103- echo -e " NetBox Database Password: \e[32m$DB_PASS \e[0m" >> ~/NetBox.creds
104- echo -e " NetBox Database Name: \e[32m$DB_NAME \e[0m" >> ~/NetBox.creds
105- echo -e " NetBox Admin user: \e[32m$NetBox_USER \e[0m" >> ~/NetBox.creds
106- echo -e " NetBox Admin Password: \e[32m$NetBox_PASS \e[0m" >> ~/NetBox.creds
107- msg_ok " Save cred file"
108-
109115motd_ssh
110116customize
111117
112118msg_info " Cleaning up"
119+ rm " /opt/v${RELEASE} .zip"
113120$STD apt-get -y autoremove
114121$STD apt-get -y autoclean
115122msg_ok " Cleaned"
0 commit comments