observability.svc.plus/roles/node/tasks/vip.yml
2026-02-01 20:53:55 +08:00

49 lines
2.1 KiB
YAML

---
#--------------------------------------------------------------#
# Install keepalived [vip_install]
#--------------------------------------------------------------#
#- name: install keepalived
# tags: [node_vip, vip_install]
# package: name=keepalived state=present
#--------------------------------------------------------------#
# Check VIP config [vip_check]
#--------------------------------------------------------------#
- name: check vip identity
tags: [ node_vip, vip_check ]
assert:
that:
- vip_address is defined and vip_address != ''
- vip_vrid is defined and vip_vrid|int > 0 and vip_vrid|int < 255
- vip_role|upper == 'MASTER' or vip_role|upper == 'BACKUP'
fail_msg: vip_address & vip_vrid is required for keepalived
#--------------------------------------------------------------#
# Config keepalived [vip_config]
#--------------------------------------------------------------#
- name: render node vip conf keepalived.conf
tags: [ node_vip, vip_config, vip_refresh ]
template:
src: keepalived.conf.j2
dest: /etc/keepalived/keepalived.conf
mode: 0644
vars:
# JMESPath query to find all hosts with same vip_address:
# [@.*] - flatten hostvars dict to array, [0] - unwrap outer array, [?...] - filter by vip_address
vip_cluster_members_query: "[@.*][0][?vip_address=='{{ vip_address }}']"
#--------------------------------------------------------------#
# Launch keepalived [vip_launch]
#--------------------------------------------------------------#
- name: launch keepalived service unit
tags: [ node_vip, vip_launch ]
systemd: name=keepalived enabled=true state=restarted
#--------------------------------------------------------------#
# Reload keepalived [vip_reload]
#--------------------------------------------------------------#
- name: reload keepalived service unit
tags: [ node_vip, vip_reload, vip_refresh ]
systemd: name=keepalived enabled=true state=reloaded
...