Really quite shoddy as it is right now. Should get better once the old server is retired.
		
			
				
	
	
		
			27 lines
		
	
	
	
		
			1,004 B
		
	
	
	
		
			Django/Jinja
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			1,004 B
		
	
	
	
		
			Django/Jinja
		
	
	
	
	
	
{% 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(' ') }}"
 | 
						|
}
 |