웹사이트 검색

Ubuntu 18.04 LTS에 NetBox 네트워크 문서 및 관리 도구를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 20.04(Focal Fossa)
  • Ubuntu 18.04(Bionic Beaver)

이 페이지에서

  1. 요구 사항\n
  2. 시작하기\n
  3. PostgreSQL 설치 및 구성
  4. NetBox 설치 및 구성
  5. NetBox용 Gunicorn 설치 및 구성
  6. Netbox용 감독자 구성
  7. NetBox용 Nginx 구성
  8. NetBox 웹 인터페이스 액세스

NetBox는 컴퓨터 네트워크를 관리하고 문서화하는 데 사용할 수 있는 무료 오픈 소스 웹 애플리케이션 소프트웨어입니다. 웹 브라우저를 통해 IP 주소 및 데이터 센터 인프라를 관리하도록 특별히 설계되었습니다. NetBox는 Django Python 프레임워크로 작성되었으며 데이터베이스에 PostgreSQL을 사용합니다. NetBox를 사용하면 중앙 위치에서 가상 머신 및 클러스터, 데이터 회로, 네트워크, 콘솔 및 전원 연결을 쉽게 관리하고 문서화할 수 있습니다.

이 튜토리얼에서는 Ubuntu 18.04 서버에 NetBox를 설치하는 방법을 설명합니다.

요구 사항

  • Ubuntu 18.04를 실행하는 서버.\n
  • 서버에 루트 암호가 설정되어 있습니다.\n

시작하기

먼저 다음 명령을 사용하여 시스템 패키지를 최신 버전으로 업데이트합니다.

apt-get update -y
apt-get upgrade -y

모든 패키지가 업데이트되면 시스템을 다시 시작하여 모든 구성 변경 사항을 적용하십시오.

다음으로 NetBox를 실행하는 데 필요한 종속 항목을 설치해야 합니다. 다음 명령으로 모두 설치할 수 있습니다.

apt-get install wget ca-certificates nginx supervisor git gcc python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev unzip -y

모든 종속성이 설치되면 다음 단계로 진행할 수 있습니다.

PostgreSQL 설치 및 구성

다음으로 서버에 PostgreSQL을 설치해야 합니다. 기본적으로 PostgreSQL의 최신 버전은 Ubuntu 18.04 기본 리포지토리에서 사용할 수 없습니다. 따라서 시스템에 PostgreSQL 리포지토리를 추가해야 합니다.

먼저 다음 명령을 사용하여 GPG 키를 다운로드하고 추가합니다.

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

그런 다음 다음 명령을 사용하여 저장소를 추가하십시오.

nano /etc/apt/sources.list.d/postgres.list

다음 줄을 추가합니다.

deb http://apt.postgresql.org/pub/repos/apt/ xanial-pgdg main

파일을 저장하고 닫습니다. 그런 다음 리포지토리를 업데이트하고 다음 명령을 사용하여 PostgreSQL을 설치합니다.

apt-get update -y
apt-get install postgresql postgresql-contrib -y

설치가 완료되면 다음 명령을 사용하여 PostgreSQL의 상태를 확인하십시오.

systemctl status postgresql

다음 출력이 표시되어야 합니다.

? postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2019-08-07 07:00:51 UTC; 23s ago
 Main PID: 13552 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 1098)
   CGroup: /system.slice/postgresql.service

Aug 07 07:00:50 hitesh systemd[1]: Starting PostgreSQL RDBMS...
Aug 07 07:00:51 hitesh systemd[1]: Started PostgreSQL RDBMS.

다음으로 NetBox용 데이터베이스와 사용자를 생성해야 합니다. 먼저 다음 명령을 사용하여 PostgreSQL 셸에 로그인합니다.

su - postgres
:~$ psql

산출:

psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1))
Type "help" for help.

다음으로 다음 명령을 사용하여 NetBox용 데이터베이스와 사용자를 생성합니다.

postgres=# CREATE DATABASE netbox;
postgres=# CREATE USER netbox WITH PASSWORD 'password';

그런 다음 다음 명령을 사용하여 NetBox에 모든 권한을 부여합니다.

postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;

마지막으로 다음 명령을 사용하여 PostgreSQL 셸을 종료합니다.

postgres=#exit

완료되면 다음 단계로 진행할 수 있습니다.

NetBox 설치 및 구성

다음 명령을 사용하여 최신 버전의 NetBox를 /opt 디렉토리에 다운로드할 수 있습니다.

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

다음으로 디렉토리를 netbox로 변경하고 Django SECRET Key를 생성합니다.

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

다음 출력에 생성된 키가 표시되어야 합니다.

+XHR3o&7K6isFk^DLc2%(jwN#tfGbV=O1hgMU$

그런 다음 다음 명령을 사용하여 기본 구성 파일의 이름을 바꿉니다.

mv configuration.example.py configuration.py

다음으로 구성 파일을 열고 데이터베이스 세부 정보와 비밀 키를 정의합니다.

nano configuration.py

다음과 같이 변경합니다.

#Replace your-server-ip with your server IP address:
# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['your-server-ip']

# PostgreSQL database configuration.
DATABASE = {
    'NAME': 'netbox',         # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'password',           # PostgreSQL password
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
}
SECRET_KEY = '+XHR3o&7K6isFk^DLc2%(jwN#tfGbV=O1hgMU$'

완료되면 파일을 저장하고 닫습니다.

다음으로 다음 명령을 사용하여 NetBox에 필요한 모든 종속성을 설치합니다.

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

설치가 완료되면 다음 명령을 사용하여 데이터베이스를 마이그레이션합니다.

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

성공적으로 마이그레이션되면 다음 출력이 표시됩니다.

  Applying secrets.0004_tags... OK
  Applying secrets.0005_change_logging... OK
  Applying secrets.0006_custom_tag_models... OK
  Applying ipam.0021_vrf_ordering... OK
  Applying ipam.0022_tags... OK
  Applying ipam.0023_change_logging... OK
  Applying ipam.0024_vrf_allow_null_rd... OK
  Applying ipam.0025_custom_tag_models... OK
  Applying dcim.0067_device_type_remove_qualifiers... OK
  Applying dcim.0068_rack_new_fields... OK
  Applying dcim.0069_deprecate_nullablecharfield... OK
  Applying dcim.0070_custom_tag_models... OK
  Applying extras.0020_tag_data... OK
  Applying extras.0021_add_color_comments_changelog_to_tag... OK
  Applying dcim.0071_device_components_add_description... OK
  Applying dcim.0072_powerfeeds... OK
  Applying dcim.0073_interface_form_factor_to_type... OK
  Applying extras.0022_custom_links... OK
  Applying extras.0023_fix_tag_sequences... OK
  Applying ipam.0026_prefix_ordering_vrf_nulls_first... OK
  Applying ipam.0027_ipaddress_add_dns_name... OK
  Applying sessions.0001_initial... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying users.0001_api_tokens_squashed_0002_unicode_literals... OK
  Applying users.0003_token_permissions... OK

다음으로 NetBox에 대한 관리자 계정을 생성해야 합니다. 다음 명령으로 수행할 수 있습니다.

python3 manage.py createsuperuser

관리자 사용자 이름과 암호를 입력하고 Enter 키를 누르면 다음과 같은 결과가 표시됩니다.

Username (leave blank to use 'root'): netboxadmin
Email address: 
Password: 
Password (again): 
Superuser created successfully.

다음으로 정적 파일을 이동하고 다음 명령을 사용하여 초기 데이터를 로드합니다.

python3 manage.py collectstatic
python3 manage.py loaddata initial_data

NetBox용 Gunicorn 설치 및 구성

다음으로 NetBox용 Gunicorn을 설치해야 합니다. 아래와 같이 pip 명령으로 설치할 수 있습니다.

pip3 install gunicorn

다음으로 다음 명령을 사용하여 NetBox용 Gunicorn 구성 파일을 만듭니다.

nano /opt/netbox/gunicorn_config.py

다음 줄을 추가합니다.

command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'your-server-ip:8001'
workers = 3
user = 'www-data'

완료되면 파일을 저장하고 닫습니다.

Netbox용 감독자 구성

다음으로 NetBox 서비스를 관리하도록 Supervisor를 구성해야 합니다. 다음 명령으로 수행할 수 있습니다.

nano /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

파일을 저장하고 닫은 다음 감독자 서비스를 다시 시작하고 다음 명령을 사용하여 시스템 재부팅 후 시작되도록 활성화합니다.

systemctl restart supervisor
systemctl enable supervisor

다음 명령을 사용하여 감독자 서비스를 확인할 수도 있습니다.

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 Wed 2019-08-07 07:13:26 UTC; 8s ago
     Docs: http://supervisord.org
  Process: 15013 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
 Main PID: 15015 (supervisord)
    Tasks: 5 (limit: 1098)
   CGroup: /system.slice/supervisor.service
           ??15015 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
           ??15037 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15042 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15043 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15044 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi

Aug 07 07:13:26 hitesh systemd[1]: Started Supervisor process control system for UNIX.
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,087 CRIT Supervisor running as root (no user in config file)
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,089 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 INFO RPC interface 'supervisor' initialized
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 CRIT Server 'unix_http_server' running without any HTTP authentication check
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,118 INFO supervisord started with pid 15015
Aug 07 07:13:28 hitesh supervisord[15015]: 2019-08-07 07:13:28,123 INFO spawned: 'netbox' with pid 15037
Aug 07 07:13:29 hitesh supervisord[15015]: 2019-08-07 07:13:29,610 INFO success: netbox entered RUNNING state, process has st

NetBox용 Nginx 구성

다음으로 포트 80을 사용하여 NetBox에 액세스하도록 Nginx를 구성해야 합니다. 이렇게 하려면 다음 명령을 사용하여 가상 호스트 구성 파일을 만듭니다.

nano /etc/nginx/sites-available/netbox

다음 줄을 추가합니다.

server {
    listen 80;
    server_name your-domain-name;
    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://your-server-ip:8001;
    }
}

파일을 저장하고 닫습니다. 그런 다음 다음 명령을 사용하여 가상 호스트를 활성화합니다.

ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/

마지막으로 Nginx 서비스를 다시 시작하여 다음 명령을 사용하여 모든 구성 변경 사항을 적용합니다.

systemctl restart nginx

NetBox 웹 인터페이스에 액세스

이제 NetBox가 설치 및 구성되었으며 NetBox 웹 인터페이스에 액세스할 시간입니다.

웹 브라우저를 열고 URL http://your-domain.com을 입력합니다. 다음 페이지로 리디렉션됩니다.

이제 오른쪽 상단에 있는 로그인 버튼을 클릭합니다. 다음 페이지가 표시됩니다.

이제 관리자 사용자 이름과 암호를 제공한 다음 로그인 버튼을 클릭하십시오. 다음 페이지에 NetBox 기본 대시보드가 표시되어야 합니다.

축하합니다! Ubuntu 18.04 서버에 NetBox를 성공적으로 설치하고 구성했습니다. 이제 중앙 위치에서 네트워크 및 IP 주소를 관리하고 문서화할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.