iT邦幫忙

0

NetBox-00-環境部屬

  • 分享至 

  • xImage
  •  

簡介

NetBox 是一款單純管理網路環境裝置以及IPAM的開源軟體,可以為開發者這或是公司同時開發不同客戶的管理工具。

安裝環境準備

  • OS: Debian11
  • vCPU: 2 Core
  • RAM: 512 MB
  • DB: postgresql 14

這次只有單純安裝 NetBox 網站服務,資料庫服務僅部屬 Table Schema。

NetBox

版本: v3.3.7

環境要求

  • Python >= 3.8
  • PostgreSQL >= 10
  • Redis >= 4.0

安裝步驟

設定資料庫

安裝之前先準備資料庫環境

sudo -u postgres psql postgres -c "CREATE DATABASE netbox"
sudo -u postgres psql postgres -c "CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K'"
sudo -u postgres psql postgres -c "GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox"
psql -U postgres -d netboxdb
GRANT ALL ON schema public TO netbox;
GRANT USAGE ON SCHEMA public TO your_user;
  • 執行結果
pollochang@postgresql:~$ sudo -u postgres psql postgres -c "CREATE DATABASE netboxdb"
CREATE DATABASE
pollochang@postgresql:~$ sudo -u postgres psql postgres -c "CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K'"
CREATE ROLE
pollochang@postgresql:~$ sudo -u postgres psql postgres -c "GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox"
GRANT
  • 測試 SQL
CREATE TABLE newtable (
	column1 int 
);
select * from newtable;
insert into newtable (column1) values(1);
drop table newtable;

安裝服務相依套件

sudo apt install -y redis-server curl python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev liberror-perl
sudo systemctl start redis-server
sudo systemctl enable redis-server

檢查環境

檢查 Python 版本有大於 3.8

  • 檢查指令
python3 -V
  • 執行結果
pollochang@manage-server:~$ python3 -V
Python 3.9.2

檢查 Redis 有部屬成功

  • 檢查指令
redis-server -v # 檢查版本
  • 執行結果
pollochang@manage-server:~$ redis-server -v
Redis server v=6.0.16 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=6d95e1af3a2c082a

檢查 Redis 可以連接

這部份如果 Redis 服務與 NetBox 是安裝在不同主機,必特別檢查。

  • 檢查指令
redis-cli ping
  • 執行結果
pollochang@manage-server:~$ redis-cli ping
PONG

安裝 NetBox 服務

  1. 新增使用者
sudo groupadd -g 600 netbox
sudo useradd -u 600 -g netbox -d /opt/netbox -s /bin/bash -c "netbox-service" netbox 
  1. 下載服務軟體

這部份我是直接下載

cd /tmp
wget -O /tmp/netbox-3.3.7.tar.gz https://github.com/netbox-community/netbox/archive/refs/tags/v3.3.7.tar.gz
sudo tar -xzf /tmp/netbox-3.3.7.tar.gz -C /opt
sudo ln -s /opt/netbox-3.3.7 /opt/netbox
sudo chown -R netbox:netbox /opt/netbox-3.3.7
  1. 準備亂數作為服務識別鑰匙
sudo su netbox -c "python3 /opt/netbox/netbox/generate_secret_key.py"
  • 執行結果
pollochang@manage-server:/tmp$ sudo su netbox -c "python3 /opt/netbox/netbox/generate_secret_key.py"
qFV&jHlvb1Oc0o4bsdj&DyuE^knwXGQjJ@nRFwoX#auK2jXIFv
  1. 設定參數
  • 文件: /opt/netbox/netbox/netbox/configuration.py

※ 首次安裝需要從範例中複製

sudo su netbox -c "cp /opt/netbox/netbox/netbox/configuration_example.py /opt/netbox/netbox/netbox/configuration.py"

變更文件內容段落

sudo su netbox -c "vim /opt/netbox/netbox/netbox/configuration.py"

ALLOWED_HOSTS

這部份主要是設定網站 URL 的 domain 限制。如果規劃的登入網址是 https://netbox.example.com/ 則設定 netbox.example.com ,單純網址依此類推。

ALLOWED_HOSTS = ['netbox.example.com', '192.0.2.123']

如果不想限制可以用星號處理

ALLOWED_HOSTS = ['*']

DATABASE

DATABASE = {
    'NAME': 'netbox',               # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'J5brHrAXFLQSif0K', # PostgreSQL password
    'HOST': '192.168.56.x',         # Database server
    'PORT': '5432',                 # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,            # Max database connection age (seconds)
}

REDIS

這部份如果是本機直接安裝可以直接複製即可。

REDIS = {
    'tasks': {
        'HOST': 'localhost',      # Redis server
        'PORT': 6379,             # Redis port
        'PASSWORD': '',           # Redis password (optional)
        'DATABASE': 0,            # Database ID
        'SSL': False,             # Use SSL (optional)
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': '',
        'DATABASE': 1,            # Unique ID for second database
        'SSL': False,
    }
}

SECRET_KEY

SECRET_KEY= 'qFV&jHlvb1Oc0o4bsdj&DyuE^knwXGQjJ@nRFwoX#auK2jXIFv'

BASE_PATH

TIME_ZONE

時區設定

參數可以參考wiki 文獻。例如台灣時區可以這樣設定:

TIME_ZONE = 'Asia/Taipei'
  1. 部屬環境
sudo su netbox -c "/opt/netbox/upgrade.sh"
  1. 建立系統超級使用者
source /opt/netbox/venv/bin/activate
python3 /opt/netbox/netbox/manage.py createsuperuser
  • 執行結果
pollochang@manage-server:~$ source /opt/netbox/venv/bin/activate
(venv) pollochang@manage-server:~$ python3 /opt/netbox/netbox/manage.py createsuperuser
Username (leave blank to use 'pollochang'): root
Email address: test@mail.com
Password: 
Password (again): 
Superuser created successfully.
  1. 設定排程
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
  1. 測試網站營運
source /opt/netbox/venv/bin/activate
python3 /opt/netbox/netbox/manage.py runserver 0.0.0.0:8000 --insecure
  1. 守護程序

我這邊的作法僅供參考,我是拿來測試研究方便用的。

實際部屬還是參可官網站 Gunicorn

  • /opt/netbox/startnetbox.sh
#!/bin/bash
source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python3 /opt/netbox/netbox/manage.py runserver 0.0.0.0:8000 --insecure
sudo chmod +x /opt/netbox/startnetbox.sh
  • /etc/systemd/system/netbox.service
[Unit]
Description=NetBox WSGI Service
Documentation=https://docs.netbox.dev/
After=network-online.target
Wants=network-online.target

[Service]
#Type=simple
Type=idle

User=netbox
Group=netbox
PIDFile=/var/tmp/netbox.pid
WorkingDirectory=/opt/netbox

ExecStart=/opt/netbox/startnetbox.sh 
#ExecStart=/opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
ExecStop=/bin/kill -15 $MAINPID

Restart=on-failure
RestartSec=30
PrivateTmp=true

[Install]
WantedBy=multi-user.target

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言