Tuesday, June 25, 2024

Tự động thêm thiết bị vào Netbox với Python và Netbox API

-

Netbox là một công cụ quản lý cấu hình mạng (NCM) mã nguồn mở giúp bạn quản lý hiệu quả cơ sở hạ tầng mạng của mình. Nó cung cấp giao diện web trực quan và API RESTful cho phép bạn tự động hóa các tác vụ quản lý.

Bài viết này hướng dẫn bạn cách sử dụng Python và Netbox API để tự động thêm thiết bị vào Netbox.

Bước 1: Cài đặt thư viện pynetbox

Thư viện pynetbox cho phép bạn tương tác với Netbox API từ Python. Để cài đặt thư viện này, hãy sử dụng lệnh pip:

pip install pynetbox

Bước 2: Lấy API Token.

Mình không muốn viết nhiều nên các bạn xem tạm hình động ở dưới.

Bạn có thể xem hướng dẫn cho API ở đây.

Ở đây có nói rất rõ các API, vì chúng ta cần đẩy thông tin thiết bị vào Netbox nên bài viết này chúng ta chỉ quan tâm tới POST Devices thôi.

Bước 3: Khởi tạo đối tượng API

Sau khi cài đặt thư viện pynetbox, bạn cần khởi tạo một đối tượng API để tương tác với Netbox API. Để làm điều này,bạn cần cung cấp URL của Netbox instance và token API của bạn:

import pynetbox

url = "http://192.168.100.253:8000/"  # URL của Netbox instance
token = "4d050413991eeaf3a7a350a0402b3a582959d29b"  # Token API của bạn

nb = pynetbox.api(url=url, token=token)

Bước 4: Xác định site_id, device_name, device_type_id và device_role_id.

site_id: Đây là ID của nơi đặt thiết bị.

device_name: Đây là tên thiết bị nên bạn có thể tự đặt.

Ví dụ:

device_name = "R1 - Core MPLS 1"

device_type_id: Dùng để phân biệt loại thiết bị, ví dụ của mình là các thiết bị thuộc Cisco C9300

device_role_id: Phân nhóm vai trò của thiết bị này là gì? Ví dụ dùng để làm Core Wan hay dùng để định tuyến MPLS.

Bước 5: Sử dụng phương thức create để thêm thiết bị mới.

Phương thức create của đối tượng API cho phép bạn thêm thiết bị mới vào Netbox. Để sử dụng phương thức này, bạn cần cung cấp các tham số cần thiết như tên thiết bị, loại thiết bị, vai trò thiết bị và trang web:

device_name = "R1 - Core MPLS 1"  # Tên thiết bị
device_type_id = 142  # ID loại thiết bị
device_role_id = 37  # ID vai trò thiết bị
site_id = 15  # ID trang web

result = nb.dcim.devices.create(
    name=device_name,
    device_type=device_type_id,
    device_role=device_role_id,
    site=site_id,
)

print(result)

Bước 6: Chạy chương trình.

shell> python3 add.devices.py 
R1 - Core MPLS 1

Và đây là kết quả.

Bước 7: Thêm nhiều thiết bị cùng lúc

Bạn có thể sử dụng vòng lặp để thêm nhiều thiết bị cùng lúc. Ví dụ sau đây sử dụng danh sách tên thiết bị để thêm từng thiết bị vào Netbox:

import pynetbox

devices = ["Router Core 01", "Router Core 02", "Router Internet VNPT", "Router Internet FPT"]

def add_device(device_name):
    url = "http://192.168.100.253:8000/"  # URL của Netbox instance
    token = "4d050413991eeaf3a7a350a0402b3a582959d29b"  # Token API của bạn

    nb = pynetbox.api(url=url, token=token)

    device_type_id = 142  # ID loại thiết bị
    device_role_id = 37  # ID vai trò thiết bị
    site_id = 15  # ID trang web

    result = nb.dcim.devices.create(
        name=device_name,
        device_type=device_type_id,
        device_role=device_role_id,
        site=site_id,
    )

    print(f"Thêm thiết bị {device_name} thành công")

for device in devices:
    add_device(device)

Hãy chạy chương trình.

shell> python3 add.devices.py 
Thêm thiết bị Router Core 01 thành công
Thêm thiết bị Router Core 02 thành công
Thêm thiết bị Router Internet VNPT thành công
Thêm thiết bị Router Internet FPT thành công

Đây là kết quả.

Đoạn code này mình bổ sung thêm chức năng cập nhật.

import pynetbox

devices = ["Router Core 01", "Router Core 02", "Router Internet VNPT", "Router Internet FPT"]

def add_or_update_device(device_name):
    url = "http://192.168.100.253:8000/"  # URL của Netbox instance
    token = "2a76ac487518d4de0b17d29cc07a98141c8665c9"  # Token API của bạn

    nb = pynetbox.api(url=url, token=token)

    device_type_id = 142  # ID loại thiết bị
    device_role_id = 37  # ID vai trò thiết bị
    site_id = 15  # ID trang web

    device = nb.dcim.devices.get(name=device_name)
    if device is None:
        # Thiết bị không tồn tại, tạo mới
        result = nb.dcim.devices.create(
            name=device_name,
            device_type=device_type_id,
            device_role=device_role_id,
            site=site_id,
        )
        print(f"Thêm thiết bị {device_name} thành công")
    else:
        # Thiết bị đã tồn tại, cập nhật
        data = {
            "device_type": device_type_id,
            "device_role": device_role_id,
            "site": site_id,
        }
        result = device.update(data)
        print(f"Cập nhật thiết bị {device_name} thành công")

for device in devices:
    add_or_update_device(device)

Chạy chương trình.

shell> python3 add.devices.py 
Cập nhật thiết bị Router Core 01 thành công
Cập nhật thiết bị Router Core 02 thành công
Cập nhật thiết bị Router Internet VNPT thành công
Cập nhật thiết bị Router Internet FPT thành công

Lưu ý:

  • Bạn cần thay thế URL của Netbox instance và token API của bạn bằng thông tin chính xác của mình.
  • Bạn cần tìm ID loại thiết bị, vai trò thiết bị và trang web phù hợp trong tài liệu Netbox.
  • Bạn có thể sửa đổi mã ví dụ để phù hợp với nhu cầu cụ thể của mình.

Kết luận

Bài viết này đã hướng dẫn bạn cách sử dụng Python và Netbox API để tự động thêm thiết bị vào Netbox. Việc sử dụng Python để tự động hóa các tác vụ quản trị trong Netbox có thể giúp bạn tiết kiệm thời gian và giảm thiểu sai sót.

Tài liệu tham khảo: https://medium.com/@barsu79/how-to-populate-devices-in-netbox-with-python-6a75504614d8

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories