Idempotent ansible role for Keepalived service # Config examples
Using template config keepalived_config: global_defs: router_id: t1-dev-rabbitmq vrrp_track_process: haproxy: process: haproxy quorum: 1 delay: 2 vrrp_instance: VRRP_1: state: MASTER virtual_router_id: 50 priority: "{{ ansible_default_ipv4.address.split('.')[-1][-2:] }}" interface: "{{ ansible_default_ipv4.interface }}" unicast_src_ip: "{{ ansible_default_ipv4.address }}" unicast_peer: - 10.89.10.71 - 10.89.10.72 - 10.89.10.73 virtual_ipaddress: - "10.89.10.112/32 dev {{ ansible_default_ipv4.interface }}" track_process: - haproxy
Complete config override keepalived_config_override: | global_defs { router_id {{ patroni_cluster_name | default('default') }} } vrrp_track_process haproxy { process haproxy quorum 1 delay 2 } vrrp_instance VRRP_1 { state MASTER virtual_router_id {{ keepalived_vip.split('.')[-1][-3:] }} priority {{ ansible_enp3s0.ipv4.address.split('.')[-1][-3:] | default(ansible_default_ipv4.address.split('.')[-1][-3:]) }} interface {{ ansible_enp3s0.device | default(ansible_default_ipv4.interface) }} unicast_src_ip {{ ansible_enp3s0.ipv4.address | default(ansible_default_ipv4.address) }} unicast_peer { {% for peer in groups.all %} {{ hostvars[peer].ansible_enp3s0.ipv4.address if hostvars[peer].ansible_enp3s0.ipv4.address != ansible_enp3s0.ipv4.address }} {% endfor %} } virtual_ipaddress { {{ keepalived_vip }}/32 dev enp3s0 } track_process { haproxy } }