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}')
 |