Fix install HA cluster
pull/375/head
Aidaho 2023-12-27 10:59:43 +03:00
parent b27a160a6a
commit dbcb5558dc
5 changed files with 28 additions and 26 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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: