No menu items!
No menu items!
More

    Quản lý thiết bị Datacenter sử dụng Netbox

    NetBox là giải pháp hàng đầu để lập mô hình và lập tài liệu cho các mạng hiện đại. Bằng cách kết hợp các nguyên tắc truyền thống của quản lý địa chỉ IP (IPAM) và quản lý cơ sở hạ tầng trung tâm dữ liệu (DCIM) với các API và tiện ích mở rộng mạnh mẽ, NetBox cung cấp “nguồn chân lý” lý tưởng để cung cấp năng lượng tự động hóa mạng. Có sẵn dưới dạng phần mềm mã nguồn mở theo giấy phép Apache 2.0, NetBox được hàng nghìn tổ chức trên thế giới sử dụng.

    1. Cài đặt mới, không import dữ liệu cũ

    Đơn giản chỉ việc clone source code của Netbox trên Github về và chạy lênh docker-compose up để triển khai nhanh Netbox.

    git clone -b release https://github.com/netbox-community/netbox-docker.git
    cd netbox-docker
    tee docker-compose.override.yml <<EOF
    version: '3.4'
    services:
      netbox:
        ports:
          - 8000:8080
    EOF
    docker-compose pull
    docker-compose up -d

    Sau khi triển khai xong, bạn sẽ có các conterner như dưới.

    $ docker ps
    CONTAINER ID   IMAGE                               COMMAND                  CREATED         STATUS                 PORTS                                                                                                               NAMES
    85baa47663d6   netboxcommunity/netbox:v3.3-2.3.0   "/usr/bin/tini -- /o…"   4 minutes ago   Up 3 minutes           0.0.0.0:8000->8080/tcp, :::8000->8080/tcp                                                                           netbox-docker-netbox-1
    9e3c50693b06   netboxcommunity/netbox:v3.3-2.3.0   "/usr/bin/tini -- /o…"   4 minutes ago   Up 4 minutes                                                                                                                               netbox-docker-netbox-worker-1
    9103dea361cc   netboxcommunity/netbox:v3.3-2.3.0   "/usr/bin/tini -- /o…"   4 minutes ago   Up 4 minutes                                                                                                                               netbox-docker-netbox-housekeeping-1
    8d4a14cbbae8   redis:7-alpine                      "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes           6379/tcp                                                                                                            netbox-docker-redis-cache-1
    ef8561db79c7   postgres:14-alpine                  "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes           5432/tcp                                                                                                            netbox-docker-postgres-1
    790fe4b8aa97   redis:7-alpine                      "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes           6379/tcp                                                                                                            netbox-docker-redis-1

    Sẽ mất ít phút để Netbox có thể sử dụng, bạn hãy show logs lên để theo dõi quá trình triển khai Netbox. Nếu bạn thấy nội dung Unit configuration loaded successfully thì bạn đã có thể sử dụng Netbox.

    $ docker logs netbox-docker-netbox-1
    🧬 loaded config '/etc/netbox/config/configuration.py'
    🧬 loaded config '/etc/netbox/config/extra.py'
    🧬 loaded config '/etc/netbox/config/logging.py'
    🧬 loaded config '/etc/netbox/config/plugins.py'
    💡 Superuser Username: admin, E-Mail: admin@example.com
    ⚠️⚠️⚠️ WARNING: The initializers have been moved to a plugin. See release notes.
    ⚠️⚠️⚠️ Set environment variable 'SKIP_STARTUP_SCRIPTS' to 'true' to remove this warning.
    ✅ Initialisation is done.
    ⏳ Waiting for control socket to be created... (1/10)
    2022/11/14 06:12:15 [warn] 7#7 Unit is running unprivileged, then it cannot use arbitrary user and group.
    2022/11/14 06:12:15 [info] 7#7 unit 1.27.0 started
    2022/11/14 06:12:15 [info] 14#14 discovery started
    2022/11/14 06:12:15 [notice] 14#14 module: python 3.10.4 "/usr/lib/unit/modules/python3.10.unit.so"
    2022/11/14 06:12:15 [info] 7#7 controller started
    2022/11/14 06:12:15 [notice] 7#7 process 14 exited with code 0
    2022/11/14 06:12:15 [info] 16#16 router started
    2022/11/14 06:12:15 [info] 16#16 OpenSSL 3.0.2 15 Mar 2022, 30000020
    ⚙️ Applying configuration from /etc/unit/nginx-unit.json
    2022/11/14 06:12:16 [info] 20#20 "netbox" prototype started
    2022/11/14 06:12:16 [info] 21#21 "netbox" application started
    2022/11/14 06:12:20 [info] 38#38 "netbox" application started
    ✅ Unit configuration loaded successfully
    2022/11/14 06:12:20 [notice] 7#7 process 12 exited with code 0

    Toàn bộ ứng dụng sẽ có sẵn sau vài phút. Mở URL http://0.0.0.0:8000/trong trình duyệt web. Bạn sẽ thấy trang chủ NetBox. Ở góc trên bên phải, bạn có thể đăng nhập.

    Thông tin đăng nhập mặc định là:

    • Tên người dùng: quản trị viên
    • Mật khẩu: admin
    • Mã thông báo API: 0123456789abcdef0123456789abcdef01234567

    Và đây là kết quả sau khi login thành công

    Nếu muốn xoá tất cả các container liên quan, hãy sử dụng lệnh

    $ docker-compose down
    [+] Running 7/7
     ⠿ Container netbox-docker-netbox-housekeeping-1  Removed                                                                                                                                                           0.4s
     ⠿ Container netbox-docker-netbox-1               Removed                                                                                                                                                           1.1s
     ⠿ Container netbox-docker-netbox-worker-1        Removed                                                                                                                                                           1.2s
     ⠿ Container netbox-docker-redis-cache-1          Removed                                                                                                                                                           0.4s
     ⠿ Container netbox-docker-redis-1                Removed                                                                                                                                                           0.4s
     ⠿ Container netbox-docker-postgres-1             Removed                                                                                                                                                           0.5s
     ⠿ Network netbox-docker_default                  Removed                                                                                                                                                           0.1s

    2. Cài đặt mới và sử dụng dữ liệu Netbox cũ

    Đầu tiên bạn hãy backup database ở server Netbox cũ bằng lệnh dưới và copy netbox.tar sang server Netbox mới.

    pg_dump -h localhost -U netbox -W -F t netbox > /home/netbox/netbox.tar

    Tạo thư mục chứa manifest

    mkdir -p /home/netbox/

    Trên server Netbox mưới hãy tạo file /home/netbox/netbox.yaml

    ---
    version: '3.4'
    services:
      netbox:
        image: lscr.io/linuxserver/netbox:latest
        container_name: netbox
        restart: always
        environment:
          - PUID=1000
          - PGID=1000
          - TZ=Asia/Ho_Chi_Minh
          - SUPERUSER_EMAILhoanghd164@gmail.com
          - SUPERUSER_PASSWORD=Hoanghd164
          - ALLOWED_HOST=*
          - DB_NAME=netbox
          - DB_USER=netbox
          - DB_PASSWORD=Hoanghd164
          - DB_HOST=192.168.13.205
          - DB_PORT=5432
          - REDIS_HOST=redis
          - REDIS_PORT=6379
        ports:
          - 8000:8000
        restart: unless-stopped
        links:
          - "redis"
          - "postgres"
    
      redis:
        container_name: redis
        image: redis
        restart: always
    
      postgres:
        image: postgres
        container_name: postgres
        restart: always
        environment:
          - POSTGRES_USER=netbox
          - POSTGRES_DB=netbox
          - POSTGRES_PASSWORD=Hoanghd164
        ports:
          - 5432:5432

    Tạo file /home/netbox/postgres.yaml

    version: '3.4'
    services:
      postgres:
        image: postgres
        container_name: postgres
        restart: always
        environment:
          - POSTGRES_USER=netbox
          - POSTGRES_DB=netbox
          - POSTGRES_PASSWORD=Hoanghd164
        ports:
          - 5432:5432

    Sau khi tạo xong các thư mục và 2 file yaml, bạn sẽ có cây thư mục dạng như dưới

    /home/
    ├── better-top
    ├── memory-top-script
    ├── netbox
        ├── netbox.yaml
        └── postgres.yaml

    Đầu tiên hãy triển khai file postgres.yaml trước

    $ docker-compose -f /home/netbox/postgres.yaml up -d
    [+] Running 2/2
     ⠿ Network netbox_default  Created                                                                                                                                                                                  0.0s
     ⠿ Container postgres      Started 

    Kết quả sau khi triển khai xong Postgres

    $ docker ps
    CONTAINER ID   IMAGE                     COMMAND                  CREATED          STATUS                 PORTS                                                                                                               NAMES
    3b771128ad82   postgres                  "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes          0.0.0.0:5432->5432/tcp, :::5432->5432/tcp                                                                           postgres

    Kiểm tra xem port 5432 của Postgres đã listen chưa

    $ netstat -tlnp | grep 5432
    tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      8741/docker-proxy   
    tcp6       0      0 :::5432                 :::*                    LISTEN      8748/docker-proxy

    Để có thể import được database bạn cần cài đặt postgresql-client lên máy mà bạn đang chứa file backup database (ở ví dụ của mình là file netbox.tar). Lưu ý bạn phải cài bản postgresql-client giống với phiên bản Postgres ở server Netbox cũ, ở server Nexbox cũ của mình đang sử dụng Postgres version 12.

    $ psql --version
    psql (PostgreSQL) 12.12 (Ubuntu 12.12-0ubuntu0.20.04.1)

    Hãy cài đặt postgresql-client 12 bằng lệnh dưới.

    curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
    echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee  /etc/apt/sources.list.d/pgdg.list
    sudo apt update
    sudo apt -y install postgresql-client-12

    Sau khi cài đặt xong postgresql-client 12 bạn có thể verify lại bằng lệnh dưới.

    $ psql --version
    psql (PostgreSQL) 12.13 (Ubuntu 12.13-1.pgdg18.04+1)

    Hoặc

    $ which pg_restore
    /usr/bin/pg_restore

    Nếu bạn sử dụng lệch phiên bản, khi chạy lệnh import bạn có thể sẽ gặp lỗi sau.

    $ pg_restore -h localhost -U netbox -W -F t -d netbox /home/netbox/netbox.tar 
    pg_restore: [archiver] unsupported version (1.14) in file header

    Nếu 5432 đã listen, bạn hãy import database cũ vào bằng lệnh dưới.

    $ pg_restore -h localhost -U netbox -W -F t -d netbox /home/netbox/netbox.tar 
    Password:

    Sau khi import database xong, hãy triển khai file netbox.yaml

    $ docker-compose -f /home/netbox/netbox.yaml up -d
    [+] Running 3/3
     ⠿ Container redis     Started                                                                                                                                                                                      1.2s
     ⠿ Container postgres  Running                                                                                                                                                                                      0.0s
     ⠿ Container netbox    Started                                                                                                                                                                                      1.8s

    Kiểm tra lại trạng thái của các container.

    $ docker ps
    CONTAINER ID   IMAGE                               COMMAND                  CREATED          STATUS                 PORTS                                                                                                               NAMES
    b8eb50a4648d   lscr.io/linuxserver/netbox:latest   "/init"                  29 minutes ago   Up 29 minutes          0.0.0.0:8000->8000/tcp, :::8000->8000/tcp                                                                           netbox
    9fa4f66a38ab   redis                               "docker-entrypoint.s…"   3 minutes ago    Up 3 minutes           6379/tcp                                                                                                            redis
    77ba3e7cf341   postgres                            "docker-entrypoint.s…"   3 minutes ago    Up 3 minutes           0.0.0.0:5432->5432/tcp, :::5432->5432/tcp                                                                           postgres

    Bạn có thể theo dõi logs triển khai bằng lệnh dưới

    $ docker logs netbox
    [custom-init] No custom services found, skipping...
    [migrations] started
    [migrations] no migrations found
    
    -------------------------------------
              _         ()
             | |  ___   _    __
             | | / __| | |  /  \
             | | \__ \ | | | () |
             |_| |___/ |_|  \__/
    
    
    Brought to you by linuxserver.io
    -------------------------------------
    
    To support LSIO projects visit:
    https://www.linuxserver.io/donate/
    -------------------------------------
    GID/UID
    -------------------------------------
    
    User uid:    1000
    User gid:    1000
    -------------------------------------
    
    Operations to perform:
      Apply all migrations: admin, auth, circuits, contenttypes, dcim, django_rq, extras, ipam, sessions, social_django, taggit, tenancy, users, virtualization, wireless
    Running migrations:
      Applying tenancy.0002_tenant_ordering... OK
      Applying extras.0060_customlink_button_class... OK
      Applying extras.0061_extras_change_logging... OK
      Applying extras.0062_clear_secrets_changelog... OK
      Applying tenancy.0003_contacts... OK
      Applying tenancy.0004_extend_tag_support... OK
      Applying ipam.0049_prefix_mark_utilized... OK
      Applying ipam.0050_iprange... OK
      Applying ipam.0051_extend_tag_support... OK
      Applying extras.0063_webhook_conditions... OK
      . . . .
      Applying virtualization.0032_virtualmachine_update_sites... OK
      Applying wireless.0002_standardize_id_fields... OK
      Applying wireless.0003_created_datetimefield... OK
      Applying wireless.0004_wireless_tenancy... OK
      Applying wireless.0005_wirelesslink_interface_types... OK
    [custom-init] No custom files found, skipping...
    [uWSGI] getting INI configuration from uwsgi.ini
    [uwsgi-static] added mapping for /static => static
    *** Starting uWSGI 2.0.20 (64bit) on [Mon Nov 14 11:51:09 2022] ***
    compiled with version: 11.2.1 20220219 on 21 December 2021 13:20:05
    os: Linux-4.15.0-194-generic #205-Ubuntu SMP Fri Sep 16 19:49:27 UTC 2022
    nodename: 9dbc247e9026
    machine: x86_64
    clock source: unix
    pcre jit disabled
    detected number of CPU cores: 16
    current working directory: /app/netbox/netbox
    detected binary path: /usr/sbin/uwsgi
    your memory page size is 4096 bytes
    detected max file descriptor number: 1048576
    building mime-types dictionary from file /etc/mime.types...1323 entry found
    lock engine: pthread robust mutexes
    thunder lock: disabled (you can enable it with --thunder-lock)
    uwsgi socket 0 bound to TCP address :8000 fd 3
    Python version: 3.10.8 (main, Nov 10 2022, 12:59:17) [GCC 11.2.1 20220219]
    [ls.io-init] done.
    Python main interpreter initialized at 0x7feac3d6ab40
    python threads support enabled
    your server socket listen backlog is limited to 100 connections
    your mercy for graceful operations on workers is 60 seconds
    mapped 203184 bytes (198 KB) for 1 cores
    *** Operational MODE: single process ***
    running "exec:/usr/bin/python3 ./manage.py collectstatic --noinput" (pre app)...
    
    256 static files copied to '/app/netbox/netbox/static'.
    running "exec:/usr/bin/python3 ./manage.py remove_stale_contenttypes --no-input" (pre app)...
    running "exec:/usr/bin/python3 ./manage.py clearsessions" (pre app)...
    WSGI app 0 (mountpoint='') ready in 3 seconds on interpreter 0x7feac3d6ab40 pid: 160 (default app)
    *** uWSGI is running in multiple interpreter mode ***
    spawned uWSGI master process (pid: 160)
    spawned uWSGI worker 1 (pid: 184, cores: 1)
    [uwsgi-daemons] spawning "/usr/bin/python3 ./manage.py rqworker" (uid: 1000 gid: 1000)

    Toàn bộ ứng dụng sẽ có sẵn sau vài phút. Mở URL http://0.0.0.0:8000/trong trình duyệt web. Bạn sẽ thấy trang chủ NetBox. Ở góc trên bên phải, bạn có thể đăng nhập. Kết quả cho thấy dữ liệu bên Nexbox cũ đã được import vào đầy đủ.

    Bài viết gần đây

    spot_img

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Đăng ký nhận thông tin bài viết qua email