mirror of https://github.com/Aidaho12/haproxy-wi
38 lines
1.7 KiB
Python
38 lines
1.7 KiB
Python
import os
|
|
|
|
import app.modules.db.sql as sql
|
|
from app.modules.service.installation import run_ansible
|
|
|
|
|
|
def generate_exporter_inc(server_ip: str, ext_prom: int, ver: str, exporter: str) -> object:
|
|
inv = {"server": {"hosts": {}}}
|
|
server_ips = [server_ip]
|
|
inv['server']['hosts'][server_ip] = {
|
|
'EXP_PROM': ext_prom,
|
|
f'{exporter}_exporter_version': ver,
|
|
'service': f'{exporter} exporter'
|
|
}
|
|
|
|
if exporter in ('haproxy', 'nginx', 'apache'):
|
|
inv['server']['hosts'][server_ip]['STAT_PORT'] = sql.get_setting(f'{exporter}_stats_port')
|
|
inv['server']['hosts'][server_ip]['STATS_USER'] = sql.get_setting(f'{exporter}_stats_user')
|
|
inv['server']['hosts'][server_ip]['STATS_PASS'] = sql.get_setting(f'{exporter}_stats_password')
|
|
inv['server']['hosts'][server_ip]['STAT_PAGE'] = sql.get_setting(f'{exporter}_stats_page')
|
|
|
|
if not os.path.isdir('/var/www/haproxy-wi/app/scripts/ansible/roles/bdellegrazie.ansible-role-prometheus_exporter'):
|
|
os.system('ansible-galaxy install bdellegrazie.ansible-role-prometheus_exporter --roles-path /var/www/haproxy-wi/app/scripts/ansible/roles/')
|
|
|
|
if exporter == 'haproxy':
|
|
inv['server']['hosts'][server_ip]['STAT_FILE'] = sql.get_setting('server_state_file')
|
|
|
|
return inv, server_ips
|
|
|
|
|
|
def install_exporter(server_ip: str, ver: str, ext_prom: int, exporter: str) -> object:
|
|
service = f'{exporter.title()} exporter'
|
|
try:
|
|
inv, server_ips = generate_exporter_inc(server_ip, ext_prom, ver, exporter)
|
|
return run_ansible(inv, server_ips, f'{exporter}_exporter'), 201
|
|
except Exception as e:
|
|
raise Exception(f'error: Cannot install {service}: {e}')
|