웹사이트 검색

Debian 11에 NetBox IRM을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. PostgreSQL 서버 설치
  3. Redis 서버 설치
  4. NetBox IRM 설치
  5. NetBox 관리자 사용자 만들기
  6. NetBox를 시스템 서비스로 설정
  7. Apache2를 리버스 프록시로 설정\n
  8. 결론

NetBox는 네트워크 자동화 및 인프라 엔지니어링을 위해 설계된 인프라 리소스 모델링(IRM) 소프트웨어입니다. 처음에는 DigitalOcean 팀에서 만들었고 이제 Apache 2 라이선스로 출시된 오픈 소스 프로젝트가 되었습니다. NetBox는 PostgreSQL을 기본 데이터베이스로 사용하는 Python Django 웹 프레임워크에서 생성되었으며 NetBox 설치는 다른 Python Django 웹 애플리케이션과 매우 유사합니다.

NetBox는 다음을 포함하는 인프라를 관리하는 데 도움이 됩니다.

  • DCIM(데이터 센터 인프라 관리)\n
  • IPAM(IP 주소 관리)
  • 데이터 회로\n
  • 연결(네트워크, 콘솔 및 전원)
  • 장비 랙
  • 가상화\n
  • 비밀

이 문서에서는 Debian 11 서버에 NetBox 인프라 리소스 모델링을 설치하는 방법에 대한 단계를 안내합니다. 이 문서에는 PostgreSQL 데이터베이스, Redis 서버의 기본 설치 및 Apache2의 역방향 프록시 기본 구성이 포함되어 있습니다. 결국 HTTPS/SSL이 활성화된 상태로 Debian 11에서 NetBox를 실행하게 됩니다.

전제 조건

이 자습서를 완료하려면 다음 요구 사항이 필요합니다.

  • Debian 11 서버 인스턴스 1개.
  • 루트/관리자 권한이 있는 루트가 아닌 사용자.\n
  • 데비안 서버를 가리키는 도메인 이름.

PostgreSQL 서버 설치

NetBox 애플리케이션은 PostgreSQL을 기본 데이터베이스로만 지원합니다. 따라서 Debian 서버에 PostgreSQL을 설치합니다. 그런 다음 NetBox 설치를 위한 새 데이터베이스와 사용자를 생성합니다.

NetBox의 현재 버전에는 최소한 PostgreSQL v10 이상이 필요합니다. Debian 11에서 리포지토리는 기본 PostgreSQL 서버 v13을 제공합니다.

시작하려면 아래의 apt 명령을 실행하여 Debian 저장소를 업데이트하고 패키지 색인을 새로 고칩니다.

sudo apt update

이제 다음 apt 명령을 사용하여 PostgreSQL 서버를 설치합니다. Y를 입력하여 확인하고 ENTER를 누르면 PostgreSQL 설치가 시작됩니다.

sudo apt install postgresql postgresql-common

이제 PostgreSQL 설치가 완료되었으므로 다음 systemctl 명령을 실행하여 PostgreSQL 서비스를 확인하고 확인합니다. PostgreSQL이 활성화되어 있고 시스템 부팅 시 자동으로 실행되는 것을 볼 수 있습니다. 그리고 PostgreSQL 서비스의 현재 상태가 실행 중입니다.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

다음으로 Nextbox에 대한 새 PostgreSQL 데이터베이스 및 사용자를 생성합니다. 이렇게 하려면 PostgreSQL 콘솔에 로그인해야 합니다.

다음 명령을 실행하여 "postgres" 역할을 사용하여 PostgreSQL 콘솔에 로그인합니다.

sudo -u postgres psql

이제 PostgreSQL 콘솔에서 다음 쿼리를 실행하여 새 데이터베이스와 사용자를 생성합니다. 이 예에서는 "netboxdb"라는 이름의 새 데이터베이스와 암호 "NetBoxRocks"를 사용하는 PostgreSQL 사용자 "netbox"를 생성합니다.

CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;

이제 "Ctrl+d"를 눌러 PostgreSQL 콘솔을 종료하거나 "\\q"를 입력하여 종료하십시오.

데이터베이스와 사용자를 확인하려면 다음 명령을 실행합니다. 그러면 PostgreSQL 서버의 "netboxdb" 데이터베이스에 "netbox" 사용자를 사용하여 PostgreSQL 셸에 연결됩니다.

데이터베이스 암호를 묻는 메시지가 표시되면 암호 NetBoxRocks"를 입력합니다.

sudo -u postgres psql --username netbox --password --host localhost netboxdb

PostgreSQL 콘솔과 "netboxdb" 데이터베이스에 로그인한 후 다음 쿼리를 실행하여 현재 연결을 확인합니다. 그리고 \netbox\ 사용자로 PostgreSQL 데이터베이스 \netboxdb\에 연결되어 있는 것을 볼 수 있습니다.

\conninfo

"Ctrl+d"를 눌러 PostgreSQL 콘솔을 종료하거나 "\\q"를 입력하여 종료하십시오.

Redis 서버 설치

Redis는 캐싱 및 큐잉을 위해 NetBox에서 사용할 메모리 내 키-값 데이터베이스입니다. 이제 Debian 서버에 Redis 서버를 설치합니다.

이 글을 쓰는 시점에서 최신 버전의 NetBox에는 Redis v4.0 이상이 필요했습니다. 최신 Debian 11 리포지토리는 Redis v5.6을 제공합니다.

Redis 설치를 시작하려면 아래의 apt 명령을 실행하십시오. Y를 입력하여 설치를 확인하고 ENTER를 누르면 Redis 설치가 시작됩니다.

sudo apt install redis-server

설치가 완료되면 다음 systemctl 명령을 실행하여 Redis 서비스를 확인하고 확인합니다. Redis 서비스가 활성화되고 시스템 부팅 시 자동으로 실행되는 것을 볼 수 있습니다. 그리고 Redis 서비스의 현재 상태는 실행 중입니다.

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

기본 Redis 설치는 인증 없이 제공됩니다. 프로덕션 환경의 경우 Redis 서버에서 인증을 사용하는 것이 좋습니다. Redis 인증을 활성화하려면 구성 파일 "/etc/redis/redis.conf"을 수정합니다.

다음 명령을 실행하여 Redis 구성 파일 "/etc/redis/redis.conf"을 편집합니다.

sudo nano /etc/redis/redis.conf

"requirepass" 옵션의 주석을 제거하고 Redis에 대한 비밀번호 인증을 입력하십시오. 이 예에서는 "RedisPasswordNetBox" 암호를 사용합니다.

requirepass RedisPasswordNetBox

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

이제 다음 명령을 실행하여 Redis 서비스를 다시 시작하고 새 변경 사항을 적용하십시오.

sudo systemctl restart redis-server

Redi 인증을 확인하려면 아래의 "redis-cli" 명령을 실행하여 Redis 콘솔에 연결합니다.

redis-cli

이제 다음 명령을 실행하여 Redis 인증을 확인하십시오. 암호가 맞으면 "OK"와 같은 출력 메시지가 표시됩니다.

AUTH RedisPasswordNetBox

이제 "Ctrl+d"를 눌러 Redis 콘솔을 종료합니다.

NetBox IRM 설치

NetBox는 Python Django 프레임워크로 작성된 오픈 소스 웹 애플리케이션입니다. 따라서 NetBox 설치는 Python Django Web-Framework와 매우 유사합니다. 최신 버전의 Netbox에는 Python v3.8 이상이 필요합니다.

NetBox 설치를 시작하기 전에 다음 명령을 실행하여 NetBox 웹 응용 프로그램을 실행하는 데 사용할 새 시스템 사용자 "netbox"를 만듭니다.

sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox

아래 apt 명령을 사용하여 Python3 및 일부 패키지 종속성을 설치합니다.

sudo apt install -y git python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev

설치가 완료되면 다음 명령을 실행하여 새 NetBox 설치 디렉터리 "/opt/netbox"를 생성하고 Git 명령을 사용하여 NetBox 소스 코드를 복제합니다.

mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .

이제 다음 명령을 사용하여 NetBox 설치 디렉토리의 소유권을 올바른 사용자 "netbox"로 변경하십시오.

sudo chown -R netbox:netbox /opt/netbox

그런 다음 작업 디렉토리를 "/opt/netbox/netbox/netbox"로 이동하고 NetBox "configuration_example.py"의 예제 구성을 "에 복사합니다. configuration.py\.

cd /opt/netbox/netbox/netbox
sudo -u netbox cp configuration_example.py configuration.py

netBox 구성 파일을 편집하기 전에 다음 명령을 실행하여 NetBox용 "SECRET_KEY"를 생성하십시오. 생성된 "SECRET_KEY"를 편집기에 복사합니다. 나중에 "configuration.py" 파일을 편집할 때 사용됩니다.

sudo -u netbox python3 ../generate_secret_key.py

다음 명령을 실행하여 "configuration.py" 파일 편집을 시작합니다.

sudo -u netbox nano configuration.py

이제 아래와 같이 NetBox 설치를 설정해야 합니다.

  • "ALLOWED_HOSTS" 구성에서 NetBox 설치를 위한 도메인 이름과 서버 IP 주소를 입력합니다. 이 예에서 NetBox는 도메인 이름 \netbox.hwdomain.io\ 및 서버 IP 주소 \192.168.5.20\에 설치됩니다.
  • NetBox용 PostgreSQL 데이터베이스 세부 정보를 "DATABASE" 설정에 입력합니다.\n
  • "REDIS" 구성에 Redis 암호를 입력합니다. "tasks" 및 "caching" 섹션 모두에서 암호를 변경해야 합니다.\n
  • 마지막으로 생성된 \SECRET_KEY\를 파일에 붙여넣습니다.

# domain and IP address
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.5.20']

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

# Redis cache configuration
REDIS = {
    'tasks': {
        'HOST': 'localhost',      # Redis server
        'PORT': 6379,             # Redis port
        'PASSWORD': 'RedisPasswordNetBox',           # Redis password (optional)
        'DATABASE': 0,            # Database ID
        'SSL': False,             # Use SSL (optional)
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': 'RedisPasswordNetBox',
        'DATABASE': 1,            # Unique ID for second database
        'SSL': False,
    }
}

# Secret key
SECRET_KEY = '!22_UYNLcWw+_5=$$=8mtL#JImfOlD*-KiuI6h'

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

이제 NetBox 설치를 시작하려면 아래와 같이 "upgrade.sh" 스크립트를 실행할 수 있습니다.

sudo -u netbox /opt/netbox/upgrade.sh

이 스크립트는 NetBox 설치를 자동으로 설치 및 구성합니다. 자세한 버전은 아래와 같습니다.

  • 이렇게 하면 NetBox 설치를 위한 새로운 Python 가상 환경이 생성됩니다.\n
  • 또한 NetBox용 일부 Python 종속성과 라이브러리를 설치합니다.\n
  • NetBox용 데이터베이스 마이그레이션 실행.\n
  • NetBox용 정적 파일 리소스 생성.

아래는 설치가 시작될 때의 출력입니다.

설치가 완료되면 다음 출력이 표시됩니다.

NetBox 관리자 사용자 생성

NetBox 기본 설치가 완료되었습니다. 이제 NetBox에 대한 새 관리 사용자를 생성합니다. 그리고 이것은 Django admin 사용자를 생성해야 할 때도 비슷한 방식입니다.

다음 명령을 실행하여 Python 가상 환경을 활성화합니다.

source /opt/netbox/venv/bin/activate

작업 디렉터리를 "/opt/netbox/netbox"로 이동합니다. 그런 다음 "manage.py" 스크립트를 실행하여 NetBox에 대한 새 관리 사용자를 만듭니다.

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

NextBox의 사용자 이름, 이메일 및 비밀번호를 입력합니다.

관리자 구성이 완료되면 다음 명령을 실행하여 NetBox에 필요한 cron 스크립트를 설정합니다. 이것은 매일 자동으로 실행됩니다.

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

마지막으로 다음 명령을 실행하여 NetBox 설치를 테스트하고 확인합니다. 설치가 올바르면 netBox가 이제 포트 "8000"에서 실행되는 것을 볼 수 있습니다.

python3 manage.py runserver 0.0.0.0:8000 --insecure

이제 터미널에서 "Ctrl+c"를 눌러 프로세스를 시작하세요. 그런 다음 "deactivate" 명령을 실행하여 Python 가상 환경을 종료합니다.

NetBox를 Systemd 서비스로 설정

NetBox에 대한 관리자 구성을 마친 후. 이제 NetBox를 시스템 서비스로 설정합니다. NetBox 서비스는 Gunicorn 및 HTTP 리버스 프록시에서 실행됩니다.

필요한 모든 구성 NetBox Gunicorn 및 systemd 서비스 스크립트는 기본적으로 "/opt/netbox/contrib" 디렉토리에서 사용할 수 있습니다.

다음 명령을 실행하여 Gunicorn 구성을 "/opt/netbox/gunicorn.py"에 복사합니다. 그런 다음 nano 편집기를 사용하여 파일을 편집합니다.

sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py

기본 구성에서 NetBox 응용 프로그램은 포트 "8001"을 사용하여 localhost에서 실행됩니다. 구성을 기본값으로 두거나 환경에 따라 변경할 수 있습니다.

bind = '127.0.0.1:8001'

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

다음으로 다음을 사용하여 systemd 서비스 파일을 "/etc/systemd/system" 디렉터리에 복사합니다. 이렇게 하면 NetBox 응용 프로그램의 기본 서비스인 "netbox" 서비스와 NetBox 요청 대기열 서비스의 "netbox-rq" 서비스 등 두 가지 서비스가 활성화됩니다.

sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/

이제 시스템 관리자를 다시 로드하여 새로운 NetBox 서비스 파일을 적용하십시오.

sudo systemctl daemon-reload

systemd 관리자를 다시 로드한 후 아래와 같이 systemctl 명령을 사용하여 "netbox" 및 "netbox-rq" 서비스를 실행할 수 있습니다. 두 서비스 모두 시스템 시작 시 자동으로 실행됩니다.

sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

마지막으로 다음 명령을 사용하여 NetBox 서비스를 확인하고 확인합니다.

sudo systemctl status netbox
sudo systemctl status netbox-rq

다음 출력에서 "netbox" 서비스가 활성화된 것을 볼 수 있습니다. 그리고 현재 상태는 실행 중입니다.

netbox-rq" 서비스의 경우 서비스 출력이 활성화되고 실행됩니다.

Apache2를 리버스 프록시로 설정

아래의 apt 명령을 실행하여 Apache2 웹 서버를 설치합니다. Y를 입력하여 설치를 확인하고 ENTER를 누르면 설치가 시작됩니다.

sudo apt install apache2

Apache2 설치를 마친 후 다음 명령을 실행하여 역방향 프록시에 사용할 일부 Aapche2 모듈을 활성화합니다. 일부 추가 모듈도 활성화되어 있어야 합니다.

sudo a2enmod ssl proxy proxy_http headers

다음으로 NetBox용 Apache2 가상 호스트 구성 샘플을 "/etc/apache2/sites-available/netbox.conf"에 복사합니다. 그런 다음 nano 편집기를 사용하여 "/etc/apache2/sites-available/netbox.conf" 파일을 편집합니다.

sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
sudo nano /etc/apache2/sites-available/netbox.conf

NetBox 설치의 도메인 이름과 SSL 인증서의 경로를 변경하십시오. 이 예에서는 "/etc/letsencrypt/live/netbox 디렉토리에서 사용할 수 있는 Letsencrypt의 SSL 인증서와 함께 "netbox.hwdomain.io" 도메인을 사용합니다. .hwdomain.io/\.

<VirtualHost *:443>
    ProxyPreserveHost On

    # CHANGE THIS TO YOUR SERVER'S NAME
    ServerName netbox.hwdomain.io

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/netbox.hwdomain.io/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/netbox.hwdomain.io/privkey.pem

    Alias /static /opt/netbox/netbox/static

    <Directory /opt/netbox/netbox/static>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>

    <Location /static>
        ProxyPass !
    </Location>

    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    ProxyPass / http://127.0.0.1:8001/
    ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>

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

이제 다음 명령을 실행하여 가상 호스트 구성 "netbox.conf"을 활성화합니다. 그런 다음 Apache 구성을 테스트하고 확인합니다. Apache2 구성이 올바르다는 의미인 "Syntax OK"와 같은 출력 메시지가 표시되어야 합니다.

sudo a2ensite netbox.conf
sudo apachectl configtest

이제 Apache2 서비스를 다시 시작하여 가상 호스트 파일에 새로운 변경 사항을 적용하십시오. 이제 Apache2 웹 서버는 "localhost:8001"에서 실행되는 NetBox 웹 응용 프로그램의 역방향으로 활성화된 HTTPS/SSL로 실행됩니다.

sudo systemctl restart apache2

설치를 확인하려면 웹 브라우저를 열고 NetBox 설치의 도메인 이름(예: https://netbox.hwdomain.io/)을 방문하십시오. 그리고 잠금 상태의 NetBox에 대한 대시보드 관리를 받아야 합니다.

오른쪽 상단의 "로그인" 버튼을 클릭합니다.

이제 netBox 설치를 위한 관리 사용자와 암호를 입력하고 "로그인"을 클릭하십시오.

NetBox의 대시보드 관리를 받아야 합니다.

결론

이 자습서를 통해 PostgreSQL 데이터베이스, Redis 캐싱 시스템, Gunicorn 및 Debian 11 서버의 Apache2 리버스 프록시를 사용하여 NetBox 인프라 리소스 모델링(IRM)을 설정했습니다. 또한 NetBox 웹 응용 프로그램을 쉽게 시작하고 중지할 수 있는 시스템 서비스로 NetBox를 구성했습니다. 결국 보안 HTTPS/SSL이 활성화된 Debian 서버에서 실행되는 NetBox IRM을 완전히 구성했습니다.