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: Cấu Hình Thiết Bị Cisco IOS với Ansible ios_config Module

    Lab: Cấu Hình Thiết Bị Cisco IOS với Ansible ios_config Module

    🎯 Mục tiêu bài lab


    Trong bài lab này, chúng ta sẽ:
    • Sử dụng module ios_config để cấu hình hostname và SNMP cho các thiết bị Cisco IOS.
    • Sử dụng biến từ host_vars và group_vars để cá nhân hóa cấu hình theo từng thiết bị.
    • Triển khai một static route hoặc cấu hình toàn bộ bằng file cấu hình sẵn (src).
    • Kiểm tra sự thay đổi cấu hình thực tế trên thiết bị bằng chế độ -v.

    🛠️ Mô hình thử nghiệm
    • 3 thiết bị Cisco CSR (csr1kv1, csr1kv2, csr1kv3) được quản lý bởi Ansible thông qua SSH.
    • Ansible Control Node sử dụng network_cli để kết nối.
    • Các cấu hình được áp dụng bao gồm hostname, SNMP và định tuyến tĩnh.

    📁 Chuẩn bị File Inventory


    File inventory:


    [ios] csr1kv1 node_id=1 csr1kv2 node_id=2 csr1kv3 node_id=3 [all:vars] ansible_user=cisco ansible_ssh_pass=cisco ansible_network_os=ios
    📁 Tạo các biến host_vars và group_vars


    host_vars/csr1kv1.yml


    node_id: 1



    host_vars/csr1kv2.yml

    node_id: 2



    host_vars/csr1kv3.yml

    node_id: 3



    group_vars/all.yml

    ansible_user: cisco ansible_ssh_pass: cisco ansible_network_os: ios snmp_community: cisco_corse snmp_location: CA_HQ snmp_contact: JOHN_SMITH
    📄 Playbook: core_config.yml

    ---
    - name: MAKE CONFIG CHANGES USING HOST_VARS AND GROUP_VARS
    hosts: all connection: network_cli gather_facts: no tasks: - name: CONFIGURE HOSTNAME USING HOST_VARS ios_config: commands: "hostname nycr-{{ node_id }}" - name: CONFIGURE SNMP COMMUNITY USING GROUP_VARS ios_config: commands: - snmp-server community {{ snmp_community }} RO - snmp-server location {{ snmp_location }} - snmp-server contact {{ snmp_contact }} - name: CONFIGURE STATIC ROUTE (OPTIONAL) ios_config: lines: - ip route 172.16.1.0 255.255.255.0 172.16.2.1
    🔄 Thay thế bằng file cấu hình src (nếu có)


    Ví dụ:

    - name: DEPLOY CONFIG FROM FILE ios_config: src: cisco_ios.cfg
    Chú ý: lines/commands và src không được dùng chung trong một task (mutually exclusive).

    ▶️ Chạy Playbook

    ansible-playbook -i inventory core_config.yml -v
    Kết quả mong đợi


    TASK [CONFIGURE HOSTNAME USING HOST_VARS] changed: [csr1kv1] => {"commands": ["hostname nycr-1"]} changed: [csr1kv2] => {"commands": ["hostname nycr-2"]} changed: [csr1kv3] => {"commands": ["hostname nycr-3"]} TASK [CONFIGURE SNMP COMMUNITY USING GROUP_VARS] changed: [csr1kv1] => {"commands": ["snmp-server community cisco_corse RO", ...]} ... PLAY RECAP: csr1kv1: ok=2 changed=2 ... csr1kv2: ok=2 changed=2 ... csr1kv3: ok=2 changed=2 ...
    Câu hỏi kiểm tra sau Lab
    Câu hỏi: Hai tham số nào có thể được sử dụng để triển khai cấu hình với ios_config?
    A. src
    B. commands (alias của lines)
    ❌ config
    ❌ command
    ❌ source

    📌 Gợi ý thực chiến
    • Khi quản lý hàng trăm router/switch, chia nhỏ cấu hình thành nhiều task và gom biến về group_vars/host_vars giúp tái sử dụng và bảo trì dễ dàng hơn.
    • Sử dụng src: khi bạn cần deploy toàn bộ cấu hình mẫu chuẩn (Golden Config).
    • Dùng commands: để thay đổi linh hoạt theo từng nhóm/thiết bị.

    📣 Lời kết


    Bài lab này là bước đầu tiên trong hành trình tự động hóa cấu hình mạng với Ansible. Bạn có thể mở rộng để quản lý VLAN, OSPF, ACL, QoS và nhiều hơn nữa — tất cả đều bằng Playbook và YAML.

    👉 Nếu bạn thấy bài lab này hữu ích, hãy chia sẻ về cộng đồng Automation / DevNet để nhiều anh em cùng áp dụng nhé!
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X