--- - debug: msg="START ios_interface cli/basic.yaml" - name: Run show version ios_command: commands: show version authorize: yes register: show_version_result - block: - name: Set test interface to GigabitEthernet0/1 as we are on Cisco IOS set_fact: test_interface=GigabitEthernet0/1 - name: Set test interface 2 to GigabitEthernet0/2 as we are on Cisco IOS set_fact: test_interface2=GigabitEthernet0/2 when: "'Cisco IOS' in show_version_result.stdout[0]" - block: - name: Set test interface to GigabitEthernet2 as we are on Cisco IOS-XE set_fact: test_interface=GigabitEthernet2 - name: Disable autonegotiation on GigabitEthernet2 ios_config: lines: - no negotiation auto parents: int GigabitEthernet2 authorize: yes - name: Set test interface 2 to GigabitEthernet3 as we are on Cisco IOS-XE set_fact: test_interface2=GigabitEthernet3 - name: Disable autonegotiation on GigabitEthernet3 ios_config: lines: - no negotiation auto parents: int GigabitEthernet3 authorize: yes when: "'Cisco IOS-XE' in show_version_result.stdout[0]" - name: Configure interface (setup) ios_interface: name: "{{ test_interface }}" description: test-interface-1 speed: 1000 mtu: 1500 state: present authorize: yes register: result - name: Configure interface ios_interface: name: "{{ test_interface }}" description: test-interface-initial state: present authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"description test-interface-initial" in result.commands' - name: Confgure interface (idempotent) ios_interface: name: "{{ test_interface }}" description: test-interface-initial state: present authorize: yes register: result - assert: that: - 'result.changed == false' - name: Confgure interface parameters ios_interface: name: "{{ test_interface }}" description: test-interface mtu: 1600 state: present authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"description test-interface" in result.commands' - '"mtu 1600" in result.commands' - name: Change interface parameters ios_interface: name: "{{ test_interface }}" description: test-interface-1 mtu: 1500 state: present authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"description test-interface-1" in result.commands' - '"mtu 1500" in result.commands' - name: Disable interface ios_interface: name: "{{ test_interface }}" enabled: False authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"shutdown" in result.commands' - name: Enable interface ios_interface: name: "{{ test_interface }}" enabled: True authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"no shutdown" in result.commands' - name: Confgure second interface (setup) ios_interface: name: "{{ test_interface2 }}" description: test-interface-initial speed: 1000 mtu: 1500 state: present authorize: yes register: result - name: Add interface aggregate ios_interface: aggregate: - { name: "{{ test_interface }}", mtu: 1500, description: test-interface-1 } - { name: "{{ test_interface2 }}", mtu: 1600, description: test-interface-2 } speed: 1000 state: present authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"mtu 1500" in result.commands' - '"interface {{ test_interface2 }}" in result.commands' - '"description test-interface-2" in result.commands' - '"mtu 1600" in result.commands' - name: Add interface aggregate (idempotent) ios_interface: aggregate: - { name: "{{ test_interface }}", mtu: 1500, description: test-interface-1 } - { name: "{{ test_interface2 }}", mtu: 1600, description: test-interface-2 } speed: 1000 state: present authorize: yes register: result - assert: that: - 'result.changed == false' - name: Disable interface aggregate ios_interface: aggregate: - "name: {{ test_interface }}" - "name: {{ test_interface2 }}" enabled: False state: present authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"shutdown" in result.commands' - '"interface {{ test_interface2 }}" in result.commands' - '"shutdown" in result.commands' - name: Enable interface aggregate ios_interface: aggregate: - "name: {{ test_interface }}" - "name: {{ test_interface2 }}" enabled: True state: present authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"no shutdown" in result.commands' - '"interface {{ test_interface2 }}" in result.commands' - '"no shutdown" in result.commands' - name: loopback interface setup ios_interface: aggregate: - name: Loopback9 - name: Loopback10 state: absent authorize: yes - name: Create loopback interface aggregate ios_interface: aggregate: - name: Loopback9 - name: Loopback10 state: present authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface Loopback9" in result.commands' - '"interface Loopback10" in result.commands' - name: Delete loopback interface aggregate ios_interface: aggregate: - name: Loopback9 - name: Loopback10 state: absent authorize: yes register: result - assert: that: - 'result.changed == true' - '"no interface Loopback9" in result.commands' - '"no interface Loopback10" in result.commands' - name: Delete loopback interface aggregate (idempotent) ios_interface: aggregate: - name: Loopback9 - name: Loopback10 state: absent authorize: yes register: result - assert: that: - 'result.changed == false' - debug: msg="END ios_interface cli/basic.yaml"