|
|
|
---
|
|
|
|
- debug:
|
|
|
|
msg: "START eos_l3_interface eapi/basic.yaml on connection={{ ansible_connection }}"
|
|
|
|
|
|
|
|
- name: Set test interface
|
|
|
|
set_fact:
|
|
|
|
test_interface_1: ethernet1
|
|
|
|
test_interface_2: ethernet2
|
|
|
|
ipv4_addr_1: 192.0.2.5/24
|
|
|
|
ipv4_addr_2: 198.51.100.15/24
|
|
|
|
ipv4_addr_3: 203.0.113.25/28
|
|
|
|
ipv4_addr_4: 203.0.113.225/28
|
|
|
|
ipv6_addr_1: 2001:DB8:123::/64
|
|
|
|
ipv6_addr_2: 2001:DB8:ABC::/64
|
|
|
|
ipv6_addr_3: 2001:DB8::/48
|
|
|
|
ipv6_addr_4: 2001:DB8:FFFF::/90
|
|
|
|
|
|
|
|
- name: Delete interface ipv4 and ipv6 address(setup)
|
|
|
|
eos_l3_interface: &clear
|
|
|
|
name: "{{ test_interface_1 }}"
|
|
|
|
state: absent
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: Configure interface ipv4 address
|
|
|
|
eos_l3_interface: &ipv4
|
|
|
|
name: "{{ test_interface_1 }}"
|
|
|
|
ipv4: "{{ ipv4_addr_1 }}"
|
|
|
|
state: present
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- 'result.changed == true'
|
|
|
|
- '"interface {{ test_interface_1 }}" in result.commands'
|
|
|
|
- '"ip address {{ ipv4_addr_1 }}" in result.commands'
|
|
|
|
|
|
|
|
- name: Configure interface ipv4 address (idempotent)
|
|
|
|
eos_l3_interface: *ipv4
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: &unchanged
|
|
|
|
that:
|
|
|
|
- 'result.changed == false'
|
|
|
|
|
|
|
|
- name: Change interface ipv4 address
|
|
|
|
eos_l3_interface:
|
|
|
|
name: "{{ test_interface_1 }}"
|
|
|
|
ipv4: "{{ ipv4_addr_2 }}"
|
|
|
|
state: present
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- 'result.changed == true'
|
|
|
|
- '"interface {{ test_interface_1 }}" in result.commands'
|
|
|
|
- '"ip address {{ ipv4_addr_2 }}" in result.commands'
|
|
|
|
|
|
|
|
- name: Configure interface ipv6 address
|
|
|
|
eos_l3_interface: &ipv6
|
|
|
|
name: "{{ test_interface_1 }}"
|
|
|
|
ipv6: "{{ ipv6_addr_1 }}"
|
|
|
|
state: present
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- 'result.changed == true'
|
|
|
|
- '"interface {{ test_interface_1 }}" in result.commands'
|
|
|
|
- '"ipv6 address {{ ipv6_addr_1 }}" in result.commands'
|
|
|
|
|
|
|
|
- name: Configure interface ipv6 address (idempotent)
|
|
|
|
eos_l3_interface: *ipv6
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *unchanged
|
|
|
|
|
|
|
|
- name: Change interface ipv6 address
|
|
|
|
eos_l3_interface:
|
|
|
|
name: "{{ test_interface_1 }}"
|
|
|
|
ipv6: "{{ ipv6_addr_2 }}"
|
|
|
|
state: present
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- 'result.changed == true'
|
|
|
|
- '"interface {{ test_interface_1 }}" in result.commands'
|
|
|
|
- '"ipv6 address {{ ipv6_addr_2 }}" in result.commands'
|
|
|
|
|
|
|
|
- name: Delete interface ipv4 and ipv6 address
|
|
|
|
eos_l3_interface: *clear
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- 'result.changed == true'
|
|
|
|
- '"interface {{ test_interface_1 }}" in result.commands'
|
|
|
|
- '"no ip address" in result.commands'
|
|
|
|
- '"no ipv6 address" in result.commands'
|
|
|
|
|
|
|
|
- name: Delete interface ipv4 and ipv6 address (idempotent)
|
|
|
|
eos_l3_interface: *clear
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *unchanged
|
|
|
|
|
|
|
|
- name: Delete second interface ipv4 and ipv6 address (setup)
|
|
|
|
eos_l3_interface:
|
|
|
|
name: "{{ test_interface_2 }}"
|
|
|
|
state: absent
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: Configure ipv4 and ipv6 address using aggregate
|
|
|
|
eos_l3_interface: &aggregate
|
|
|
|
aggregate:
|
|
|
|
- { name: "{{ test_interface_1 }}", ipv4: "{{ ipv4_addr_3 }}", ipv6: "{{ ipv6_addr_3 }}" }
|
|
|
|
- { name: "{{ test_interface_2 }}", ipv4: "{{ ipv4_addr_1 }}", ipv6: "{{ ipv6_addr_1 }}" }
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- 'result.changed == true'
|
|
|
|
- '"interface {{ test_interface_1 }}" in result.commands'
|
|
|
|
- '"ip address {{ ipv4_addr_3 }}" in result.commands'
|
|
|
|
- '"ipv6 address {{ ipv6_addr_3 }}" in result.commands'
|
|
|
|
- '"interface {{ test_interface_2 }}" in result.commands'
|
|
|
|
- '"ip address {{ ipv4_addr_1 }}" in result.commands'
|
|
|
|
- '"ipv6 address {{ ipv6_addr_1 }}" in result.commands'
|
|
|
|
|
|
|
|
- name: Configure ipv4 and ipv6 address using aggregate (idempotent)
|
|
|
|
eos_l3_interface: *aggregate
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *unchanged
|
|
|
|
|
|
|
|
- name: Change ipv4 and ipv6 address using aggregate
|
|
|
|
eos_l3_interface:
|
|
|
|
aggregate:
|
|
|
|
- { name: "{{ test_interface_1 }}", ipv4: "{{ ipv4_addr_2 }}", ipv6: "{{ ipv6_addr_2 }}" }
|
|
|
|
- { name: "{{ test_interface_2 }}", ipv4: "{{ ipv4_addr_4 }}", ipv6: "{{ ipv6_addr_4 }}" }
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- 'result.changed == true'
|
|
|
|
- '"interface {{ test_interface_1 }}" in result.commands'
|
|
|
|
- '"ip address {{ ipv4_addr_2 }}" in result.commands'
|
|
|
|
- '"ipv6 address {{ ipv6_addr_2 }}" in result.commands'
|
|
|
|
- '"interface {{ test_interface_2 }}" in result.commands'
|
|
|
|
- '"ip address {{ ipv4_addr_4 }}" in result.commands'
|
|
|
|
- '"ipv6 address {{ ipv6_addr_4 }}" in result.commands'
|
|
|
|
|
|
|
|
|
|
|
|
- name: Delete ipv4 and ipv6 address using aggregate
|
|
|
|
eos_l3_interface: &clear_both
|
|
|
|
aggregate:
|
|
|
|
- { name: "{{ test_interface_1 }}" }
|
|
|
|
- { name: "{{ test_interface_2 }}" }
|
|
|
|
state: absent
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- 'result.changed == true'
|
|
|
|
- '"interface {{ test_interface_1 }}" in result.commands'
|
|
|
|
- '"no ip address" in result.commands'
|
|
|
|
- '"no ipv6 address" in result.commands'
|
|
|
|
- '"interface {{ test_interface_2 }}" in result.commands'
|
|
|
|
- '"no ip address" in result.commands'
|
|
|
|
- '"no ipv6 address" in result.commands'
|
|
|
|
|
|
|
|
- name: Delete ipv4 and ipv6 address using aggregate (idempotent)
|
|
|
|
eos_l3_interface: *clear_both
|
|
|
|
become: yes
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *unchanged
|
|
|
|
|
|
|
|
- debug:
|
|
|
|
msg: "END eos_l3_interface eapi/basic.yaml on connection={{ ansible_connection }}"
|