Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dellemc.os10.roles.os10_vrrp only assigns virtual IP to lowest ordered vrrp_group #140

Open
worshach opened this issue Jun 22, 2023 · 0 comments

Comments

@worshach
Copy link

worshach commented Jun 22, 2023

SUMMARY

Using the vrrp role to create groups on multiple interfaces does not assign virtual IP's as expected

ISSUE TYPE
  • Bug Report
COMPONENT NAME

dellemc.os10.roles.os10_vrrp role

ANSIBLE VERSION
ansible [core 2.14.2]
  config file = /workbench/xxx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.11/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.11.2 (main, Jun 14 2023, 13:00:29) [GCC 8.5.0 20210514 (Red Hat 8.5.0-18.0.2)] (/usr/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True
COLLECTION VERSION
Collection   Version
------------ -------
dellemc.os10 1.1.1 
CONFIGURATION
CONFIG_FILE() = /workbench/xxx/ansible.cfg
DEFAULT_GATHERING(/workbench/xxx/ansible.cfg) = explicit
DEFAULT_HOST_LIST(/workbench/xxx/ansible.cfg) = ['/workbench/xxx/hosts']
DEFAULT_LOG_PATH(/workbench/xxx/ansible.cfg) = /workbench/xxx/logs/ansible.log
HOST_KEY_CHECKING(/workbench/xxx/ansible.cfg) = False
NETWORK_GROUP_MODULES(/workbench/xxx/ansible.cfg) = ['os10']
RETRY_FILES_ENABLED(/workbench/xxx/ansible.cfg) = False
OS / ENVIRONMENT

OS10.5.5.3.56
Dell S5248F Image
GNS3 2.2.40.1 on VMware 7.0.3i

STEPS TO REPRODUCE

ansible-inventory --list
{
"_meta": {
"hostvars": {
"os10_sw1": {
"ansible_host": "172.16.27.90",
"ansible_network_os": "dellemc.os10.os10",
"ansible_ssh_pass": "admin",
"ansible_ssh_user": "admin",
"hostname": "os10_sw1",
"os10_ntp": {
"intf": {
"ethernet 1/1/2": {
"broadcast": true,
"disable": true
}
},
"master": 5,
"server": [
{
"ip": "172.16.50.252",
"prefer": true,
"state": "present"
},
{
"ip": "172.16.50.253",
"prefer": false,
"state": "present"
}
],
"source": "ethernet 1/1/2",
"vrf": {
"name": "red",
"state": "present"
}
},
"os10_vlan": {
"vlan 101": {
"description": xxx",
"ip_and_mask": "172.16.101.252/24",
"state": "present"
},
"vlan 1500": {
"description": "xxx",
"ip_and_mask": "172.16.2.5/29",
"state": "present"
},
"vlan 3900": {
"description": "xxx",
"state": "present"
},
"vlan 70": {
"description": "xxx",
"state": "present"
},
"vlan 71": {
"descriptption": "xxx",
"state": "present"
},
"vlan 72": {
"description": "xxx",
"ip_and_mask": "172.16.78.29/27",
"state": "present"
},
"vlan 73": {
"description": "xxx",
"ip_and_mask": "172.16.79.29/27",
"state": "present"
},
"vlan 74": {
"description": "xxx",
"ip_and_mask": "172.16.74.60/26",
"state": "present"
},
"vlan 75": {
"description": "xxx",
"ip_and_mask": "172.16.74.124/26",
"state": "present"
},
"vlan 76": {
"description": "xxx",
"ip_and_mask": "172.16.76.60/26",
"state": "present"
},
"vlan 77": {
"description": "xxx",
"ip_and_mask": "172.16.76.124/26",
"state": "present"
},
"vlan 78": {
"description": "xxx",
"ip address": "172.16.78.61/27",
"state": "present"
},
"vlan 79": {
"description": "xxx",
"ip_and_mask": "172.16.79.61/27",
"state": "present"
},
"vlan 82": {
"description": "xxx2",
"ip_and_mask": "172.16.82.60/26",
"state": "present"
},
"vlan 90": {
"description": "xxx",
"ip_and_mask": "172.16.90.1/24",
"state": "present"
},
"vlan 999": {
"description": "xxx",
"state": "present"
}
},
"os10_vrrp": {
"vlan101": {
"vrrp_group": [
{
"group_id": 101,
"preempt": true,
"priority": 200,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.101.254",
"state": "present"
}
]
}
]
},
"vlan150": {
"vrrp_group": [
{
"group_id": 150,
"preempt": true,
"priority": 200,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.2.4",
"state": "present"
}
]
}
]
},
"vlan74": {
"vrrp_group": [
{
"group_id": 74,
"preempt": true,
"priority": 200,
"state": "present",
"type": "ipv4",
"virtual_address": [
{
"ip": "172.16.74.62",
"state": "present"
}
]
}
]
},
"vlan75": {
"vrrp_group": [
{
"group_id": 75,
"preempt": true,
"priority": 200,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.74.126",
"state": "present"
}
]
}
]
},
"vlan76": {
"vrrp_group": [
{
"group_id": 76,
"preempt": true,
"priority": 200,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.76.62",
"state": "present"
}
]
}
]
},
"vlan77": {
"vrrp_group": [
{
"group_id": 77,
"preempt": true,
"priority": 200,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.76.126",
"state": "present"
}
]
}
]
},
"vlan82": {
"vrrp_group": [
{
"group_id": 82,
"preempt": true,
"priority": 200,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.82.62",
"state": "present"
}
]
}
]
}
}
},
"os10_sw2": {
"ansible_host": "172.16.27.91",
"ansible_network_os": "dellemc.os10.os10",
"ansible_ssh_pass": "admin",
"ansible_ssh_user": "admin",
"hostname": "os10_sw2",
"os10_ntp": {
"intf": {
"ethernet 1/1/2": {
"broadcast": true,
"disable": true
}
},
"master": 5,
"server": [
{
"ip": "172.16.50.252",
"prefer": true,
"state": "present"
},
{
"ip": "172.16.50.253",
"prefer": false,
"state": "present"
}
],
"source": "ethernet 1/1/2",
"vrf": {
"name": "red",
"state": "present"
}
},
"os10_vlan": {
"vlan 101": {
"description": "xxx",
"ip_and_mask": "172.16.101.252/24",
"state": "present"
},
"vlan 1500": {
"description": "xxx",
"ip_and_mask": "172.16.2.5/29",
"state": "present"
},
"vlan 3900": {
"description": "xxx",
"state": "present"
},
"vlan 70": {
"description": "xxx",
"state": "present"
},
"vlan 71": {
"descriptption": "xxx",
"state": "present"
},
"vlan 72": {
"description": "xxx",
"ip_and_mask": "172.16.78.29/27",
"state": "present"
},
"vlan 73": {
"description": "xxx",
"ip_and_mask": "172.16.79.29/27",
"state": "present"
},
"vlan 74": {
"description": "xxx",
"ip_and_mask": "172.16.74.60/26",
"state": "present"
},
"vlan 75": {
"description": "xxx",
"ip_and_mask": "172.16.74.124/26",
"state": "present"
},
"vlan 76": {
"description": "xxx",
"ip_and_mask": "172.16.76.60/26",
"state": "present"
},
"vlan 77": {
"description": "xxx",
"ip_and_mask": "172.16.76.124/26",
"state": "present"
},
"vlan 78": {
"description": "xxx",
"ip address": "172.16.78.61/27",
"state": "present"
},
"vlan 79": {
"description": "xxx",
"ip_and_mask": "172.16.79.61/27",
"state": "present"
},
"vlan 82": {
"description": "xxx",
"ip_and_mask": "172.16.82.60/26",
"state": "present"
},
"vlan 90": {
"description": "xxx",
"ip_and_mask": "172.16.90.1/24",
"state": "present"
},
"vlan 999": {
"description": "xxx",
"state": "present"
}
},
"os10_vrrp": {
"vlan101": {
"vrrp_group": [
{
"group_id": 101,
"preempt": false,
"priority": 100,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.101.254",
"state": "present"
}
]
}
]
},
"vlan150": {
"vrrp_group": [
{
"group_id": 150,
"preempt": false,
"priority": 100,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.2.4",
"state": "present"
}
]
}
]
},
"vlan74": {
"vrrp_group": [
{
"group_id": 74,
"preempt": false,
"priority": 100,
"state": "present",
"type": "ipv4",
"virtual_address": [
{
"ip": "172.16.74.62",
"state": "present"
}
]
}
]
},
"vlan75": {
"vrrp_group": [
{
"group_id": 75,
"preempt": false,
"priority": 100,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.74.126",
"state": "present"
}
]
}
]
},
"vlan76": {
"vrrp_group": [
{
"group_id": 76,
"preempt": false,
"priority": 100,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.76.62",
"state": "present"
}
]
}
]
},
"vlan77": {
"vrrp_group": [
{
"group_id": 77,
"preempt": false,
"priority": 100,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.76.126",
"state": "present"
}
]
}
]
},
"vlan82": {
"vrrp_group": [
{
"group_id": 82,
"preempt": false,
"priority": 100,
"state": "present",
"type": "ipv4",
"virtual_addresses": [
{
"ip": "172.16.82.62",
"state": "present"
}
]
}
]
},
"vrrp": {
"delay_reload": 2,
"version": 3
}
}
}
}
},
"all": {
"children": [
"ungrouped",
"os10_switches"
]
},
"os10_switches": {
"hosts": [
"os10_sw1",
"os10_sw2"
]
}
}

---
- hosts: os10_sw1
  connection: network_cli
  collections:
    - dellemc.os10
  roles:
    - os10_vlan
    - os10_vrrp

ansible-playbook site.yaml -vvv

EXPECTED RESULTS

interface vlan70
description xxx
no shutdown
!
interface vlan71
description xxx
no shutdown
!
interface vlan72
description xxx
no shutdown
ip address 172.16.78.29/27
!
interface vlan73
description xxx
no shutdown
ip address 172.16.79.29/27
!
interface vlan74
description xxx
no shutdown
ip address 172.16.74.60/26
!
vrrp-group 74
virtual-address 172.16.74.62
!
interface vlan75
description xxx
no shutdown
ip address 172.16.74.124/26
!
vrrp-group 75
virtual-address 172.16.74.126
!
interface vlan76
description xxx
no shutdown
ip address 172.16.76.60/26
!
vrrp-group 76
virtual-address 172.16.76.62
!
interface vlan77
description xxx
no shutdown
ip address 172.16.76.124/26
!
vrrp-group 77
virtual-address 172.16.76.126
!
interface vlan78
description xxx
no shutdown
ip address 172.16.78.61/27
!
interface vlan79
description xxx
no shutdown
ip address 172.16.79.61/27
!
interface vlan82
description xxx
no shutdown
ip address 172.16.82.60/26
!
vrrp-group 82
virtual-address 172.16.82.62
!
interface vlan90
description xxx
no shutdown
ip address 172.16.90.1/24
!
interface vlan101
description xxx
no shutdown
ip address 172.16.101.252/24
!
vrrp-group 101
priority 254
virtual-address 172.16.101.254
!
interface vlan999
description xxx
no shutdown
!
interface vlan1500
description xxx
no shutdown
ip address 172.16.2.5/29
!
vrrp-group 150
virtual-address 172.16.2.4
!
interface vlan3900
description xxx

ACTUAL RESULTS

interface vlan70
description xxx
no shutdown
!
interface vlan71
no shutdown
!
interface vlan72
description xxx
no shutdown
ip address 172.16.78.29/27
!
interface vlan73
description xxx
no shutdown
ip address 172.16.79.29/27
!
interface vlan74
description xxx
no shutdown
ip address 172.16.74.60/26
!
vrrp-group 74
virtual-address 172.16.74.62
!
interface vlan75
description xxx
no shutdown
ip address 172.16.74.124/26
!
vrrp-group 75
!
interface vlan76
description xxx
no shutdown
ip address 172.16.76.60/26
!
vrrp-group 76
!
interface vlan77
description xxx
no shutdown
ip address 172.16.76.124/26
!
vrrp-group 77
!
interface vlan78
description xxx
no shutdown
!
interface vlan79
description xxx
no shutdown
ip address 172.16.79.61/27
!
interface vlan82
description xxx
no shutdown
ip address 172.16.82.60/26
!
vrrp-group 82
!
interface vlan90
description xxx
no shutdown
ip address 172.16.90.1/24
!
interface vlan101
description xxx
no shutdown
ip address 172.16.101.252/24
!
vrrp-group 101
!
interface vlan150
no shutdown
!
vrrp-group 150
!
interface vlan999
description xxx
no shutdown
!
interface vlan1500
description xxx
no shutdown
ip address 172.16.2.5/29
!
interface vlan3900
description xxx
no shutdown
!

[root@tower01 xxx]# ansible-playbook site.yml -vvv
ansible-playbook [core 2.14.2]
  config file = /workbench/xxx/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.11/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible-playbook
  python version = 3.11.2 (main, Jun 14 2023, 13:00:29) [GCC 8.5.0 20210514 (Red Hat 8.5.0-18.0.2)] (/usr/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True
Using /workbench/xxx/ansible.cfg as config file
host_list declined parsing /workbench/xxx/hosts as it did not pass its verify_file() method
script declined parsing /workbench/xxx/hosts as it did not pass its verify_file() method
auto declined parsing /workbench/xxx/hosts as it did not pass its verify_file() method
Parsed /workbench/xxx/hosts inventory source with yaml plugin
redirecting (type: action) dellemc.os10.os10_config to dellemc.os10.os10
redirecting (type: action) dellemc.os10.os10_config to dellemc.os10.os10
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.

PLAYBOOK: site.yml **************************************************************************************************************************************************************************************************************
1 plays in site.yml

PLAY [os10_sw1] *****************************************************************************************************************************************************************************************************************

TASK [dellemc.os10.os10_vlan : Generating VLAN configuration for os10] **********************************************************************************************************************************************************
task path: /root/.ansible/collections/ansible_collections/dellemc/os10/roles/os10_vlan/tasks/main.yml:3
skipping: [os10_sw1] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}
redirecting (type: action) dellemc.os10.os10_config to dellemc.os10.os10

TASK [dellemc.os10.os10_vlan : Provisioning VLAN configuration for os10] ********************************************************************************************************************************************************
task path: /root/.ansible/collections/ansible_collections/dellemc/os10/roles/os10_vlan/tasks/main.yml:11
redirecting (type: connection) ansible.builtin.network_cli to ansible.netcommon.network_cli
redirecting (type: action) dellemc.os10.os10_config to dellemc.os10.os10
redirecting (type: action) dellemc.os10.os10_config to dellemc.os10.os10
ok: [os10_sw1] => {
    "changed": false,
    "invocation": {
        "module_args": {
            "after": null,
            "backup": false,
            "backup_options": null,
            "before": null,
            "config": null,
            "lines": null,
            "match": "line",
            "parents": null,
            "provider": null,
            "replace": "line",
            "save": false,
            "src": "\n\ninterface vlan70\n description xxx_vmotion\n\n\n\n\n\n\n\n\ninterface vlan71\n\n\n\n\n\n\n\n\ninterface vlan72\n description xxx\n\n ip address 172.16.78.29/27\n\n\n\n\n\n\n\ninterface vlan73\n description xxx\n\n ip address 172.16.79.29/27\n\n\n\n\n\n\n\ninterface vlan74\n description xxx\n\n ip address 172.16.74.60/26\n\n\n\n\n\n\n\ninterface vlan75\n description xxx\n\n ip address 172.16.74.124/26\n\n\n\n\n\n\n\ninterface vlan76\n description xxx\n\n ip address 172.16.76.60/26\n\n\n\n\n\n\n\ninterface vlan77\n description xxx\n\n ip address 172.16.76.124/26\n\n\n\n\n\n\n\ninterface vlan78\n description xxx\n\n\n\n\n\n\n\n\ninterface vlan79\n description xxx\n\n ip address 172.16.79.61/27\n\n\n\n\n\n\n\ninterface vlan82\n description xxx\n\n ip address 172.16.82.60/26\n\n\n\n\n\n\n\ninterface vlan90\n description xxx\n\n ip address 172.16.90.1/24\n\n\n\n\n\n\n\ninterface vlan101\n description xxx\n\n ip address 172.16.101.252/24\n\n\n\n\n\n\n\ninterface vlan999\n description xxx\n\n\n\n\n\n\n\n\ninterface vlan1500\n description xxx\n\n ip address 172.16.2.5/29\n\n\n\n\n\n\n\ninterface vlan3900\n description xxx\n\n\n\n\n\n\n",
            "update": "merge"
        }
    },
    "saved": false
}

TASK [dellemc.os10.os10_vrrp : Generating VRRP configuration for os10] **********************************************************************************************************************************************************
task path: /root/.ansible/collections/ansible_collections/dellemc/os10/roles/os10_vrrp/tasks/main.yml:3
skipping: [os10_sw1] => {
    "changed": false,
    "skip_reason": "Conditional result was False"
}
redirecting (type: action) dellemc.os10.os10_config to dellemc.os10.os10

TASK [dellemc.os10.os10_vrrp : Provisioning VRRP configuration for os10] ********************************************************************************************************************************************************
task path: /root/.ansible/collections/ansible_collections/dellemc/os10/roles/os10_vrrp/tasks/main.yml:11
redirecting (type: connection) ansible.builtin.network_cli to ansible.netcommon.network_cli
redirecting (type: action) dellemc.os10.os10_config to dellemc.os10.os10
redirecting (type: action) dellemc.os10.os10_config to dellemc.os10.os10
changed: [os10_sw1] => {
    "changed": true,
    "commands": [
        "interface vlan74",
        "vrrp-group 74",
        "preempt",
        "interface vlan75",
        "vrrp-group 75",
        "preempt",
        "interface vlan76",
        "vrrp-group 76",
        "preempt",
        "interface vlan77",
        "vrrp-group 77",
        "preempt",
        "interface vlan82",
        "vrrp-group 82",
        "preempt",
        "interface vlan101",
        "vrrp-group 101",
        "preempt",
        "interface vlan150",
        "vrrp-group 150",
        "preempt",
        "commit"
    ],
    "invocation": {
        "module_args": {
            "after": null,
            "backup": false,
            "backup_options": null,
            "before": null,
            "config": null,
            "lines": null,
            "match": "line",
            "parents": null,
            "provider": null,
            "replace": "line",
            "save": false,
            "src": "interface vlan74\n no vrrp mode active-active\n vrrp-group 74\n  virtual-address 172.16.74.62\n  preempt\n  priority 200\ninterface vlan75\n no vrrp mode active-active\n vrrp-group 75\n  preempt\n  priority 200\ninterface vlan76\n no vrrp mode active-active\n vrrp-group 76\n  preempt\n  priority 200\ninterface vlan77\n no vrrp mode active-active\n vrrp-group 77\n  preempt\n  priority 200\ninterface vlan82\n no vrrp mode active-active\n vrrp-group 82\n  preempt\n  priority 200\ninterface vlan101\n no vrrp mode active-active\n vrrp-group 101\n  preempt\n  priority 200\ninterface vlan150\n no vrrp mode active-active\n vrrp-group 150\n  preempt\n  priority 200\n",
            "update": "merge"
        }
    },
    "saved": false,
    "updates": [
        "interface vlan74",
        "vrrp-group 74",
        "preempt",
        "interface vlan75",
        "vrrp-group 75",
        "preempt",
        "interface vlan76",
        "vrrp-group 76",
        "preempt",
        "interface vlan77",
        "vrrp-group 77",
        "preempt",
        "interface vlan82",
        "vrrp-group 82",
        "preempt",
        "interface vlan101",
        "vrrp-group 101",
        "preempt",
        "interface vlan150",
        "vrrp-group 150",
        "preempt",
        "commit"
    ]
}

PLAY RECAP **********************************************************************************************************************************************************************************************************************
os10_sw1                   : ok=2    changed=1    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0   
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant