|
|
|
---
|
|
|
|
- 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: Check interface assigned to vrf (intent)
|
|
|
|
ios_vlan:
|
|
|
|
vlan_id: 100
|
|
|
|
associated_interfaces:
|
|
|
|
- GigabitEthernet0/1
|
|
|
|
- GigabitEthernet0/2
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.failed == false"
|
|
|
|
|
|
|
|
- name: Check interface assigned to vrf (fail)
|
|
|
|
ios_vlan:
|
|
|
|
vlan_id: 100
|
|
|
|
associated_interfaces:
|
|
|
|
- test
|
|
|
|
provider: "{{ cli }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.failed == True"
|
|
|
|
|
|
|
|
- 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 }}"
|