--- - debug: msg="START ios_interface cli/basic.yaml" - name: Run show version ios_command: commands: show version authorize: yes register: show_version_result - name: Set test interface to GigabitEthernet0/1 if we are on Cisco IOS set_fact: test_interface=GigabitEthernet0/1 when: "'Cisco IOS' in show_version_result.stdout[0]" - name: Set test interface 2 to GigabitEthernet0/2 if we are on Cisco IOS set_fact: test_interface2=GigabitEthernet0/2 when: "'Cisco IOS' in show_version_result.stdout[0]" - name: Set test interface to GigabitEthernet2 if we are on Cisco IOS-XE set_fact: test_interface=GigabitEthernet2 when: "'Cisco IOS-XE' in show_version_result.stdout[0]" - name: Set test interface 2 to GigabitEthernet3 if we are on Cisco IOS-XE set_fact: test_interface2=GigabitEthernet3 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: 256 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: 512 state: present authorize: yes register: result - assert: that: - 'result.changed == true' - '"interface {{ test_interface }}" in result.commands' - '"description test-interface" in result.commands' - '"mtu 512" in result.commands' - name: Change interface parameters ios_interface: name: "{{ test_interface }}" description: test-interface-1 mtu: 256 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 256" 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: 516 state: present authorize: yes register: result - name: Add interface aggregate ios_interface: aggregate: - "{ name: {{ test_interface }}, mtu: 256, description: test-interface-1 }" - "{ name: {{ test_interface2 }}, mtu: 516, description: test-interface-2 }" speed: 1000 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 256" in result.commands' - '"interface {{ test_interface2 }}" in result.commands' - '"description test-interface-2" in result.commands' - '"mtu 516" in result.commands' - name: Add interface aggregate (idempotent) ios_interface: aggregate: - "{ name: {{ test_interface }}, mtu: 256, description: test-interface-1 }" - "{ name: {{ test_interface2 }}, mtu: 516, 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"