如何在 Rocky Linux 8/CentOS 8 上安装 NetBox IPAM |
Netbox 是一个免费的开源工具,用于通过网络管理和记录计算机网络。通过创建数据中心中每个设备的虚拟实施,有助于减少组织中繁琐的联网任务。过去,这项任务是通过在纸上绘制网络结构来完成的,但使用 NetBox,可以通过网络可视化有组织且可呈现的操作。
Netbox 用 Django 编写,并使用 PostgreSQL 数据库来记录计算机网络并管理 IP 地址。它具有以下令人惊奇的功能:
- IPAM——IP地址管理
- VLAN管理
- 机架标高
- VRF管理
- 多站点(租赁)
- 连接管理 – 接口/控制台/电源
- 徽标等的定制标头
- 电路供应商管理
- 单一融合数据库
- DCIM——数据中心基础设施管理
- 报告警报
1.更新系统并安装依赖项
在本指南中,我们将在 Rocky Linux 8 上安装和配置 NetBox IPAM 工具。对于本指南,您将需要:
- Rocky Linux 8 系统。
- 具有 sudo 权限的用户。
- Python 3.8 及以上版本
- PostgreSQL 10
- 雷迪斯4.0
更新您的系统。
sudo yum update -y
安装安装依赖项所需的 EPEL 存储库。
sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
安装所需的依赖项。
sudo yum install -y gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git vim
将 SELinux 设置为宽容模式,因为我们将使用 TCP 端口。
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config | grep SELINUX=
2.在Rocky Linux 8/CentOS 8上安装Python
在本指南中,我们将安装 Python 3.9,因为此版本的 Netbox IPAM 需要 Python 3.7 及更高版本。 Python 3.9 在默认存储库中可用,可以使用以下命令安装:
使用以下命令在 Rocky Linux 8|CentOS 8 上安装 Python 3.9:
sudo yum install python3.9
依赖树;
Dependencies resolved.
================================================================================
Package Arch Version Repo Size
================================================================================
Installing:
python39 x86_64 3.9.7-1.module_el8.6.0+930+10acc06f appstream 33 k
Installing dependencies:
python39-libs x86_64 3.9.7-1.module_el8.6.0+930+10acc06f appstream 8.2 M
python39-pip-wheel noarch 20.2.4-6.module_el8.6.0+930+10acc06f appstream 1.3 M
python39-setuptools-wheel
noarch 50.3.2-4.module_el8.6.0+930+10acc06f appstream 497 k
Installing weak dependencies:
python39-pip noarch 20.2.4-6.module_el8.6.0+930+10acc06f appstream 2.0 M
python39-setuptools
noarch 50.3.2-4.module_el8.6.0+930+10acc06f appstream 871 k
Enabling module streams:
python39 3.9
Transaction Summary
================================================================================
Install 6 Packages
Total download size: 13 M
Installed size: 45 M
Is this ok [y/N]: y
确定 python 的路径。
$ whereis python3.9
python3: /usr/bin/python3.6 /usr/bin/python3.6m /usr/bin/python3 /usr/bin/python3.9 /usr/lib/python3.6 /usr/lib/python3.9 /usr/lib64/python3.6 /usr/lib64/python3.9 /usr/include/python3.6m /usr/include/python3.9 /usr/share/man/man1/python3.1.gz
创建到 /usr/bin/python 的符号链接。如果已经存在链接,请删除现有文件 sudo rm -rf /usr/bin/python3
和 pip3
sudo ln -fs /usr/bin/python3.9 /usr/bin/python3
sudo ln -fs /usr/bin/pip3.9 /usr/bin/pip3
验证安装的版本。
$ python3 --version
Python 3.9.13
3.安装并配置PostgreSQL数据库服务器
由于Netbox IPAM使用PostgreSQL数据库,因此需要我们将其安装在Rocky Linux上。首先,检查最新的可用版本。
$ sudo dnf module list postgresql
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
从输出中,我们将安装版本 13。如下启用它
$ sudo dnf module enable postgresql:13
......
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Enabling module streams:
postgresql 13
Transaction Summary
================================================================================
Is this ok [y/N]: y
继续并安装已启用的 PostgreSQL 版本。
sudo dnf install postgresql-server
初始化 PostgreSQL。
sudo postgresql-setup --initdb
成功安装后,启动 PostgreSQL 并使其能够在引导时运行。
sudo systemctl start postgresql
sudo systemctl enable postgresql
现在为 NetBox IPAM 创建一个数据库。
sudo -u postgres psql
在 PostgreSQL shell 中,创建一个数据库,如下所示。
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'Passw0rd';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\q
在 PostgreSQL 中启用密码登录。
sudo sed -i -e 's/ident/md5/' /var/lib/pgsql/data/pg_hba.conf
sudo systemctl restart postgresql
确认是否可以登录使用设置的密码创建的数据库。
$ psql -U netbox -h localhost -W
Password: <Input-Password>
psql (13.3)
Type "help" for help.
netbox=> \q
4.在Rocky Linux 8/CentOS 8上安装和配置Redis
所需Redis版本为4.0及以上,安装如下:
sudo yum install -y redis
启动并启用 Redis。
sudo systemctl start redis
sudo systemctl enable redis
检查安装的版本。
$ redis-server -v
Redis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=9529b692c0384fb7
验证服务器状态。
$ redis-cli ping
PONG
5. 在 Rocky Linux 8/CentOS 8 上安装和配置 Netbox
现在我们已经到了本指南的核心部分,我们需要从 git 克隆 NetBox IPAM 并在 Rocky Linux 8|CentOS 8 上配置它。
首先,导航到 /opt/ 目录并克隆 NetBox。
sudo mkdir -p /opt/netbox/ && cd /opt/netbox/
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
创建 Netbox 用户。
sudo groupadd --system netbox
sudo adduser --system -g netbox netbox
sudo chown --recursive netbox /opt/netbox/netbox/media/
现在为 Netbox 创建一个配置文件。
cd /opt/netbox/netbox/netbox/
sudo cp configuration_example.py configuration.py
现在编辑配置文件。
sudo vim configuration.py
如下编辑文件。
# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['*']
# PostgreSQL database configuration.
DATABASE = {
'NAME': 'netbox', # Database name you created
'USER': 'netbox', # PostgreSQL username you created
'PASSWORD': 'Passw0rd', # PostgreSQL password you set
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age
}
由于 Netbox 需要两个数据库用于任务和缓存,因此我们还将继续编辑 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,
}
}
生成 Django 密钥
现在生成 Django SECRET Key,如下所示。
python3 ../generate_secret_key.py
示例输出:
Tzvw(9w1tc2^lRzwLc@cDgdrX^3AwDDWXBgMM7OU$vR7LLAh#V
生成密钥后,继续并在 configuration.py 中进行设置,如下所示。
$ sudo vim /opt/netbox/netbox/netbox/configuration.py
# https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-SECRET_KEY
SECRET_KEY = 'Tzvw(9w1tc2^lRzwLc@cDgdrX^3AwDDWXBgMM7OU$vR7LLAh#V'
运行升级脚本
升级脚本自动运行以下命令:
- 创建Python环境并安装所有必需的Python包
- 运行数据库架构迁移
- 在本地构建文档(供离线使用)
- 聚合磁盘上的静态资源文件
使用的命令如下:
sudo /opt/netbox/upgrade.sh
示例输出:
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying extras.0001_squashed... OK
Applying tenancy.0001_squashed_0012... OK
Applying tenancy.0002_tenant_ordering... OK
Applying dcim.0001_squashed... OK
Applying dcim.0002_squashed... OK
Applying ipam.0001_squashed... OK
Applying virtualization.0001_squashed_0022... OK
Applying extras.0002_squashed_0059... OK
Applying extras.0060_customlink_button_class... OK
...
Collecting static files (python3 netbox/manage.py collectstatic --no-input)...
478 static files copied to '/opt/netbox/netbox/static'.
Removing stale content types (python3 netbox/manage.py remove_stale_contenttypes --no-input)...
Removing expired user sessions (python3 netbox/manage.py clearsessions)...
Upgrade complete! Don't forget to restart the NetBox services:
> sudo systemctl restart netbox netbox-rq
创建 Netbox 用户帐户。
下一步要求我们创建一个超级用户帐户,因为 Netbox 没有预定义的用户帐户。从 Netbox 目录执行命令
source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python3 manage.py createsuperuser
请按如下方式进行。
Username (leave blank to use 'thor'): admin
Email address: [email
Password:
Password (again):
Superuser created successfully.
继续并安排内务管理任务。这可以处理重复的清理任务。
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping
测试安装。
现在测试该应用程序。但在此之前,请允许端口 8000 通过防火墙。
sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload
现在测试网络盒
$ python3 manage.py runserver 0.0.0.0:8000 --insecure
Performing system checks...
System check identified no issues (0 silenced).
May 05, 2022 - 15:52:46
Django version 4.0.4, using settings 'netbox.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
现在您可以使用 URL http://IP_Address:8000 访问 Netbox。您还可以尝试使用创建的超级用户登录。
使用 CTL+C 停止服务器并按以下步骤操作。
安装并配置Gunicorn模块
Netbox 附带默认的 Gunicorn 配置,可以将其复制到 Netbox 路径,如下所示。
sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
您可能希望编辑该文件并为您的绑定 IP 和端口进行配置。
sudo vim /opt/netbox/gunicorn.py
在该文件中,添加以下行。
bind = '127.0.0.1:8001'
workers = 5
threads = 3
timeout = 120
# The maximum number of requests a worker can handle before being respawned
max_requests = 5000
max_requests_jitter = 500
创建 systemd 服务文件。
为了能够像管理其他系统服务一样管理 Netbox,我们需要创建系统文件。
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
sudo systemctl daemon-reload
启动并启用 Netbox 服务。
sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq
验证服务是否正在运行:
$ systemctl status netbox.service
● netbox.service - NetBox WSGI Service
Loaded: loaded (/etc/systemd/system/netbox.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-05-05 12:07:27 EDT; 11s ago
Docs: https://docs.netbox.dev/
Main PID: 12914 (gunicorn)
Tasks: 6 (limit: 23505)
Memory: 384.4M
CGroup: /system.slice/netbox.service
├─12914 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
├─12916 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
├─12917 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
├─12918 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
├─12919 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
└─12920 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c
该服务应在端口 8001 上运行。
$ ss -tunelp | grep 8001
tcp LISTEN 0 128 127.0.0.1:8001 0.0.0.0:* uid:993 ino:24304646 sk:1e <->
6.为Netbox IPAM安装并配置Nginx
在本指南中,我们将展示 Nginx Web 服务器的配置。使用以下命令在 Rocky Linux 8 上安装 Nginx Web 服务器。
sudo yum -y install nginx
我们首先为我们的网页创建一个虚拟主机文件。
sudo vim /etc/nginx/conf.d/netbox.conf
在该文件中,添加以下行。将 netbox.example.com 替换为您的 FQDN 或 IP_address。
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 $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
检查创建的文件的语法。
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
启动并启用 Nginx 在启动时运行。
sudo systemctl restart nginx
sudo systemctl enable nginx
在 SELinux 上允许端口 8001。
sudo semanage port -a -t dns_port_t -p tcp 8001
sudo setsebool -P httpd_can_network_connect 1
如果您使用firewalld,请允许端口通过防火墙。
sudo firewall-cmd --permanent --add-port={80,443}/tcp
sudo firewall-cmd --reload
7. 访问 Netbox IPAM 工具 Web UI
一切配置完成后,我们现在可以使用 URL http://Hostname 或 http://IP_Address 访问 Netbox IPAM Web 界面。您将被授予此页面。
要进行更改,您需要登录。点击右上角的“登录”。输入在上面第 2 步中为超级用户帐户创建的凭据。
成功登录后,您将看到此窗口。
在这里,您可以导航到左侧的面板,如下所示。
从该面板中,您可以添加设备、连接、IPAM、集群、电路、电源和其他选项。这仅仅意味着使用 Netbox,人们可以通过在此处添加所需的设备来全面管理数据中心。例如,要添加设备,您需要输入以下信息。
结论
现在就这样。我希望您对本关于如何在 Rocky Linux 8 上安装和配置 NetBox IPAM 工具的指南感到愉快。
这真是学到了很多东西!在此页面上查看更多内容。
- 在 Ubuntu 上安装和配置 NetBox IPAM 和 DCIM 工具
- 如何在 Debian 上安装 NetBox IPAM
- 使用 Apache 和 Supervisord 在 CentOS 7 上安装 NetBox