Netbox定义

官方文档: https://netbox.readthedocs.io/en/stable/

 

官方定义:netbox是一个被设计用于网络自动化的基础资源模型化应用。

NetBox is an infrastructure resource modeling (IRM) application designed to empower network automation.

是基于Django开发的,通过集成napalm库可以实现一些网络自动化等场景。

 

Netbox安装(CentOS环境为例)

参考文档: https://netbox.readthedocs.io/en/stable/installation/

  • 1.安装pgsql
sudo yum install -y postgresql-server libpq-devel
sudo postgresql-setup --initdb

PostgreSQL 版本要大于等于9.6 安装好后创建netbox数据库和netbox用户:

psql postgres

postgres=# CREATE DATABASE netbox;
CREATE DATABASE
postgres=# CREATE USER netbox WITH PASSWORD '你的密码';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
GRANT
postgres=# \q

# 测试创建的用户和密码是否可以正常登录:
$ psql --username netbox --password --host localhost netbox
  • 2.安装redis
sudo yum install -y redis
sudo systemctl start redis
sudo systemctl enable redis

# 测试redis是否正常
redis-cli ping
  • 3.配置netbox
sudo yum install -y gcc python36 python36-devel python3-pip libxml2-devel libxslt-devel libffi-devel openssl-devel redhat-rpm-config

# 1.下载netbox代码
wget https://github.com/netbox-community/netbox/archive/vX.Y.Z.tar.gz

# 2.配置netbox选项(netbox/netbox/configuration.py)
ALLOWED_HOSTS = ['*']

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

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:
需要先运行脚本生成python3 ../generate_secret_key.py
SECRET_KEY = 'auxq&g_g!yQnPSTCLb9Zbjdd2S^-Gm6gkU=TKu7aSxt1H70vg-'

4.迁移数据库

# 进入有manage.py的目录中,运行如下命令
python manage.py migrate

5.创建netbox管理员账号

# 进入有manage.py的目录中,运行如下命令
python manage.py createsuperuser
# 根据提示输入用户名和密码

6.测试运行netbox

python3 manage.py runserver 0.0.0.0:8000 --insecure

7.在实际的生产环境中,建议使用UWSGI来部署

8.界面截图 image.png

9.如果要运行脚本后实时获取设备的一些信息,需要安装napalm

pip install napalm

然后录入相关的设备,填写设备的账号名密码,关联platform,然后点击查看设备时就可以获取一些状态信息来,因为没有搭建网络设备的环境,这个步骤先不演示: image.png

 

支持通过Plugin的方式进行扩展

根据参考文档,创建相应的目录和文件,在文件中实现对应的变量即可。 参考文档: https://netbox.readthedocs.io/en/stable/plugins/ https://netbox.readthedocs.io/en/stable/plugins/development/ https://docs.djangoproject.com/en/3.2/intro/reusable-apps/

 

总结

大家如果Netbox相关的使用心得、或者其他好用的CMDB可以一起交流交流,共同学习进步!