--- - debug: msg="START connection={{ ansible_connection }} ios_l2_interface sanity test" - name: "Setup interface" ios_config: &default lines: - "default interface {{ test_interface }}" provider: "{{ cli }}" - name: set trunk encapsulation type ios_config: lines: - switchport trunk encapsulation dot1q parents: - "interface {{ test_interface }}" provider: "{{ cli }}" - name: "Setup vlans" ios_vlan: aggregate: - vlan_id: 5 - vlan_id: 6 - vlan_id: 7 - vlan_id: 8 - vlan_id: 9 - vlan_id: 10 - vlan_id: 20 provider: "{{ cli }}" - block: - name: Ensure interface is in its default switchport state ios_l2_interface: &def_swi name: "{{ test_interface }}" state: unconfigured provider: "{{ cli }}" - name: Ensure interface is configured for access vlan 20 ios_l2_interface: &acc_vl name: "{{ test_interface }}" mode: access access_vlan: 20 provider: "{{ cli }}" register: result - assert: &true that: - "result.changed == true" - name: "access vlan Idempotence" ios_l2_interface: *acc_vl register: result - assert: &false that: - "result.changed == false" - name: Ensure interface only has vlans 5-10 as trunk vlans ios_l2_interface: &tr_vl name: "{{ test_interface }}" mode: trunk native_vlan: 10 trunk_allowed_vlans: 5-10 provider: "{{ cli }}" register: result - assert: *true - name: "trunk vlan Idempotence" ios_l2_interface: *tr_vl register: result - assert: *false - name: Ensure interface is a trunk port and ensure 2-50 are being tagged (doesn't mean others aren't also being tagged) ios_l2_interface: &tag name: "{{ test_interface }}" mode: trunk native_vlan: 10 trunk_vlans: 2-50 provider: "{{ cli }}" register: result - assert: *true - name: "tag vlan Idempotence" ios_l2_interface: *tag register: result - assert: *false - name: Remove full trunk vlan range 2-50 ios_l2_interface: &no_tag name: "{{ test_interface }}" mode: trunk trunk_vlans: 2-50 state: absent provider: "{{ cli }}" register: result - assert: *true - name: Check Idempotence Remove full trunk vlan range 2-50 ios_l2_interface: *no_tag register: result - assert: *false - name: Reconfigure interface trunk port and ensure 2-50 are being tagged ios_l2_interface: *tag register: result - assert: *true - name: Check Idempotence Reconfigure interface trunk port and ensure 2-50 are being tagged ios_l2_interface: *tag register: result - assert: *false - name: Remove partial trunk vlan range 30-4094 are removed ios_l2_interface: &partial name: "{{ test_interface }}" mode: trunk trunk_vlans: 30-4094 state: absent provider: "{{ cli }}" register: result - assert: *true - name: Check Idempotence Remove partial trunk vlan range 30-4094 are removed ios_l2_interface: *partial register: result - assert: *false - name: put interface default state ios_l2_interface: *def_swi register: result - assert: *true - name: "default state idempotence" ios_l2_interface: *def_swi register: result - assert: *false always: - name: "remove vlans" ios_vlan: aggregate: - vlan_id: 5 - vlan_id: 6 - vlan_id: 7 - vlan_id: 8 - vlan_id: 9 - vlan_id: 10 - vlan_id: 20 state: absent provider: "{{ cli }}" ignore_errors: yes - name: "default interface" ios_config: *default ignore_errors: yes - debug: msg="END connection={{ ansible_connection }} ios_l2_interface sanity test"