提示:请注意 信息的时效性、环境的匹配度。侵删!
文章目录
前言
NetBox 是一个集 IP地址管理工具和网络设施基础结构管理的工具。适合数据中心、园区网、中小企业等使用。
Netbox 官网:
https://github.com/netbox-community/netbox
`提示:以下是本篇文章正文内容,下面案例可供参考。建议初次安装参考文中的路径配置。`
NetBox 安装
一、环境
- Ubuntu20.04 LTS
- 2核 4G
- PostgreSQL
- > v10
- Redis
- > 4.0
- NetBox
- > v3
- Python
- > 3.8
- Git
二、安装
1.安装 PostgreSQL
# 安装
sudo apt install -y postgresql
# 验证
user@ubuntu:~$ psql -V
psql (PostgreSQL) 12.12 (Ubuntu 12.12-0ubuntu0.20.04.1)
# 配置数据库并设置开机自启
user@ubuntu:~$ sudo systemctl start postgresql && sudo systemctl enable postgresql
# 创建数据库
user@ubuntu:~$ sudo -u postgres psql # 进入数据库
# 建库授权
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'passwork';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
# 退出
\q
# 验证数据库状态
user@ubuntu:~$ psql --username netbox --password --host localhost netbox
Password: # 密码输入上面的 password
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
netbox=> \conninfo
You are connected to database "netbox" as user "netbox" on host "localhost" (address "127.0.0.1") at port "5432".
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
netbox=> \q
user@ubuntu:~$
Netbox数据库的 备份导出 和 导入恢复 方法:
# 导入数据,postgres需要密码
user@ubuntu:~$ su postgres
postgres@ubuntu:/home/user$ psql netbox < netbox.sql
# 导出数据可以使用 pg_dump
postgres@ubuntu:/home/user$ pg_dump --username netbox --password --host localhost netbox > netbox.sql
# 记得切换用户 否则会报错:
user@ubuntu:~$ pg_dump
pg_dump: error: connection to database "user" failed: FATAL: role "user" does not exist
2.安装 Redis
# 安装就行
user@ubuntu:~$ sudo apt install -y redis-server
# 查看版本信息
user@ubuntu:~$ redis-server -v
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=66bd629f924ac924
# 验证。返回 PONG 表示正常。
user@ubuntu:~$ redis-cli ping
PONG
3.安装 Python
# NetBox v3.0 开始最低支持 Python3.7,从 NetBox v3.2 开始将最低支持 Python3.8。
# 截止20220824 Ubuntu20.04 默认的 Python 版本为 3.8.10,有可能会仍缺少一些相关的依赖包。按需安装。
user@ubuntu:~$ sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
3.安装 Netbox
# 可以通过 wget 或者 git 来下载。
user@ubuntu:~$ sudo mkdir -p /opt/netbox/ && cd /opt/netbox/
user@ubuntu:~$ sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
Cloning into '.'...
remote: Enumerating objects: 1173, done.
remote: Counting objects: 100% (1173/1173), done.
remote: Compressing objects: 100% (1097/1097), done.
remote: Total 1173 (delta 210), reused 427 (delta 49), pack-reused 0
Receiving objects: 100% (1173/1173), 4.31 MiB | 1.90 MiB/s, done.
Resolving deltas: 100% (210/210), done.
user@ubuntu:~$
# 创建系统用户 netbox.WSGI 和 HTTP 服务配置的运行需要它。
user@ubuntu:~$ sudo adduser --system --group netbox
# 将 /opt/netbox/netbox/media/ 目录设置成 netbox 用户权限,这个文件夹下是前端页面
user@ubuntu:~$ sudo chown --recursive netbox /opt/netbox/netbox/media/
4.修改 NetBox 配置文件
# 复制一份默认的配置文件:
user@ubuntu:~$ cd /opt/netbox/netbox/netbox/ && sudo cp configuration_example.py configuration.py
# 生成一个密钥,用来维护 HTTP 用户会话状态,配置文件里面要用到:
user@ubuntu:/opt/netbox/netbox/netbox$ python3 ../generate_secret_key.py
TWRBswpBFZfDW9Xj3QmOowxU3-uMMD)xx9A0cZsz(uKw500YOx
# 最小化配置运行如下:
user@ubuntu:/opt/netbox/netbox/netbox$ sudo vim configuration.py
# :set number显示行号, 修改:
ALLOWED_HOSTS = ['*'] # 11行;允许所有客户端都可以访问前端页面
# 15~22 行。数据库,修改用户名和密码。
DATABASE = {
'NAME': 'netbox',
'USER': 'netbox', # 修改用户名
'PASSWORD': 'VIP@xdai.vip', # 修改密码
'HOST': 'localhost',
'PORT': '',
'CONN_MAX_AGE': 300,
}
# 60 行
SECRET_KEY = 'lKCyYG-q5qW0&3zK=*U9%Ga@yOzZOwEIz9JhrlIIdd*CXE0b#z'
# 203 行。 修改时区为 Asia/Shanghai
TIME_ZONE = 'Asia/Shanghai'
# 不同时期的配置文件不太相同,请根据最新的配置文件进行修改,以上仅供参考
5.安装其他可选的插件或组件
NetBox 支持插件和可选软件包。
组件可以写在 NetBox 根目录的 local_requirements.txt 文件中, 第一次初始化安装时 NetBox 会自动进行安装;后期也可以手动安装。
插件:
官方文档
官方组件:
- napalm 用于从网络设备获取实时数据, namplm教程 或 Netmiko 教程
user@ubuntu:/opt/netbox/netbox/netbox$ sudo sh -c "echo 'napalm' >> /opt/netbox/local_requirements.txt"
user@ubuntu:/opt/netbox/netbox/netbox$ sudo sh -c "echo 'napalm-h3c-comware' >> /opt/netbox/local_requirements.txt"
- django-storages 用于连接远程文件存储(默认是使用本地存储)
6.运行升级脚本
以上基础环境所依赖的软件已经部署完成,运行 upgrade.sh 初始化 Netbox,它会完成以下操作:
- 创建 Python 的虚拟环境,后面许多配置都在虚拟环境中进行。
- 安装 Netbox所需的 Python 包(根目录下的requirements.txt 和 local_requirements.txt)。
- 初始化 Django 数据,进行数据库的迁移。
- 本地生成离线文档
- 生成静态资源文件
默认的 PIP国外源 可能会很慢,参考 pip 国内加速
# 升级
user@ubuntu:~$ sudo /opt/netbox/upgrade.sh
Upgrade complete! Don't forget to restart the NetBox services:
# 重启NetBox,第一次安装可以跳过。
user@ubuntu:~$ sudo systemctl restart netbox netbox-rq
进入虚拟环境配置Netbox
# 进入虚拟环境,退出直接 deactivate
user@ubuntu:~$ source /opt/netbox/venv/bin/activate
# 创建 django 管理员用户, 邮箱可以为空。
# 若是前面已经恢复过数据库这里可以跳过。
(venv)user@ubuntu:/opt/netbox/netbox$ python3 manage.py createsuperuser
Username (leave blank to use 'user'): admin
Email address:
Password:
Password (again):
Superuser created successfully.
# 设置自动清理任务
# 注意脚本的路径,如果 NetBox 安装在其他路径,需要使用正确的绝对路径。
# housekeeping 管理命令用来处理一些定期清理任务,例如清除旧会话和过期的更改记录。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
6.Python试运行Netbox
# 运行Netbox
(venv)user@ubuntu:/opt/netbox/netbox$ python3 manage.py runserver 0.0.0.0:8000 --insecure
# 若是无法访问,则检查 防火墙 或者 iptables 设置中是否放行了 8000端口
# 或者暂时关闭 防火墙,直到再次重启启动linux
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl stop firewalld
Netbox 试运行正常状态,验证完毕后 Ctrl + C 停止服务:
7.使用 Gunicorn 运行 Django 服务,并配置Nginx服务
运行 Django 服务
# 将Gunicorn配置复制到 /opt/netbox 中,这里使用默认配置。若自定义配置,则 Nginx配置也需要修改。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
# 将Netbox 默认的systemd服务文件,复制到系统目录下
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
# 加载服务
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl daemon-reload
# 启动并设置为开机自启动
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl start netbox netbox-rq && sudo systemctl enable netbox netbox-rq
# 查看服务状态
(venv)user@ubuntu:/opt/netbox/netbox$ systemctl status netbox.service
(venv)user@ubuntu:/opt/netbox/netbox$
# 此时服务应该运行完成,但访问时可能会出现 静态文件 无法加载的问题
运行 Nginx 服务
# 安装 Nginx
(venv)user@ubuntu:/opt/netbox/netbox$ sudo apt install -y nginx
# 复制配置文件到 nginx 目录并覆盖 nginx.conf 。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/nginx.conf
# Netbox 的 nginx.conf 配置默认使用 https模式, 更改为http模式。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo vim /etc/nginx/nginx.conf
[sudo] password for user:
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 65535;
multi_accept on;
}
http {
include mime.types;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
server {
listen 80;
server_name localhost;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/static/;
}
location / {
proxy_pass http://localhost:8001;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
# 若发生跨域错误,则可以将下列注释取消,复制到 location 下
#add_header 'Access-Control-Allow-Origin' '*';
#add_header 'Access-Control-Allow-Credentials' 'true';
#add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
# 重启 Nginx 服务
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl restart nginx
(venv)user@ubuntu:/opt/netbox/netbox$
(venv)user@ubuntu:/opt/netbox/netbox$
(venv)user@ubuntu:/opt/netbox/netbox$
(venv)user@ubuntu:/opt/netbox/netbox$
9.测试,使用 80 端口来访问:
![在这里插入图片描述](https://img-blog.csdnimg.cn/439f1d8abc7e4afbb057456eb431dc84.png)
至此,NetBox 搭建完成!
引用
- 基于centos7 部署 NetBox3_世界–的博客-CSDN博客_netbox部署
- https://blog.csdn.net/sedbz/article/details/122988725
- NetBox 文档
- https://docs.netbox.dev/en/stable/introduction/
- 插件 - NetBox 文档
- https://docs.netbox.dev/en/stable/plugins/
- netbox 导出 csv 中文乱码、时区修改_某呆啊的博客-CSDN博客
- https://blog.csdn.net/q965844841qq/article/details/122570724
- 修改已经导出的文件编码
- https://blog.csdn.net/q965844841qq/article/details/119065251
- NetBox 时区修改
- https://blog.csdn.net/q965844841qq/article/details/122570724