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