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

55 lines
2.6 KiB
YAML

---
#--------------------------------------------------------------#
# Register Haproxy Services [pg_service_config]
#--------------------------------------------------------------#
- name: render postgres service config
tags: [ pg_service, pg_service_config ]
block:
# remove service definition with pg_cluster are name prefix
- name: wipe existing postgres service from remote haproxy
when: pg_service_provider != '' and pg_service_provider in groups
shell: "cd /etc/haproxy; rm -rf {{ pg_cluster }}-*.cfg;"
args: { executable: /bin/bash }
delegate_to: "{{ item }}"
loop: "{{ groups[pg_service_provider] if (pg_service_provider != '' and pg_service_provider in groups) else [] }}"
- name: render haproxy service on remote haproxy
when: pg_service_provider != '' and pg_service_provider in groups
template: src=service.cfg dest=/etc/haproxy/{{ service_name }}.cfg owner=root mode=0644
delegate_to: "{{ item[1] }}"
vars:
service: "{{ item[0] }}"
service_name: "{{ pg_cluster }}-{{ item[0].name }}"
pg_cluster_members_query: "[@.*][0][?pg_cluster=='{{ pg_cluster }}']"
with_nested:
- "{{ pg_default_services + pg_services }}"
- "{{ groups[pg_service_provider] if (pg_service_provider != '' and pg_service_provider in groups) else [] }}"
#--------------------------------------------------------------#
# Reload Haproxy [pg_service_reload]
#--------------------------------------------------------------#
# reload when pg_reload is true
- name: reload haproxy to register pgsql services
tags: [ pg_service, pg_service_reload ]
when: pg_reload|bool
block:
# if the check fails on this step, haproxy will not be reloaded
- name: check remote haproxy config before reload
when: pg_service_provider != '' and pg_service_provider in groups
ignore_errors: false
any_errors_fatal: true
command: /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
delegate_to: "{{ item }}"
loop: "{{ groups[pg_service_provider] if (pg_service_provider != '' and pg_service_provider in groups) else [] }}"
# even if you perform haproxy reload on junk config, it will not fail
- name: reload remote haproxy
when: pg_service_provider != '' and pg_service_provider in groups
ignore_errors: false
systemd: name=haproxy state=reloaded enabled=yes daemon_reload=yes
delegate_to: "{{ item }}"
loop: "{{ groups[pg_service_provider] if (pg_service_provider != '' and pg_service_provider in groups) else [] }}"
...