Monday, October 7, 2024

[Ansible] Lesson 16 – cisco.ios.ios_l2_interfaces module – Resource Module to configure L2 interfaces

-

Module cisco.ios.ios_l2_interfaces trong Ansible là một module thuộc Resource Module được sử dụng để cấu hình các interface mạng L2 trên các thiết bị Cisco IOS. Module này cung cấp khả năng quản lý các thuộc tính của các cổng Ethernet, VLANs, 802.1Q trunks và các tính năng liên quan đến L2 khác.

Module này yêu cầu phiên bản Ansible 2.9 trở lên và Cisco IOS 15.2 trở lên. Để sử dụng module, bạn cần phải có quyền truy cập vào các thiết bị Cisco IOS cần quản lý.

Các tham số chính của module cisco.ios.ios_l2_interfaces bao gồm:

  • name: Tên của interface mạng L2 cần quản lý.
  • description: Mô tả của interface mạng L2.
  • access_vlan: VLAN được sử dụng cho truy cập mạng L2.
  • native_vlan: VLAN mặc định của interface mạng L2.
  • mode: Chế độ hoạt động của interface mạng L2 (access, trunk, dynamic auto, dynamic desirable, etc.).
  • trunk_allowed_vlans: Danh sách các VLAN được cho phép truy cập trên cổng trunk.
  • shutdown: Cấu hình tắt hoặc bật interface mạng L2.
  • state: Trạng thái hiện tại của interface mạng L2.

Một số tham số khác của module bao gồm: stp_bpdu_guard, stp_bpdu_filter, stp_cost, stp_guard, stp_link_type, stp_port_priority, stp_port_type, cdp, lldpvtp.

Ví dụ sử dụng module cisco.ios.ios_l2_interfaces để cấu hình một interface mạng L2 trên thiết bị Cisco IOS:

- name: Configure L2 interface on Cisco IOS switch
  hosts: ios_switch
  gather_facts: no
  connection: network_cli
  vars:
    l2_interface: GigabitEthernet1/0/1
    l2_description: Access to PC1
    l2_mode: access
    l2_vlan: 100
  tasks:
    - name: Configure L2 interface
      cisco.ios.ios_l2_interfaces:
        name: "{{ l2_interface }}"
        description: "{{ l2_description }}"
        mode: "{{ l2_mode }}"
        access_vlan: "{{ l2_vlan }}"
      register: result

    - name: Display result
      debug:
        var: result

Trong ví dụ này, chúng ta định nghĩa biến l2_interface là tên của interface mạng L2 cần cấu hình (GigabitEthernet1/0/1), biến l2_description là mô tả của interface (Access to PC1), biến l2_mode là chế độ của interface (access), và biến l2_vlan là VLAN ID của VLAN được gán cho interface này (100).

Sau đó, chúng ta sử dụng module cisco.ios.ios_l2_interfaces để cấu hình interface mạng L2 với các thông số đã định nghĩa ở trên. Kết quả của task này sẽ được lưu vào biến result.

Cuối cùng, chúng ta sử dụng module debug để hiển thị kết quả của task trước đó.

Ví dụ về cấu hình trunk và access VLAN 5 interface trên thiết bị Cisco IOS:

File biến: vars.yaml

---
vlan_id: 5
trunk_allowed_vlans: "1-5"
interface_name: GigabitEthernet1/0/1

File cấu hình: config.yaml

---
- name: Configuring VLAN {{ vlan_id }} for access port
  ios_vlan:
    vlan_id: "{{ vlan_id }}"
    name: Access-VLAN-{{ vlan_id }}
    state: present

- name: Configuring interface {{ interface_name }} as access port
  ios_l2_interface:
    name: "{{ interface_name }}"
    description: "Access port for VLAN {{ vlan_id }}"
    access:
      vlan: "{{ vlan_id }}"
    state: present

- name: Configuring interface {{ interface_name }} as trunk port
  ios_l2_interface:
    name: "{{ interface_name }}"
    description: "Trunk port for VLANs {{ trunk_allowed_vlans }}"
    trunk:
      allowed_vlans: "{{ trunk_allowed_vlans }}"
    state: present

Trong ví dụ này, chúng ta sử dụng một biến vlan_id để xác định VLAN cho access port và một biến trunk_allowed_vlans để chỉ định các VLAN được phép truy cập thông qua trunk port. Chúng ta cũng sử dụng một biến interface_name để xác định tên của interface mạng cần cấu hình.

Chúng ta phân tách cấu hình và biến thành 2 file riêng biệt để dễ quản lý và tái sử dụng. Để chạy playbook với các file này, chúng ta có thể sử dụng lệnh ansible-playbook -i inventory.ini config.yaml -e @vars.yaml.

Tham khảo: https://docs.ansible.com/ansible/latest/collections/cisco/ios/ios_l2_interfaces_module.html#ansible-collections-cisco-ios-ios-l2-interfaces-module

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories