近期在評估 IP 與 Rack 管理系統,其中一款是 NetBox。
此文記錄安裝在 Ubuntu 18.04 過程與初步使用情況。
資料庫
NetBox 搭配的資料庫系統為 PostgreSQL,在 NetBox 2.2 版需要選用 PostgreSQL 9.4 以上的版本。
安裝資料庫伺服器
# apt-get update # apt-get install -y postgresql libpq-dev
接下來建立其它部份,請注意密碼不要使用與範例相同。
建立使用者與資料庫
# sudo -u postgres psql psql (9.4.5) Type "help" for help. postgres=# CREATE DATABASE netbox; CREATE DATABASE postgres=# CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K'; CREATE ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox; GRANT postgres=# \q
主系統
開始安裝系統主要用到的元件,包含 Python、Redis 等。
安裝主要元件
# apt-get install -y python3 python3-pip python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev redis-server zlib1g-dev
安裝主程式,我採用直接從 Git 安裝方式。
以 Git 進行下載
# mkdir -p /opt/netbox/ && cd /opt/netbox/ # apt-get install -y git # git clone -b master https://github.com/digitalocean/netbox.git .
安裝 Python 軟體包與設定。
以 PIP 方式進行處理
# pip3 install -r requirements.txt # pip3 install napalm # cd netbox/netbox/ # cp configuration.example.py configuration.py
設定檔 configuration.py 配置,主要有 ALLOWED_HOSTS、DATABASE、SECRET_KEY 這四大項。
其中 SECRET_KEY 可以預先使用 netbox/generate_secret_key.py 這支程式產生後,再填入。
系統設定修改
ALLOWED_HOSTS = ['netbox.example.com', '192.0.2.123'] DATABASE = { 'NAME': 'netbox', # Database name 'USER': 'netbox', # PostgreSQL username 'PASSWORD': 'J5brHrAXFLQSif0K', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) } SECRET_KEY = 'xxxxxxxx'
系統安裝完成後,需要手動建立一名管理者以供登入。
建立管理者
# python3 manage.py createsuperuser Username: admin Email address: admin@example.com Password: Password (again): Superuser created successfully.
至此系統安裝完成,可以進行初步測試。
執行系統測試
# python3 manage.py runserver 0.0.0.0:8000 --insecure Performing system checks... System check identified no issues (0 silenced). November 28, 2018 - 09:33:45 Django version 2.0.9, using settings 'netbox.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C.
請使用瀏覽器連至 http://ip:8000/ ,即可開始體驗 NetBox 系統。
網頁伺服器
上面完成的安裝僅適合測試或開發使用,若要正式上線,應該以網頁伺服器做為運作的服務基礎。
安裝 nginx
# apt-get install -y nginx
安裝完 nginx,接著使用文字編輯器建立給 NetBox 使用的站台設定,請存檔於 /etc/nginx/sites-available/netbox。
建立 NetBox 站台設定
server { listen 80; server_name netbox.example.com; client_max_body_size 25m; location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; } }
接著調整站台相關設定並重啟服務生效。
調整 nginx sites 設定與連結
# cd /etc/nginx/sites-enabled/ # rm default # ln -s /etc/nginx/sites-available/netbox # service nginx restart
安裝相關啟動所需服務
相關服務安裝
# pip3 install gunicorn # apt-get install -y supervisor
將以下設定存為 /opt/netbox/gunicorn_config.py。
gunicorn 服務設定
command = '/usr/bin/gunicorn' pythonpath = '/opt/netbox/netbox' bind = '127.0.0.1:8001' workers = 3 user = 'www-data'
將以下設定存為 /etc/supervisor/conf.d/netbox.conf。
supervisor 服務設定
[program:netbox] command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi directory = /opt/netbox/netbox/ user = www-data [program:netbox-rqworker] command = python3 /opt/netbox/netbox/manage.py rqworker directory = /opt/netbox/netbox/ user = www-data
重新啟動所需服務
重啟服務
# service supervisor restart
使用方式
安裝完成後,使用瀏覽器開啟 http://ip/ ,並登入先前所建立的管理者帳號密碼,即可開始順利使用。
裝置列表畫面
機櫃配置畫面
結論
NetBox 安裝流程算是容易,只要照著官方的安裝流程一步步進行不會有太大的問題。
使用後,我在 IP 管理部份的功能一下沒辦法上手,加上沒有內建繁體中文,亦無法由 GitHub 上貢獻繁體中文語系翻譯檔 (搜尋了一下該專案上的 Issue,官方表示暫時沒有加入可翻譯的架構想法),因此稍微研究後,先暫停使用 NetBox,準備接著試另一套 phpIPAM。
參考資料
- Installing NetBox - NetBox
https://netbox.readthedocs.io/en/stable/installation/