1--- 2- debug: msg="START ios_l3_interface cli/basic.yaml on connection={{ ansible_connection 3 }}" 4 5- name: Delete interface ipv4 and ipv6 address(setup) 6 register: result 7 cisco.ios.ios_l3_interface: 8 name: '{{ test_interface }}' 9 state: absent 10 11- name: Setup - Ensure interfaces are switchport 12 loop: 13 - '{{ test_interface }}' 14 - '{{ test_interface2 }}' 15 cisco.ios.ios_config: 16 lines: 17 - no shutdown 18 parents: 19 - interface {{ item }} 20 21- name: Configure interface ipv4 address 22 register: result 23 cisco.ios.ios_l3_interface: 24 name: '{{ test_interface }}' 25 ipv4: 192.168.20.1/24 26 state: present 27 28- assert: 29 that: 30 - result.changed == true 31 - '"interface {{ test_interface }}" in result.commands' 32 - '"ip address 192.168.20.1 255.255.255.0" in result.commands' 33 34- name: Configure interface ipv4 address (idempotent) 35 register: result 36 cisco.ios.ios_l3_interface: 37 name: '{{ test_interface }}' 38 ipv4: 192.168.20.1/24 39 state: present 40 41- assert: &id002 42 that: 43 - result.changed == false 44 45- name: Assign same ipv4 address to other interface (fail) 46 ignore_errors: true 47 register: result 48 cisco.ios.ios_l3_interface: 49 name: '{{ test_interface2 }}' 50 ipv4: 192.168.20.1/24 51 state: present 52 53- assert: 54 that: 55 - result.failed == true 56 - result.msg is defined 57 58- name: Change interface ipv4 address 59 register: result 60 cisco.ios.ios_l3_interface: 61 name: '{{ test_interface }}' 62 ipv4: dhcp 63 state: present 64 65- assert: 66 that: 67 - result.changed == true 68 - '"interface {{ test_interface }}" in result.commands' 69 - '"ip address dhcp" in result.commands' 70 71- name: Configure interface ipv6 address 72 register: result 73 cisco.ios.ios_l3_interface: &id001 74 name: '{{ test_interface }}' 75 ipv6: fd5d:12c9:2201:1::1/64 76 state: present 77 78- assert: 79 that: 80 - result.changed == true 81 - '"interface {{ test_interface }}" in result.commands' 82 - '"ipv6 address fd5d:12c9:2201:1::1/64" in result.commands' 83 84- name: Configure interface ipv6 address (idempotent) 85 register: result 86 cisco.ios.ios_l3_interface: *id001 87 88- assert: *id002 89 90- name: Configure second ipv6 address on interface 91 register: result 92 cisco.ios.ios_l3_interface: &id003 93 name: '{{ test_interface }}' 94 ipv6: fd5d:12c9:2291:1::1/64 95 state: present 96 97- assert: 98 that: 99 - result.changed == true 100 - '"interface {{ test_interface }}" in result.commands' 101 - '"ipv6 address fd5d:12c9:2291:1::1/64" in result.commands' 102 103- name: Ensure first ipv6 address still associated with interface 104 register: result 105 cisco.ios.ios_l3_interface: *id001 106 107- assert: *id002 108 109- name: Ensure second ipv6 address still associated with interface 110 register: result 111 cisco.ios.ios_l3_interface: *id003 112 113- assert: *id002 114 115- name: Assign same ipv6 address to other interface (fail) 116 ignore_errors: true 117 register: result 118 cisco.ios.ios_l3_interface: 119 name: '{{ test_interface2 }}' 120 ipv6: fd5d:12c9:2201:1::1/64 121 state: present 122 123- assert: 124 that: 125 - result.failed == true 126 - result.msg is defined 127 128- name: Change interface ipv6 address 129 register: result 130 cisco.ios.ios_l3_interface: 131 name: '{{ test_interface }}' 132 ipv6: dhcp 133 state: present 134 135- assert: 136 that: 137 - result.changed == true 138 - '"interface {{ test_interface }}" in result.commands' 139 - '"ipv6 address dhcp" in result.commands' 140 141- name: Delete interface ipv4 and ipv6 address 142 register: result 143 cisco.ios.ios_l3_interface: 144 name: '{{ test_interface }}' 145 state: absent 146 147- assert: 148 that: 149 - result.changed == true 150 - '"interface {{ test_interface }}" in result.commands' 151 - '"no ip address" in result.commands' 152 - '"no ipv6 address" in result.commands' 153 154- name: Delete interface ipv4 and ipv6 address (idempotent) 155 register: result 156 cisco.ios.ios_l3_interface: 157 name: '{{ test_interface }}' 158 state: absent 159 160- assert: *id002 161 162- name: Delete second interface ipv4 and ipv6 address (setup) 163 register: result 164 cisco.ios.ios_l3_interface: 165 name: '{{ test_interface2 }}' 166 state: absent 167 168- name: Configure ipv4 and ipv6 address using aggregate 169 register: result 170 cisco.ios.ios_l3_interface: 171 aggregate: 172 173 - name: '{{ test_interface }}' 174 ipv4: 192.161.0.1/24 175 ipv6: fd5d:12c9:2201:2::2/64 176 177 - name: '{{ test_interface2 }}' 178 ipv4: 192.162.0.2/16 179 ipv6: fd5e:12c9:2201:3::3/32 180 181- assert: 182 that: 183 - result.changed == true 184 - '"interface {{ test_interface }}" in result.commands' 185 - '"ip address 192.161.0.1 255.255.255.0" in result.commands' 186 - '"ipv6 address fd5d:12c9:2201:2::2/64" in result.commands' 187 - '"interface {{ test_interface2 }}" in result.commands' 188 - '"ip address 192.162.0.2 255.255.0.0" in result.commands' 189 - '"ipv6 address fd5e:12c9:2201:3::3/32" in result.commands' 190 191- name: Configure ipv4 and ipv6 address using aggregate (idempotent) 192 register: result 193 cisco.ios.ios_l3_interface: 194 aggregate: 195 196 - name: '{{ test_interface }}' 197 ipv4: 192.161.0.1/24 198 ipv6: fd5d:12c9:2201:2::2/64 199 200 - name: '{{ test_interface2 }}' 201 ipv4: 192.162.0.2/16 202 ipv6: fd5e:12c9:2201:3::3/32 203 204- assert: *id002 205 206- name: Change ipv4 and ipv6 address using aggregate 207 register: result 208 cisco.ios.ios_l3_interface: 209 aggregate: 210 211 - name: '{{ test_interface }}' 212 ipv4: 193.167.1.1/8 213 ipv6: fd5a:12c9:2201:4::4/32 214 215 - name: '{{ test_interface2 }}' 216 ipv4: 192.169.2.2/24 217 ipv6: fd5b:12c9:2201:5::5/90 218 219- assert: 220 that: 221 - result.changed == true 222 - '"interface {{ test_interface }}" in result.commands' 223 - '"ip address 193.167.1.1 255.0.0.0" in result.commands' 224 - '"ipv6 address fd5a:12c9:2201:4::4/32" in result.commands' 225 - '"interface {{ test_interface2 }}" in result.commands' 226 - '"ip address 192.169.2.2 255.255.255.0" in result.commands' 227 - '"ipv6 address fd5b:12c9:2201:5::5/90" in result.commands' 228 229- name: Delete ipv4 and ipv6 address using aggregate 230 register: result 231 cisco.ios.ios_l3_interface: 232 aggregate: 233 234 - name: '{{ test_interface }}' 235 236 - name: '{{ test_interface2 }}' 237 state: absent 238 239- assert: 240 that: 241 - result.changed == true 242 - '"interface {{ test_interface }}" in result.commands' 243 - '"no ip address" in result.commands' 244 - '"no ipv6 address" in result.commands' 245 - '"interface {{ test_interface2 }}" in result.commands' 246 - '"no ip address" in result.commands' 247 - '"no ipv6 address" in result.commands' 248 249- name: Delete ipv4 and ipv6 address using aggregate (idempotent) 250 register: result 251 cisco.ios.ios_l3_interface: 252 aggregate: 253 254 - name: '{{ test_interface }}' 255 256 - name: '{{ test_interface2 }}' 257 state: absent 258 259- assert: *id002 260 261- debug: msg="END ios_l3_interface cli/basic.yaml on connection={{ ansible_connection 262 }}" 263