|
|
|
---
|
|
|
|
- debug: msg="START connection={{ ansible_connection }} nxos_vxlan_vtep sanity test"
|
|
|
|
- debug: msg="Using provider={{ connection.transport }}"
|
|
|
|
when: ansible_connection == "local"
|
|
|
|
|
|
|
|
- block:
|
|
|
|
# N9K(v9.2+) specific attrs
|
|
|
|
- set_fact: global_mcast_group_L2="225.1.1.2"
|
|
|
|
- set_fact: def_global_mcast_group_L2="default"
|
|
|
|
|
|
|
|
# Layer 3 Tenant Routed Multicast (TRM) dependency.
|
|
|
|
# global_mcast_group_l3 / global_ingress_replication_bgp have a dependency on TRM.
|
|
|
|
# TRM requires specific 92/93/95 chassis and -EX/-FX line cards.
|
|
|
|
- block:
|
|
|
|
- set_fact: global_mcast_group_L3="225.1.1.1"
|
|
|
|
- set_fact: def_global_mcast_group_L3="default"
|
|
|
|
- set_fact: global_ingress_replication_bgp="true"
|
|
|
|
- set_fact: def_global_ingress_replication_bgp="false"
|
|
|
|
when: false # Manually change this to true when correct h/w is present
|
|
|
|
|
|
|
|
- name: "TCAM resource check for global_suppress_arp"
|
|
|
|
# GSA requires tcam resources. Skip these attrs when arp-ether size is 0.
|
|
|
|
# Note: TCAM changes require a switch reload.
|
|
|
|
# Sample Input: "Ingress ARP-Ether ACL [arp-ether] size = 256"
|
|
|
|
nxos_command:
|
|
|
|
commands:
|
|
|
|
- command: show hardware access-list tcam region | incl arp-ether | sed 's/.*size = *//'
|
|
|
|
output: text
|
|
|
|
connection: network_cli
|
|
|
|
register: tcam_state
|
|
|
|
- block:
|
|
|
|
- set_fact: global_suppress_arp="true"
|
|
|
|
- set_fact: def_global_suppress_arp="false"
|
|
|
|
when: "tcam_state.stdout[0]|int > 0"
|
|
|
|
|
|
|
|
when: platform is search('N9K') and (major_version is version('9.2', 'ge'))
|
|
|
|
|
|
|
|
- block:
|
|
|
|
- name: "Apply N7K specific setup config"
|
|
|
|
include: targets/nxos_vxlan_vtep/tasks/platform/n7k/setup.yaml
|
|
|
|
when: platform is match('N7K')
|
|
|
|
|
|
|
|
- name: "Enable feature nv overlay"
|
|
|
|
nxos_config:
|
|
|
|
commands:
|
|
|
|
- feature nv overlay
|
|
|
|
- nv overlay evpn
|
|
|
|
match: none
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
|
|
|
|
- block:
|
|
|
|
- name: "Enable feature ngmvpn"
|
|
|
|
nxos_config:
|
|
|
|
commands:
|
|
|
|
- feature ngmvpn
|
|
|
|
match: none
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
when: global_mcast_group_L3 is defined
|
|
|
|
|
|
|
|
- block:
|
|
|
|
- name: configure vxlan_vtep
|
|
|
|
nxos_vxlan_vtep: &configure9
|
|
|
|
interface: nve1
|
|
|
|
description: "abcd"
|
|
|
|
host_reachability: true
|
|
|
|
source_interface: Loopback0
|
|
|
|
source_interface_hold_down_time: 30
|
|
|
|
global_ingress_replication_bgp: "{{ global_ingress_replication_bgp|default(omit) }}"
|
|
|
|
global_suppress_arp: "{{ global_suppress_arp|default(omit) }}"
|
|
|
|
global_mcast_group_L3: "{{ global_mcast_group_L3|default(omit) }}"
|
|
|
|
shutdown: false
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: &true
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
|
|
|
|
- name: "Conf Idempotence"
|
|
|
|
nxos_vxlan_vtep: *configure9
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: &false
|
|
|
|
that:
|
|
|
|
- "result.changed == false"
|
|
|
|
|
|
|
|
- name: reset vxlan_vtep
|
|
|
|
nxos_vxlan_vtep: &def9
|
|
|
|
interface: nve1
|
|
|
|
description: default
|
|
|
|
host_reachability: false
|
|
|
|
source_interface_hold_down_time: default
|
|
|
|
source_interface: default
|
|
|
|
global_ingress_replication_bgp: "{{ def_global_ingress_replication_bgp|default(omit) }}"
|
|
|
|
global_suppress_arp: "{{ def_global_suppress_arp|default(omit) }}"
|
|
|
|
global_mcast_group_L3: "{{ def_global_mcast_group_L3|default(omit) }}"
|
|
|
|
shutdown: true
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *true
|
|
|
|
|
|
|
|
- name: "reset Idempotence"
|
|
|
|
nxos_vxlan_vtep: *def9
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *false
|
|
|
|
|
|
|
|
- name: configure global mcast L2
|
|
|
|
nxos_vxlan_vtep: &gml2
|
|
|
|
interface: nve1
|
|
|
|
host_reachability: true
|
|
|
|
global_mcast_group_L2: "{{ global_mcast_group_L2|default(omit) }}"
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *true
|
|
|
|
|
|
|
|
- name: "Conf Idempotence"
|
|
|
|
nxos_vxlan_vtep: *gml2
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *false
|
|
|
|
|
|
|
|
- name: reset global mcast L2
|
|
|
|
nxos_vxlan_vtep: &rgml2
|
|
|
|
interface: nve1
|
|
|
|
host_reachability: false
|
|
|
|
global_mcast_group_L2: "{{ def_global_mcast_group_L2|default(omit) }}"
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *true
|
|
|
|
|
|
|
|
- name: "reset Idempotence"
|
|
|
|
nxos_vxlan_vtep: *rgml2
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *false
|
|
|
|
|
|
|
|
when: (platform is search('N9K'))
|
|
|
|
|
|
|
|
- block:
|
|
|
|
- name: configure vxlan_vtep
|
|
|
|
nxos_vxlan_vtep: &configure7
|
|
|
|
interface: nve1
|
|
|
|
description: default
|
|
|
|
host_reachability: true
|
|
|
|
source_interface: Loopback0
|
|
|
|
shutdown: false
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
|
|
|
|
- name: "Conf Idempotence"
|
|
|
|
nxos_vxlan_vtep: *configure7
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == false"
|
|
|
|
|
|
|
|
- name: reset vxlan_vtep
|
|
|
|
nxos_vxlan_vtep: &def7
|
|
|
|
interface: nve1
|
|
|
|
description: default
|
|
|
|
host_reachability: false
|
|
|
|
source_interface: default
|
|
|
|
shutdown: true
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *true
|
|
|
|
|
|
|
|
- name: "reset Idempotence"
|
|
|
|
nxos_vxlan_vtep: *def7
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert: *false
|
|
|
|
|
|
|
|
when: (platform is search('N7K'))
|
|
|
|
|
|
|
|
- name: remove vxlan_vtep
|
|
|
|
nxos_vxlan_vtep: &remove
|
|
|
|
interface: nve1
|
|
|
|
description: default
|
|
|
|
host_reachability: true
|
|
|
|
source_interface: Loopback0
|
|
|
|
source_interface_hold_down_time: 30
|
|
|
|
shutdown: true
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
state: absent
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == true"
|
|
|
|
|
|
|
|
- name: "Remove Idempotence"
|
|
|
|
nxos_vxlan_vtep: *remove
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- assert:
|
|
|
|
that:
|
|
|
|
- "result.changed == false"
|
|
|
|
|
|
|
|
when: (platform is search("N7K|N9K"))
|
|
|
|
|
|
|
|
always:
|
|
|
|
- name: "Apply N7K specific cleanup config"
|
|
|
|
include: targets/nxos_vxlan_vtep/tasks/platform/n7k/cleanup.yaml
|
|
|
|
when: platform is match('N7K')
|
|
|
|
|
|
|
|
- name: "Disable nv overlay evpn"
|
|
|
|
nxos_config:
|
|
|
|
commands:
|
|
|
|
- no nv overlay evpn
|
|
|
|
match: none
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- name: "Disable feature nv overlay"
|
|
|
|
nxos_feature:
|
|
|
|
feature: nve
|
|
|
|
provider: "{{ connection }}"
|
|
|
|
state: disabled
|
|
|
|
ignore_errors: yes
|
|
|
|
|
|
|
|
- debug: msg="END connection={{ ansible_connection }} nxos_vxlan_vtep sanity test"
|