mirror of https://github.com/Aidaho12/haproxy-wi
parent
b27a160a6a
commit
dbcb5558dc
|
@ -4368,13 +4368,10 @@ def insert_cluster_services(cluster_id: int, service_id: int):
|
|||
out_error(e)
|
||||
|
||||
|
||||
def select_cluster_master_slaves(cluster_id: int, group_id: int):
|
||||
def select_cluster_master_slaves(cluster_id: int, group_id: int, router_id: int):
|
||||
cursor = conn.cursor()
|
||||
sql = f"select * from servers left join ha_clusters on (servers.id = ha_clusters.master_id) " \
|
||||
f"left join ha_cluster_slaves on (servers.id = ha_cluster_slaves.server_id) " \
|
||||
f"left join ha_cluster_virts on (servers.id = ha_cluster_virts.virt_id)" \
|
||||
f"where (servers.groups = {group_id} and " \
|
||||
f"(ha_cluster_slaves.cluster_id = {cluster_id} or ha_clusters.id = {cluster_id} or ha_cluster_virts.cluster_id = {cluster_id}));"
|
||||
sql = f"select * from servers left join ha_cluster_slaves on (servers.id = ha_cluster_slaves.server_id) " \
|
||||
f"where servers.groups = {group_id} and ha_cluster_slaves.cluster_id = {cluster_id} and ha_cluster_slaves.router_id = {router_id};"
|
||||
try:
|
||||
cursor.execute(sql)
|
||||
except Exception as e:
|
||||
|
@ -4385,8 +4382,7 @@ def select_cluster_master_slaves(cluster_id: int, group_id: int):
|
|||
|
||||
def select_cluster_slaves(cluster_id: int, router_id: int):
|
||||
cursor = conn.cursor()
|
||||
sql = f"select * from servers " \
|
||||
f"left join ha_cluster_slaves on (servers.id = ha_cluster_slaves.server_id) " \
|
||||
sql = f"select * from servers left join ha_cluster_slaves on (servers.id = ha_cluster_slaves.server_id) " \
|
||||
f"where ha_cluster_slaves.cluster_id = {cluster_id} and ha_cluster_slaves.router_id = {router_id};"
|
||||
try:
|
||||
cursor.execute(sql)
|
||||
|
|
|
@ -198,13 +198,15 @@ def generate_kp_inv(json_data: json, install_service) -> object:
|
|||
|
||||
for vip in vips:
|
||||
router_id = str(vip.router_id)
|
||||
routers[router_id] = {vip.vip: {}}
|
||||
routers[router_id][vip.vip].setdefault('return_master', vip.return_master)
|
||||
routers[router_id][vip.vip].setdefault('vip', vip.vip)
|
||||
routers[router_id] = {}
|
||||
routers[router_id].setdefault('return_master', vip.return_master)
|
||||
routers[router_id].setdefault('vip', vip.vip)
|
||||
slaves = sql.select_cluster_slaves_for_inv(router_id)
|
||||
for slave in slaves:
|
||||
routers[router_id][vip.vip].setdefault('master', slave.master)
|
||||
routers[router_id][vip.vip].setdefault('eth', slave.eth)
|
||||
slave_ip = sql.select_server_ip_by_id(str(slave.server_id))
|
||||
routers[router_id].setdefault(slave_ip, dict())
|
||||
routers[router_id][slave_ip].setdefault('master', slave.master)
|
||||
routers[router_id][slave_ip].setdefault('eth', slave.eth)
|
||||
|
||||
for k, v in json_data['servers'].items():
|
||||
server_ip = v['ip']
|
||||
|
@ -372,7 +374,10 @@ def run_ansible(inv: object, server_ips: str, ansible_role: str) -> object:
|
|||
except Exception as e:
|
||||
raise Exception(f'error: Cannot save inventory file: {e}')
|
||||
|
||||
try:
|
||||
result = ansible_runner.run(**kwargs)
|
||||
except Exception as e:
|
||||
raise Exception(f'error: Cannot install {ansible_role}: {e}')
|
||||
stats = result.stats
|
||||
|
||||
os.remove(inventory)
|
||||
|
|
|
@ -124,7 +124,8 @@ def show_ha_cluster(service, cluster_id):
|
|||
services = []
|
||||
service = 'keepalived'
|
||||
service_desc = sql.select_service(service)
|
||||
servers = sql.select_cluster_master_slaves(cluster_id, user_params['group_id'])
|
||||
router_id = sql.get_router_id(cluster_id, default_router=1)
|
||||
servers = sql.select_cluster_master_slaves(cluster_id, user_params['group_id'], router_id)
|
||||
waf_server = ''
|
||||
cmd = "ps ax |grep -e 'keep_alive.py' |grep -v grep |wc -l"
|
||||
keep_alive, stderr = server_mod.subprocess_execute(cmd)
|
||||
|
|
|
@ -24,13 +24,18 @@ vrrp_script chk_haproxy {
|
|||
|
||||
|
||||
{% for router, vip in routers.items() %}
|
||||
{% for vrrp, s in vip.items() %}
|
||||
vrrp_instance VI_{{router}} {
|
||||
state {{s.master}}
|
||||
interface {{s.eth}}
|
||||
{% for k, slave in vip.items() %}
|
||||
{% if k == ansible_host and slave is mapping %}
|
||||
|
||||
state {% if slave.master %}MASTER{% else %}BACKUP{%endif%}
|
||||
|
||||
interface {{slave.eth}}
|
||||
priority {% if vip.return_master and slave.master %}152{% elif slave.master and not vip.return_master %}102{% else %}101{%endif%}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
virtual_router_id {{router}}
|
||||
priority {% if s.return_master and s.master %}152{% elif s.master and not s.return_master %}102{% else %}101{%endif%}
|
||||
|
||||
#check if we are still running
|
||||
track_script {
|
||||
|
@ -50,9 +55,8 @@ vrrp_instance VI_{{router}} {
|
|||
auth_pass VerySecretPass
|
||||
}
|
||||
virtual_ipaddress {
|
||||
{{vrrp}}
|
||||
{{vip.vip}}
|
||||
}
|
||||
}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
# Managed by Roxy-WI do not edit this file. Use HA cluster configuration instead
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
- name: populate service facts
|
||||
service_facts:
|
||||
|
||||
|
||||
- name: Creates directorys
|
||||
file:
|
||||
path: "{{ item.path }}"
|
||||
|
@ -46,14 +45,12 @@
|
|||
- service not in ansible_facts.packages
|
||||
- service == "apache"
|
||||
|
||||
|
||||
- name: Set passlib version
|
||||
set_fact:
|
||||
passlib_ver: "python3-passlib"
|
||||
when: ansible_facts['distribution_major_version'] == '8' or (ansible_facts['os_family'] == 'Debian' or ansible_facts['os_family'] == 'Ubuntu')
|
||||
ignore_errors: True
|
||||
|
||||
|
||||
- name: Set passlib version
|
||||
set_fact:
|
||||
passlib_ver: "python-passlib"
|
||||
|
@ -66,9 +63,8 @@
|
|||
when: ansible_facts['distribution_major_version'] == '9'
|
||||
ignore_errors: True
|
||||
|
||||
|
||||
- name: Install passlib
|
||||
package:
|
||||
ansible.builtin.package:
|
||||
name: "{{passlib_ver}}"
|
||||
state: present
|
||||
when:
|
||||
|
|
Loading…
Reference in New Issue