--- - debug: msg="START cli/basic.yaml on connection={{ ansible_connection }}" - set_fact: switch_type="{{ switch_type }}" - block: - name: setup - remove vlan used in test ios_config: lines: - no vlan 100 - no vlan 200 - no vlan 300 provider: "{{ cli }}" - name: setup - remove switchport settings on interfaces used in test ios_config: lines: - switchport mode access - no switchport access vlan 100 provider: "{{ cli }}" parents: "{{ item }}" loop: - interface GigabitEthernet0/1 - interface GigabitEthernet0/2 - name: create vlan ios_vlan: &create vlan_id: 100 name: test-vlan provider: "{{ cli }}" register: result - assert: that: - "result.changed == true" - "'vlan 100' in result.commands" - "'name test-vlan' in result.commands" - name: create vlan(idempotence) ios_vlan: *create register: result - assert: that: - "result.changed == false" - name: Add interfaces to vlan ios_vlan: &interfaces vlan_id: 100 interfaces: - GigabitEthernet0/1 - GigabitEthernet0/2 provider: "{{ cli }}" register: result - assert: that: - "result.changed == true" - "'interface GigabitEthernet0/1' in result.commands" - "'switchport mode access' in result.commands" - "'switchport access vlan 100' in result.commands" - "'interface GigabitEthernet0/2' in result.commands" - "'switchport mode access' in result.commands" - "'switchport access vlan 100' in result.commands" - name: Add interfaces to vlan(idempotence) ios_vlan: *interfaces register: result - assert: that: - "result.changed == false" - name: Remove interface from vlan ios_vlan: &single_int vlan_id: 100 interfaces: - GigabitEthernet0/1 provider: "{{ cli }}" register: result - assert: that: - "result.changed == true" - "'vlan 100' in result.commands" - "'interface GigabitEthernet0/2' in result.commands" - "'switchport mode access' in result.commands" - "'no switchport access vlan 100' in result.commands" - name: Remove interface from vlan(idempotence) ios_vlan: *single_int register: result - assert: that: - "result.changed == false" - name: Suspend vlan ios_vlan: vlan_id: 100 state: suspend provider: "{{ cli }}" register: result - assert: that: - "result.changed == true" - "'vlan 100' in result.commands" - "'state suspend' in result.commands" - name: Unsuspend vlan ios_vlan: vlan_id: 100 state: active provider: "{{ cli }}" register: result - assert: that: - "result.changed == true" - "'vlan 100' in result.commands" - "'state active' in result.commands" - name: delete vlan ios_vlan: &delete vlan_id: 100 provider: "{{ cli }}" state: absent register: result - assert: that: - "result.changed == true" - "'no vlan 100' in result.commands" - name: delete vlan(idempotence) ios_vlan: *delete register: result - assert: that: - "result.changed == false" - name: create vlans using aggregate ios_vlan: &create_aggregate aggregate: - { vlan_id: 200, name: vlan-200 } - { vlan_id: 300, name: vlan-300 } provider: "{{ cli }}" register: result - assert: that: - "result.changed == true" - "'vlan 200' in result.commands" - "'name vlan-200' in result.commands" - "'vlan 300' in result.commands" - "'name vlan-300' in result.commands" - name: create vlans using aggregate(idempotence) ios_vlan: *create_aggregate register: result - assert: that: - "result.changed == false" - name: delete vlans using aggregate ios_vlan: &delete_aggregate aggregate: - { vlan_id: 200, name: vlan-200 } - { vlan_id: 300, name: vlan-300 } state: absent provider: "{{ cli }}" register: result - assert: that: - "result.changed == true" - "'no vlan 200' in result.commands" - "'no vlan 300' in result.commands" - name: delete vlans using aggregate(idempotence) ios_vlan: *delete_aggregate register: result - assert: that: - "result.changed == false" - name: teardown(part1) ios_config: lines: - no vlan 100 - no vlan 200 - no vlan 300 provider: "{{ cli }}" - name: teardown(part2) ios_config: lines: - switchport mode access - no switchport access vlan 100 provider: "{{ cli }}" parents: "{{ item }}" loop: - interface GigabitEthernet0/1 - interface GigabitEthernet0/2 when: switch_type == 'L2' - debug: msg="END cli/basic.yaml on connection={{ ansible_connection }}"