如何在Debian 10 Linux上安装Netbox Ipam

时间:2020-02-23 14:44:43  来源:igfitidea点击:

NetBox是一个用于管理和记录计算机网络和管理IP地址的开源IPAM/DCIM Web应用程序。
它最初被数字沉积的网络工程团队构思。
该工具是用Django Python框架编写的,并依赖于数据存储的PostgreSQL数据库。

Netbox构建块:IP地址管理(IPAM) - IP网络和地址,VRFS和VLANECEIPUCH机架 - 由Group和Sitedevices组织 - 设备类型以及安装连接 - 网络,控制台和设备中的电源连接 - 虚拟机和设备ClustersData电路 - 长途通信电路和提供商股票 - 敏感凭证的加密存储

如果我们有兴趣在其他系统上部署NetBox,请结帐:

如何使用Apache和Supervisord在CentOS 7上安装NetBox

以下是在Debian 10(Buster)Linux上安装安装NetBox的步骤。

第1步:安装所需的依赖项

首先安装运行netbox所需的所有依赖性应用程序:

sudo apt update
sudo apt -y install -y git gcc nginx redis supervisor python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev

第2步:安装和配置PostgreSQL

NetBox使用PostgreSQL数据库服务器来存储其数据。
所以在Debian 10上安装PostgreSQL服务器:

sudo apt update
sudo apt -y install postgresql-contrib postgresql-11-ip4r

为netbox创建数据库和用户。

$sudo -u postgres psql
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'StrongPassword';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\q

确认我们可以登录数据库 netbox用户。

$psql -U netbox -h localhost -W
Password: 
psql (11.5 (Debian 11.5-1+deb10u1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
netbox=> \q

第3步:安装和配置netbox

改成 /opt/目录和克隆项目代码。

cd /opt/
sudo git clone -b master https://github.com/digitalocean/netbox.git

从提供的示例文件创建配置文件。

cd netbox/netbox/netbox/
sudo cp configuration.example.py configuration.py

编辑配置文件并设置允许的主机和数据库登录详细信息:

$sudo vim configuration.py
....
ALLOWED_HOSTS = ['localhost']
....
DATABASE = {
     'NAME': 'netbox',             # Database name
     'USER': 'netbox',             # PostgreSQL username
     'PASSWORD': 'StrongPassword', # PostgreSQL password
     'HOST': 'localhost',          # Database server
     'PORT': '',                   # Database port (leave blank for default)
     'CONN_MAX_AGE': 300,          # Max database connection age
 }

生成django秘密密钥:

cd /opt/netbox/netbox
sudo ./generate_secret_key.py

然后在文件上设置密钥 /opt/netbox/netbox/netbox/configuration.py例子:

$sudo vim /opt/netbox/netbox/netbox/configuration.py
SECRET_KEY = 'L2lyoE^*DN)Hyman@theitroad!cvF1V=n0juWiATR'

安装netbox依赖项:

sudo pip3 install -r /opt/netbox/requirements.txt

迁移数据库数据:

cd /opt/netbox/netbox/
sudo python3 manage.py migrate

数据库迁移的示例输出。

Operations to perform:
  Apply all migrations: admin, auth, circuits, contenttypes, dcim, extras, ipam, secrets, sessions, taggit, tenancy, users, virtualization
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 taggit.0001_initial... OK
  Applying taggit.0002_auto_20140616_2121... OK
  Applying tenancy.0001_initial_squashed_0005_change_logging... OK
  Applying dcim.0001_initial... OK
  Applying ipam.0001_initial... OK
  Applying dcim.0002_auto_20150622_1821... OK
  Applying extras.0001_initial_squashed_0013_objectchange... OK
  Applying ipam.0002_vrf_add_enforce_unique... OK
  Applying dcim.0003_auto_20150628_1721_squashed_0010_devicebay_installed_device_set_null... OK
  Applying ipam.0003_ipam_add_vlangroups_squashed_0011_rir_add_is_private... OK
  Applying dcim.0011_devicetype_part_number_squashed_0022_color_names_to_rgb... OK
  Applying ipam.0012_services_squashed_0018_remove_service_uniqueness_constraint... OK
  Applying dcim.0023_devicetype_comments_squashed_0043_device_component_name_lengths... OK
  Applying virtualization.0001_virtualization... OK
  Applying ipam.0019_virtualization_squashed_0020_ipaddress_add_role_carp... OK
  Applying dcim.0044_virtualization_squashed_0061_platform_napalm_args... OK
  Applying extras.0014_configcontexts_squashed_0019_tag_taggeditem... OK
  Applying dcim.0062_interface_mtu_squashed_0065_front_rear_ports... OK
  Applying circuits.0001_initial_squashed_0006_terminations... OK
  Applying dcim.0066_cables...
    Adding console connections... 0 cables created
    Adding power connections... 0 cables created
    Adding interface connections... 0 cables created
 OK
  Applying circuits.0007_circuit_add_description_squashed_0017_circuittype_description...
    Adding circuit terminations... 0 cables created
 OK
  Applying tenancy.0006_custom_tag_models... OK
  Applying virtualization.0002_virtualmachine_add_status_squashed_0009_custom_tag_models... OK
  Applying secrets.0001_initial_squashed_0006_custom_tag_models... OK
  Applying ipam.0021_vrf_ordering_squashed_0025_custom_tag_models... OK
  Applying dcim.0067_device_type_remove_qualifiers_squashed_0070_custom_tag_models... OK
  Applying extras.0020_tag_data_squashed_0021_add_color_comments_changelog_to_tag... OK
  Applying dcim.0071_device_components_add_description_squashed_0088_powerfeed_available_power...
Updating cable device terminations...
 OK
  Applying dcim.0089_deterministic_ordering... OK
  Applying dcim.0090_cable_termination_models... OK
  Applying extras.0022_custom_links_squashed_0034_configcontext_tags... OK
  Applying extras.0035_deterministic_ordering... OK
  Applying extras.0036_contenttype_filters_to_q_objects... OK
  Applying ipam.0026_prefix_ordering_vrf_nulls_first_squashed_0032_role_description... OK
  Applying ipam.0033_deterministic_ordering... OK
  Applying secrets.0007_secretrole_description... OK
  Applying sessions.0001_initial... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying users.0001_api_tokens_squashed_0003_token_permissions... OK
  Applying virtualization.0010_cluster_add_tenant_squashed_0012_vm_name_nonunique... OK
  Applying virtualization.0013_deterministic_ordering... OK

创建管理员用户:

$sudo python3 manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: Hyman@theitroad
Password: <Enter Password>
Password (again): <Re-enter Password>
Superuser created successfully.

移动静态文件

$cd /opt/netbox/netbox
$sudo python3 manage.py collectstatic
280 static files copied to '/opt/netbox/netbox/static'.

第3步:安装和配置鼠尾草

使用pip3安装枪手:

$sudo pip3 install gunicorn
Collecting gunicorn
   Downloading https://files.pythonhosted.org/packages/69/ca/926f7cd3a2014b16870086b2d0fdc84a9e49473c68a8dff8b57f7c156f43/gunicorn-20.0.4-py2.py3-none-any.whl (77kB)
     100% |████████████████████████████████| 81kB 1.7MB/s 
 Requirement already satisfied: setuptools>=3.0 in /usr/lib/python3/dist-packages (from gunicorn) (40.8.0)
 Installing collected packages: gunicorn
 Successfully installed gunicorn-20.0.4

为netbox配置Gunicorn:

cat <<EOF | sudo tee /opt/netbox/gunicorn_config.py
command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'localhost:8085'
workers = 3
user = 'www-data'
EOF

第4步:配置Supervisord

创建Supervisord配置文件:

cat <<EOF | sudo tee /etc/supervisor/conf.d/netbox.conf
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data
EOF

重新启动并启用Supervisord服务以启动启动。

sudo systemctl restart supervisor.service
sudo systemctl enable supervisor.service

状态应显示使用netbox输出运行:

$ systemctl status  supervisor
● supervisor.service - Supervisor process control system for UNIX
   Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2017-01-18 21:01:30 UTC; 7s ago
     Docs: http://supervisord.org
 Main PID: 5797 (supervisord)
    Tasks: 5 (limit: 2377)
   Memory: 188.4M
   CGroup: /system.slice/supervisor.service
           ├─5797 /usr/bin/python2 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
           ├─5878 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ├─5882 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ├─5883 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           └─5884 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
Jan 18 21:01:30 deb10 systemd[1]: supervisor.service: Succeeded.
Jan 18 21:01:30 deb10 systemd[1]: Stopped Supervisor process control system for UNIX.
Jan 18 21:01:30 deb10 systemd[1]: Started Supervisor process control system for UNIX.
Jan 18 21:01:30 deb10 supervisord[5797]: 2017-01-18 21:01:30,965 CRIT Supervisor is running as root.  Privileges were not dropped because no user is spe
Jan 18 21:01:30 deb10 supervisord[5797]: 2017-01-18 21:01:30,965 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing
Jan 18 21:01:30 deb10 supervisord[5797]: 2017-01-18 21:01:30,969 INFO RPC interface 'supervisor' initialized
Jan 18 21:01:30 deb10 supervisord[5797]: 2017-01-18 21:01:30,970 CRIT Server 'unix_http_server' running without any HTTP authentication checking
Jan 18 21:01:30 deb10 supervisord[5797]: 2017-01-18 21:01:30,970 INFO supervisord started with pid 5797
Jan 18 21:01:31 deb10 supervisord[5797]: 2017-01-18 21:01:31,972 INFO spawned: 'netbox' with pid 5878
Jan 18 21:01:33 deb10 supervisord[5797]: 2017-01-18 21:01:33,235 INFO success: netbox entered RUNNING state, process has stayed up for > than 1 seconds

第5步:配置Nginx Web服务器

让我们配置Nginx Web服务器,通过域名来帮助我们访问NetBox,而不是指定IP地址和端口。

为netbox创建新的nginx配置文件。

sudo vim /etc/nginx/conf.d/netbox.conf

具有以下数据。

server {
    listen 80;
    server_name netbox.example.com;
    client_max_body_size 25m;
    location /static/{
        alias /opt/netbox/netbox/static/;
    }
    location/{
        proxy_pass http://localhost:8085;
    }
}

检查nginx配置语法并重新启动其服务

$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

第6步:访问NetBox Web UI

打开默认的Web浏览器并打开NetBox Server主机名。
要进行更改,请使用前面创建的管理员用户登录。