NetBox 安装指南-为网络工程师打造的基础设施管理 - V2EX
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
bigmomo
V2EX    Linux

NetBox 安装指南-为网络工程师打造的基础设施管理

  •  
  •   bigmomo Jul 20, 2023 2016 views
    This topic created in 1034 days ago, the information mentioned may be changed or developed.

    NetBox 是用于建模和记录现代网络的领先解决方案。由 结合 IP 地址管理 ( IPAM ) 的传统学科和 具有强大 API 和扩展的数据中心基础架构管理 ( DCIM ),NetBox 为推动网络自动化提供了理想的“事实来源”。NetBox 在 Apache 2.0 许可下作为开源软件提供 作为数千个组织中网络自动化的基石。

    个人博客 (V2EX 有字数限制,删减了一部分内容,比如汉化)

    https://songxwn.com/netbox

    知乎

    https://zhuanlan.zhihu.com/p/644726134

    安装环境介绍

    使用 Rocky Linux 9.2 (关闭 SE Linux 和防火墙)

    使用 Python 3.9

    使用 PostgreSQL 15

    使用 Redis 6

    NetBox 版本:3.5.6

    硬件配置:建议 4C8G 以上,100G 存储空间。

    PS:没有使用 Docker 安装是为了方便修改代码。用 Docker 会更简单些。

    安装和配置 PostgreSQL 数据库

    关闭 SE Linux 和防火墙

    systemctl disable --now firewalld sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0 dnf install tree vim bash-completion -y 

    安装数据库

    dnf module install postgresql:15 -y # 指定安装 15 版本 postgresql-setup --initdb # 初始化数据库 vim /var/lib/pgsql/data/pg_hba.conf # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 # IPv6 local connections: host all all ::1/128 scram-sha-256 # 将主机连接的加密方式将 ident 改为 scram-sha-256 即可。 systemctl enable --now postgresql # 启动并设置开机启动 systemctl status postgresql ss -an | grep 5432 # 查看是否正常启动 

    修改密码和创建数据库

    sudo -u postgres psql # 登录到 PostgreSQL shell ALTER USER postgres WITH PASSWORD 'Songxwn.com'; # 运行查询,为默认的 PostgreSQL 用户“postgres”设置新密码。 CREATE DATABASE netboxdb; # 创建数据库 quit # 退出 

    PS: 优化配置生成器:https://pgtune.leopard.in.ua/

    安装和配置 Redis

    深入配置可以参考:https://songxwn.com/redis-sentinel/

    dnf install redis -y 

    配置访问密码

    vim /etc/redis/redis.conf requirepass Songxwn.com # 打开配置文件,找到被注释的 requirepass 行,修改密码为 Songxwn.com 。保存文件并退出 

    配置启动并验证

    systemctl enable --now redis # 配置启动并开机启动 systemctl status redis ss -an | grep 6379 # 验证启动 redis-cli 127.0.0.1:6379> AUTH Songxwn.com OK 127.0.0.1:6379> ping PONG 127.0.0.1:6379> exit # 输入密码登录验证是否正常 

    安装 Netbox

    环境准备

    dnf install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git -y # 安装环境,系统默认有 Python3.9 useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox # 创建 netbox 用户 mkdir -p /opt/netbox; cd /opt/netbox # 创建 netbox 所属权限的文件,作为安装主文件夹。并 CD 过去。 git clone -b master --depth 1 https://github.com/netbox-community/netbox.git . # 下载最新源代码,如果网络不允许,可以手动下载,上传到服务器。 chown -R netbox:netbox /opt/netbox cd /opt/netbox/netbox/netbox # 配置 netbox 文件夹权限所属。 tree -L 3 /opt/ /opt/ └── netbox ├── base_requirements.txt ├── CHANGELOG.md ├── contrib │ ├── apache.conf │ ├── gunicorn.py │ ├── netbox-housekeeping.service │ ├── netbox-housekeeping.sh │ ├── netbox-housekeeping.timer │ ├── netbox-rq.service │ ├── netbox.service │ ├── nginx.conf │ ├── openapi2.json │ └── openapi2.yaml ├── CONTRIBUTING.md ├── docs │ ├── administration │ ├── configuration │ ├── customization │ ├── development │ ├── extra.css │ ├── features │ ├── getting-started │ ├── index.md │ ├── installation │ ├── integrations │ ├── introduction.md │ ├── media │ ├── models │ ├── netbox_logo.png │ ├── netbox_logo.svg │ ├── plugins │ ├── reference │ ├── release-notes │ └── _theme ├── LICENSE.txt ├── mkdocs.yml ├── netbox │ ├── circuits │ ├── core │ ├── dcim │ ├── extras │ ├── generate_secret_key.py │ ├── ipam │ ├── manage.py │ ├── media │ ├── netbox │ ├── project-static │ ├── reports │ ├── scripts │ ├── templates │ ├── tenancy │ ├── users │ ├── utilities │ ├── virtualization │ └── wireless ├── NOTICE ├── pyproject.toml ├── README.md ├── requirements.txt ├── scripts │ ├── git-hooks │ └── verify-bundles.sh ├── SECURITY.md └── upgrade.sh # 查看当前目录结构 

    生成并配置加密密钥

    cd /opt/netbox/netbox/netbox # 确保进入到此目录 sudo -u netbox cp configuration_example.py configuration.py # 创建配置文件,指定用户权限 sudo -u netbox python3 ../generate_secret_key.py # 生成密钥,生成的密钥示例:SOGo0)YKa^RMGs&b=4p1AtnB-5nZq(!N#2-cah$q972DPCf&%F sudo -u netbox vim configuration.py SECRET_KEY = 'SOGo0)YKa^RMGs&b=4p1AtnB-5nZq(!N#2-cah$q972DPCf&%F' # 打开配置文件,将生成的密钥写入进去。 

    配置数据库连接等

    cd /opt/netbox/netbox/netbox sudo -u netbox vim configuration.py ALLOWED_HOSTS = ["*"] # 代表可以通过任意域名访问 Netbox DATABASE = { 'ENGINE': 'django.db.backends.postgresql', # Database engine 'NAME': 'netboxdb', # 配置数据库名字 'USER': 'postgres', # 数据库用户 'PASSWORD': 'Songxwn.com', # 数据库用户密码 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) 'CONN_MAX_AGE': 300, # Max database connection age } REDIS = { 'tasks': { 'HOST': 'localhost', 'PORT': 6379, 'USERNAME': '', 'PASSWORD': 'Sonxwn.com', #配置数据库密码 'DATABASE': 0, 'SSL': False, }, 'caching': { 'HOST': 'localhost', 'PORT': 6379, 'USERNAME': '', 'PASSWORD': 'Songxwn.com', #配置数据库密码 'DATABASE': 1, 'SSL': False, } } SECRET_KEY = 'SOGo0)YKa^RMGs&b=4p1AtnB-5nZq(!N#2-cah$q972DPCf&%F' # 加密密钥 ENABLE_LOCALIZATION = True # 开启本地化,让一些选项中文。 TIME_ZOnE= 'Asia/Shanghai' # 配置时区 PAGINATE_COUNT = 60 # 配置查看的时候默认分页数量 

    初始化 python 虚拟环境,初始化数据库,生成静态 Web 。

    sed -i 'pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple' /opt/netbox/upgrade.sh # 配置安装环境的时候,使用清华源的 pypi 。(可不配置) sudo -u netbox /opt/netbox/upgrade.sh # 执行安装,需要较久时间。 Completed. Removing expired user sessions (python3 netbox/manage.py clearsessions)... Clearing the cache (python3 netbox/manage.py clearcache)... Cache has been cleared. Upgrade complete! Don't forget to restart the NetBox services: > sudo systemctl restart netbox netbox-rq # 出现以上字符代表成功。 

    创建管理员账号

    source /opt/netbox/venv/bin/activate # 进入虚拟环境 cd /opt/netbox/netbox python3 manage.py createsuperuser Username (leave blank to use 'root'): admin Email address: [email protected] Password: Password (again): Superuser created successfully. # 创建管理员 admin ,输入邮箱和两遍密码。 

    配置每天定时清理任务

    sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping 

    配置 Gunicorn WSGI

    Gunicorn 是一个 Python 的 WSGI HTTP 服务器。

    sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py # 复制创建配置文件 sudo -u netbox vim /opt/netbox/gunicorn.py # 可修改配置文件,更改监听端口,默认 8001 cp -v /opt/netbox/contrib/*.service /etc/systemd/system/ # 复制到系统服务 systemctl daemon-reload # 重新加载系统服务 systemctl enable --now netbox netbox-rq # 配置启动并开机启动 systemctl status netbox systemctl status netbox-rq # 查看状态 

    配置 Nginx 作为反向代理

    dnf install nginx -y # 安装 Nginx vim /etc/nginx/conf.d/netbox.conf # 创建配置文件,注意修改 netbox.songxwn.com 为自己的域名。反向代理到 8001 端口 server { listen 80; # CHANGE THIS TO YOUR SERVER'S NAME server_name netbox.songxwn.com; client_max_body_size 25m; fastcgi_connect_timeout 1200s; fastcgi_send_timeout 1200s; fastcgi_read_timeout 1200s; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://127.0.0.1:8001; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; } } systemctl enable --now nginx # 配置启动并开机启动 systemctl status nginx # 查看状态 

    至此安装完成,可以打开你的域名,输入管理员账号登录。

    3 replies    2023-07-25 09:24:53 +08:00
    defunct9
        1
    defunct9  
       Jul 20, 2023
    问题不在于安装,而在于使用
    bigmomo
        2
    bigmomo  
    OP
       Jul 20, 2023
    @defunct9 安装是重要的一步
    julyclyde
        3
    julyclyde  
       Jul 25, 2023
    @Songxwn 你这个认知是错误的
    如果连安装都需要这么大篇幅,作者和用户其中至少有一方是菜鸟,也可能 both
    About     Help     Advertise     Blog     API     FAQ     Solana     3071 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 12:20 PVG 20:20 LAX 05:20 JFK 08:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86