netascode / ansible-dc-vxlan

Ansible Collection for configuring a VXLAN Fabric using Direct to Controller (DTC) or Direct To Device (DTD) workflows.
https://galaxy.ansible.com/ui/repo/published/cisco/nac_dc_vxlan/
MIT License
6 stars 6 forks source link

Support for IPv6 Underlay #119

Closed marehler closed 1 month ago

marehler commented 3 months ago

Creating a fabric with IPv6 underlay fails. Underlay configuration:

---
vxlan:
  underlay:
    general:
      enable_ipv6_underlay: true
      routing_protocol: ospf
      replication_mode: ingress
      underlay_routing_loopback_id: 0
      underlay_vtep_loopback_id: 1
      underlay_routing_protocol_tag: UNDERLAY
      intra_fabric_interface_mtu: 9216
      layer2_host_interfacde_mtu: 9216
      unshut_host_interfaces: True
    ipv6:
      enable_ipv6_link_local_address: true
      underlay_subnet_mask: 64
    ospf:
      area_id: 0.0.0.0

Error message:

TASK [cisco.nac_dc_vxlan.create : Manage fabric VXLAN-FABRIC-2 in NDFC] *****************************************************************************
task path: /Users/marehler/nac-vxlan/ansible-dc-vxlan-example/collections/ansible_collections/cisco/nac_dc_vxlan/roles/dtc/create/tasks/fabric.yml:31
fatal: [marehler_vnd2]: FAILED! => {"changed": false, "msg": "The following parameter(value) combination(s) are invalid and need to be reviewed: Fabric: VXLAN-FABRIC-2, FABRIC_INTERFACE_TYPE(p2p) requires UNDERLAY_IS_V6 != True. UNDERLAY_IS_V6 valid values: [False, True]. SUBNET_TARGET_MASK(30) requires UNDERLAY_IS_V6 == False. UNDERLAY_IS_V6 valid values: [False, True]. REPLICATION_MODE(Ingress) requires UNDERLAY_IS_V6 != True. UNDERLAY_IS_V6 valid values: [False, True]. OSPF_AUTH_ENABLE(False) requires UNDERLAY_IS_V6 == False, UNDERLAY_IS_V6 valid values: [False, True]. LOOPBACK0_IP_RANGE(10.2.0.0/22) requires UNDERLAY_IS_V6 == False, UNDERLAY_IS_V6 valid values: [False, True]. LOOPBACK1_IP_RANGE(10.3.0.0/22) requires UNDERLAY_IS_V6 == False, UNDERLAY_IS_V6 valid values: [False, True]. SUBNET_RANGE(10.4.0.0/16) requires UNDERLAY_IS_V6 == False, UNDERLAY_IS_V6 valid values: [False, True]. BGP_AUTH_ENABLE(False) requires UNDERLAY_IS_V6 == False. UNDERLAY_IS_V6 valid values: [False, True]. BFD_ENABLE(False) requires UNDERLAY_IS_V6 == False. UNDERLAY_IS_V6 valid values: [False, True]. ENABLE_NETFLOW(False) requires UNDERLAY_IS_V6 == False. UNDERLAY_IS_V6 valid values: [False, True]. ", "response": [{}], "result": [{}]}

When I try to manually create a fabric via API with the same fabric config, I cannot reproduce this error. Instead, I get errors indicating to remove REPLICATION_MODE, DEPLOY, and FABRIC_TYPE. I assume this error is not raised by NDFC, but by the cisco.dcnm.dcnm_fabric Ansible module.

When removing 'replication_mode' from the configuration data, a different error occurs at an earlier task:

TASK [cisco.nac_dc_vxlan.common : Build Networks Attach List From Template] *************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.errors.AnsibleUndefinedVariable: 'dict object' has no attribute 'replication_mode'
fatal: [marehler_vnd2]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'replication_mode'"}
mikewiebe commented 2 months ago

Formatted error from the fabric module

TASK [cisco.nac_dc_vxlan.create : Manage fabric VXLAN-FABRIC-2 in NDFC] *****************************************************************************
task path: /Users/marehler/nac-vxlan/ansible-dc-vxlan-example/collections/ansible_collections/cisco/nac_dc_vxlan/roles/dtc/create/tasks/fabric.yml:31
fatal: [marehler_vnd2]: FAILED! => {"changed": false, "msg": "The following parameter(value) combination(s) are invalid and need to be reviewed: 

Fabric: VXLAN-FABRIC-2, 
FABRIC_INTERFACE_TYPE(p2p) requires UNDERLAY_IS_V6 != True. UNDERLAY_IS_V6 valid values: [False, True]. 

SUBNET_TARGET_MASK(30) requires UNDERLAY_IS_V6 == False. UNDERLAY_IS_V6 valid values: [False, True]. 

REPLICATION_MODE(Ingress) requires UNDERLAY_IS_V6 != True. UNDERLAY_IS_V6 valid values: [False, True]. 

OSPF_AUTH_ENABLE(False) requires UNDERLAY_IS_V6 == False, UNDERLAY_IS_V6 valid values: [False, True]. 

LOOPBACK0_IP_RANGE(10.2.0.0/22) requires UNDERLAY_IS_V6 == False, UNDERLAY_IS_V6 valid values: [False, True]. 

LOOPBACK1_IP_RANGE(10.3.0.0/22) requires UNDERLAY_IS_V6 == False, UNDERLAY_IS_V6 valid values: [False, True]. 

SUBNET_RANGE(10.4.0.0/16) requires UNDERLAY_IS_V6 == False, UNDERLAY_IS_V6 valid values: [False, True]. 

BGP_AUTH_ENABLE(False) requires UNDERLAY_IS_V6 == False. UNDERLAY_IS_V6 valid values: [False, True]. 

BFD_ENABLE(False) requires UNDERLAY_IS_V6 == False. UNDERLAY_IS_V6 valid values: [False, True]. 

ENABLE_NETFLOW(False) requires UNDERLAY_IS_V6 == False. UNDERLAY_IS_V6 valid values: [False, True]. ", "response": [{}], "result": [{}]}
marehler commented 1 month ago

Verified. Thank you @devegupt for fixing this issue.

mtarking commented 1 month ago

Thanks @marehler!

devegupt commented 1 month ago

Thanks @marehler