{% set dhcrelays = prefixes | selectattr('prefix', 'in', dhcp_servers | map('first') | ipaddr("network/prefix")) | map(attribute="vrf.name") | map('regex_replace', '^', 'dhcrelay@') %} {% set exits = [inventory_hostname, peer]|sort -%} global_defs { enable_script_security script_user root } vrrp_instance dhcrelay { virtual_router_id 50 virtual_ipaddress { 169.254.1.1/24 } interface peerlink.4 {% for exit in exits %} @{{ exit }} priority {{ loop.index }} @{{ exit }} unicast_src_ip {{ "169.254.1.0/24" | ipaddr(loop.index + 1) | ipaddr('address') }} {% endfor %} unicast_peer { {% for exit in exits %} @^{{ exit }} {{ "169.254.1.0/24" | ipaddr(loop.index + 1) | ipaddr('address') }} {% endfor %} } notify_master "systemctl start {{ dhcrelays | join(' ') }}" notify_fault "systemctl start {{ dhcrelays | join(' ') }}" notify_backup "systemctl stop {{ dhcrelays | join(' ') }}" notify_stop "systemctl stop {{ dhcrelays | join(' ') }}" }