Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Lab - Tự động cấu hình Switch Cisco bằng Python và Netmiko

    Nếu phải tạo 20 VLAN trên một Switch, chắc chắn bạn sẽ không thấy đây là việc khó.

    Nhưng nếu là...

    100 Switch.

    Mỗi Switch cần tạo 20 VLAN.

    Mỗi VLAN phải gán IP khác nhau.

    Mọi cấu hình phải giống nhau.

    Lúc này câu chuyện không còn là biết cấu hình Cisco IOS nữa.

    Mà là...

    Làm sao để máy tính cấu hình thay mình?

    Đó chính là lúc Network Automation bắt đầu.

    Trong bài Lab này chúng ta sẽ sử dụng Python kết hợp thư viện Netmiko để SSH vào Switch Cisco và tự động thực hiện toàn bộ quá trình cấu hình.

    Mục tiêu bài Lab

    Sau khi hoàn thành bài thực hành, chương trình Python sẽ tự động:

    Kết nối SSH đến Switch Cisco.

    Đăng nhập vào chế độ Privileged EXEC.

    Tạo VLAN từ 10 đến VLAN 30.

    Cấu hình địa chỉ IP cho từng Interface VLAN.

    Hiển thị kết quả cấu hình cuối cùng.

    Toàn bộ công việc vốn phải nhập hàng chục dòng lệnh sẽ được thực hiện chỉ bằng một lần chạy chương trình.

    Mô hình Lab

    PC- Python-Netmiko------------>Cisco Switch - IOS -192.168.1.1

    PC đóng vai trò Automation Host.

    Switch Cisco là thiết bị được điều khiển thông qua giao thức SSH.

    Bước 1 - Chuẩn bị môi trường Python

    Trước tiên cần cài đặt thư viện Netmiko.

    pip install netmiko

    Hoặc với Python 3:

    pip3 install netmiko --user

    Netmiko thực chất là một thư viện được xây dựng trên Paramiko nhằm đơn giản hóa việc kết nối SSH tới các thiết bị mạng như Cisco, Juniper, Arista, Huawei...

    Điểm mạnh của Netmiko là:

    Không phải tự xử lý SSH.

    Không phải chờ Prompt.

    Không phải tự gửi từng ký tự.

    Chỉ cần truyền danh sách câu lệnh cấu hình.

    Bước 2 - Chuẩn bị Switch

    Switch cần được cấu hình cơ bản trước khi có thể Automation.

    Ví dụ:

    interface vlan 1

    ip address 192.168.1.1 255.255.255.0

    no shutdown

    Sau đó bật SSH.

    username admin password 123

    ip domain-name vnpro.local

    crypto key generate rsa

    ip ssh version 2

    line vty 0 4

    login local

    transport input ssh

    Đây là bước mà khá nhiều người mới học DevNet thường bỏ sót.

    Python không thể điều khiển Switch nếu thiết bị chưa cho phép SSH.

    Bước 3 - Khai báo thông tin thiết bị

    Trong Netmiko, thiết bị thường được khai báo dưới dạng Dictionary.

    from netmiko import ConnectHandler

    SW1 = {

    "device_type":"cisco_ios",

    "ip":"192.168.1.1",

    "username":"admin",

    "password":"123",

    "secret":"password"

    }

    Mỗi khóa trong Dictionary đều mang ý nghĩa riêng:

    device_type xác định loại hệ điều hành.

    ip là địa chỉ quản trị.

    username/password dùng để SSH.

    secret là Enable Password.

    Sau đó kết nối:

    net_connect = ConnectHandler(**SW1)

    net_connect.enable()

    Dấu ** dùng để giải nén Dictionary thành các tham số truyền vào hàm ConnectHandler.

    Đây là cú pháp rất phổ biến trong Python và xuất hiện thường xuyên khi làm Automation.

    Bước 4 - Tự động tạo VLAN

    Thay vì viết:

    vlan 10

    vlan 11

    ...

    vlan 30

    Python chỉ cần một vòng lặp.

    for n in range(10,31):

    taoVlan = [

    "vlan " + str(n)

    ]

    net_connect.send_config_set(taoVlan)

    Ở đây:

    range(10,31)

    sẽ sinh ra:

    10

    11

    12

    ...

    30

    Mỗi lần lặp chương trình sẽ gửi một lệnh cấu hình xuống Switch.

    Bước 5 - Tự động gán IP cho Interface VLAN

    Sau khi VLAN được tạo, tiếp tục cấu hình Interface VLAN.

    ipVlan = [

    "interface vlan " + str(n),

    "ip address 172.16."+str(n)+".1 255.255.255.0",

    "no shutdown"

    ]



    net_connect.send_config_set(ipVlan)

    Ví dụ khi n = 20, Python sẽ sinh ra:

    interface vlan 20

    ip address 172.16.20.1 255.255.255.0

    no shutdown

    Điều đặc biệt ở đây là lập trình viên không cần viết riêng từng VLAN.

    Chương trình sẽ tự sinh câu lệnh dựa trên giá trị của biến n.

    Đây chính là tư duy cốt lõi của Network Automation.

    Bước 6 - Kiểm tra kết quả

    Sau khi cấu hình xong, Netmiko còn có thể thực thi các lệnh Show.

    output = net_connect.send_command(

    "show ip interface brief | include Vlan"

    )

    print(output)

    Kết quả trả về sẽ hiển thị toàn bộ các Interface VLAN vừa được tạo.

    Ví dụ:

    Vlan10

    Vlan11

    Vlan12

    ...

    Vlan30

    Điều này giúp chương trình vừa cấu hình vừa tự xác minh kết quả mà không cần người quản trị đăng nhập kiểm tra thủ công.

    Chương trình hoàn chỉnh

    from netmiko import ConnectHandler



    SW1 = {

    "device_type":"cisco_ios",

    "ip":"192.168.1.1",

    "username":"admin",

    "password":"123",

    "secret":"password"

    }

    net_connect = ConnectHandler(**SW1)

    net_connect.enable()



    for n in range(10,31):

    taoVlan = [

    "vlan " + str(n)

    ]

    ipVlan = [

    "interface vlan " + str(n),

    "ip address 172.16."+str(n)+".1 255.255.255.0",

    "no shutdown"

    ]

    net_connect.send_config_set(taoVlan)

    net_connect.send_config_set(ipVlan)



    output = net_connect.send_command(

    "show ip interface brief | include Vlan"

    )

    print(output)

    Kết luận

    Bài Lab này tuy đơn giản nhưng lại là một trong những bài thực hành quan trọng nhất khi bắt đầu học Cisco DevNet.

    Qua bài Lab, chúng ta hiểu được quy trình làm việc của một chương trình Automation:

    Kết nối tới thiết bị.

    Xác thực thông tin đăng nhập.

    Gửi lệnh cấu hình.

    Thu thập kết quả.

    Kiểm tra trạng thái sau cấu hình.

    Đây cũng chính là nền tảng để phát triển các hệ thống tự động hóa lớn hơn như:

    Triển khai cấu hình hàng trăm thiết bị cùng lúc.

    Backup cấu hình định kỳ.

    Kiểm tra tính tuân thủ (Compliance).

    Audit cấu hình.

    Zero Touch Provisioning.

    Tích hợp với Ansible, REST API, Nornir hoặc Cisco DNA Center.

    Khi đã nắm vững Netmiko, bước tiếp theo của DevNet sẽ là xây dựng các chương trình Automation có khả năng tương tác với API và quản lý hạ tầng mạng ở quy mô doanh nghiệp.LAB
    Attached Files
Working...
X