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(' ') }}"
 | |
| }
 |