mirror of https://github.com/Aidaho12/haproxy-wi
parent
5b1230e96f
commit
7e3dd0c56c
|
@ -976,7 +976,7 @@ def update_db_v_6_3_4():
|
||||||
for i in sql:
|
for i in sql:
|
||||||
try:
|
try:
|
||||||
cursor.execute(i)
|
cursor.execute(i)
|
||||||
except Exception as e:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
print('Updating... DB has been updated to version 6.3.4.0')
|
print('Updating... DB has been updated to version 6.3.4.0')
|
||||||
|
|
|
@ -22,7 +22,7 @@ def backup(serv, rpath, time, backup_type, rserver, cred, deljob, update, descri
|
||||||
deljob = ''
|
deljob = ''
|
||||||
if sql.check_exists_backup(serv):
|
if sql.check_exists_backup(serv):
|
||||||
print(f'warning: Backup job for {serv} already exists')
|
print(f'warning: Backup job for {serv} already exists')
|
||||||
sys.exit()
|
return None
|
||||||
|
|
||||||
os.system(f"cp scripts/{script} .")
|
os.system(f"cp scripts/{script} .")
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,8 @@ def get_exp_version(server_ip: str, service_name: str) -> str:
|
||||||
commands = ["node_exporter --version 2>&1 |head -1|awk '{print $3}'"]
|
commands = ["node_exporter --version 2>&1 |head -1|awk '{print $3}'"]
|
||||||
elif service_name == 'apache_exporter':
|
elif service_name == 'apache_exporter':
|
||||||
commands = ["/opt/prometheus/exporters/apache_exporter --version 2>&1 |head -1|awk '{print $3}'"]
|
commands = ["/opt/prometheus/exporters/apache_exporter --version 2>&1 |head -1|awk '{print $3}'"]
|
||||||
|
elif service_name == 'keepalived_exporter':
|
||||||
|
commands = ["systemctl list-units --full -all |grep keepalived_exporter"]
|
||||||
|
|
||||||
ver = server_mod.ssh_command(server_ip, commands)
|
ver = server_mod.ssh_command(server_ip, commands)
|
||||||
|
|
||||||
|
|
|
@ -78,11 +78,11 @@ def nginx_apache_exp_installation():
|
||||||
os.remove(script)
|
os.remove(script)
|
||||||
|
|
||||||
|
|
||||||
def node_exp_installation():
|
def node_keepalived_exp_installation(service: str) -> None:
|
||||||
serv = common.is_ip_or_dns(form.getvalue('node_exp_install'))
|
serv = common.is_ip_or_dns(form.getvalue(f'{service}_exp_install'))
|
||||||
ver = common.checkAjaxInput(form.getvalue('exporter_v'))
|
ver = common.checkAjaxInput(form.getvalue('exporter_v'))
|
||||||
ext_prom = common.checkAjaxInput(form.getvalue('ext_prom'))
|
ext_prom = common.checkAjaxInput(form.getvalue('ext_prom'))
|
||||||
script = "install_node_exporter.sh"
|
script = f"install_{service}_exporter.sh"
|
||||||
proxy = sql.get_setting('proxy')
|
proxy = sql.get_setting('proxy')
|
||||||
proxy_serv = ''
|
proxy_serv = ''
|
||||||
ssh_settings = return_ssh_keys_path(serv)
|
ssh_settings = return_ssh_keys_path(serv)
|
||||||
|
@ -93,7 +93,7 @@ def node_exp_installation():
|
||||||
proxy_serv = proxy
|
proxy_serv = proxy
|
||||||
|
|
||||||
commands = [
|
commands = [
|
||||||
f"chmod +x {script} && ./{script} PROXY={proxy_serv} SSH_PORT={ssh_settings['port']} VER={ver} EXP_PROM={ext_prom} "
|
f"chmod +x {script} && ./{script} PROXY={proxy_serv} SSH_PORT={ssh_settings['port']} VER={ver} EXP_PROM={ext_prom} "
|
||||||
f"HOST={serv} USER={ssh_settings['user']} PASS='{ssh_settings['password']}' KEY={ssh_settings['key']}"
|
f"HOST={serv} USER={ssh_settings['user']} PASS='{ssh_settings['password']}' KEY={ssh_settings['key']}"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -419,7 +419,14 @@ if form.getvalue('nginx_exp_install') or form.getvalue('apache_exp_install'):
|
||||||
if form.getvalue('node_exp_install'):
|
if form.getvalue('node_exp_install'):
|
||||||
import modules.service.exporter_installation as exp_installation
|
import modules.service.exporter_installation as exp_installation
|
||||||
|
|
||||||
exp_installation.node_exp_installation()
|
service = 'node'
|
||||||
|
exp_installation.node_keepalived_exp_installation(service)
|
||||||
|
|
||||||
|
if form.getvalue('keepalived_exp_install'):
|
||||||
|
import modules.service.exporter_installation as exp_installation
|
||||||
|
|
||||||
|
service = 'keepalived'
|
||||||
|
exp_installation.node_keepalived_exp_installation(service)
|
||||||
|
|
||||||
if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupupdate'):
|
if form.getvalue('backup') or form.getvalue('deljob') or form.getvalue('backupupdate'):
|
||||||
import modules.service.backup as backup_mod
|
import modules.service.backup as backup_mod
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
- hosts: "{{ variable_host }}"
|
||||||
|
become: yes
|
||||||
|
become_method: sudo
|
||||||
|
tasks:
|
||||||
|
- name: Set SSH port
|
||||||
|
set_fact:
|
||||||
|
ansible_port: "{{SSH_PORT}}"
|
||||||
|
|
||||||
|
- name: Open stat port for iptables
|
||||||
|
iptables:
|
||||||
|
chain: INPUT
|
||||||
|
destination_port: "9650"
|
||||||
|
jump: ACCEPT
|
||||||
|
protocol: tcp
|
||||||
|
ignore_errors: yes
|
||||||
|
|
||||||
|
roles:
|
||||||
|
- role: keepalived_exporter
|
||||||
|
environment:
|
||||||
|
http_proxy: "{{PROXY}}"
|
||||||
|
https_proxy: "{{PROXY}}"
|
|
@ -0,0 +1,12 @@
|
||||||
|
---
|
||||||
|
keepalived_exporter_version: 0.3.0
|
||||||
|
keepalived_exporter_binary_local_dir: ""
|
||||||
|
keepalived_exporter_web_listen_address: "0.0.0.0:9650"
|
||||||
|
|
||||||
|
keepalived_exporter_enabled_collectors: []
|
||||||
|
keepalived_exporter_disabled_collectors: []
|
||||||
|
|
||||||
|
keepalived_exporter_binary_install_dir: "/usr/local/bin"
|
||||||
|
keepalived_exporter_system_group: "keepalived-exp"
|
||||||
|
keepalived_exporter_system_user: "{{ keepalived_exporter_system_group }}"
|
||||||
|
keepalived_exporter_create_usergroup: true
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
- name: restart keepalived_exporter
|
||||||
|
become: true
|
||||||
|
systemd:
|
||||||
|
daemon_reload: true
|
||||||
|
name: keepalived_exporter
|
||||||
|
state: restarted
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
- name: Copy the Keepalived Exporter systemd service file
|
||||||
|
template:
|
||||||
|
src: keepalived_exporter.service.j2
|
||||||
|
dest: /etc/systemd/system/keepalived_exporter.service
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
notify: restart keepalived_exporter
|
||||||
|
|
||||||
|
- name: Allow Keepalived Exporter port in SELinux on RedHat OS family
|
||||||
|
seport:
|
||||||
|
ports: "{{ keepalived_exporter_web_listen_address.split(':')[-1] }}"
|
||||||
|
proto: tcp
|
||||||
|
setype: http_port_t
|
||||||
|
state: present
|
||||||
|
when:
|
||||||
|
- ansible_version.full is version_compare('2.4', '>=')
|
||||||
|
- ansible_selinux.status == "enabled"
|
|
@ -0,0 +1,69 @@
|
||||||
|
---
|
||||||
|
- name: Create the keepalived_exporter group
|
||||||
|
group:
|
||||||
|
name: "{{ keepalived_exporter_system_group }}"
|
||||||
|
state: present
|
||||||
|
system: true
|
||||||
|
when:
|
||||||
|
- keepalived_exporter_system_group != "root"
|
||||||
|
- keepalived_exporter_create_usergroup
|
||||||
|
|
||||||
|
- name: Create the keepalived_exporter user
|
||||||
|
user:
|
||||||
|
name: "{{ keepalived_exporter_system_user }}"
|
||||||
|
groups: "{{ keepalived_exporter_system_group }}"
|
||||||
|
append: true
|
||||||
|
shell: /usr/sbin/nologin
|
||||||
|
system: true
|
||||||
|
create_home: false
|
||||||
|
home: /
|
||||||
|
when:
|
||||||
|
- keepalived_exporter_system_user != "root"
|
||||||
|
- keepalived_exporter_create_usergroup
|
||||||
|
|
||||||
|
- name: Download keepalived_exporter from localhost
|
||||||
|
block:
|
||||||
|
- name: Download keepalived_exporter binary to local folder
|
||||||
|
become: false
|
||||||
|
get_url:
|
||||||
|
url: "https://github.com/gen2brain/keepalived_exporter/releases/download/{{ keepalived_exporter_version }}/keepalived_exporter-{{ keepalived_exporter_version }}-{{ go_arch }}.tar.gz"
|
||||||
|
dest: "/tmp/keepalived_exporter-{{ keepalived_exporter_version }}-{{ go_arch }}.tar.gz"
|
||||||
|
#checksum: "sha256:{{ keepalived_exporter_checksum }}"
|
||||||
|
register: _download_binary
|
||||||
|
until: _download_binary is succeeded
|
||||||
|
retries: 5
|
||||||
|
delay: 2
|
||||||
|
delegate_to: localhost
|
||||||
|
check_mode: false
|
||||||
|
|
||||||
|
- name: Unpack keepalived_exporter binary
|
||||||
|
become: false
|
||||||
|
unarchive:
|
||||||
|
src: "/tmp/keepalived_exporter-{{ keepalived_exporter_version }}-{{ go_arch }}.tar.gz"
|
||||||
|
dest: "/tmp"
|
||||||
|
creates: "/tmp/keepalived_exporter-{{ keepalived_exporter_version }}-{{ go_arch }}/keepalived_exporter"
|
||||||
|
remote_src: true
|
||||||
|
delegate_to: localhost
|
||||||
|
check_mode: false
|
||||||
|
|
||||||
|
- name: Propagate keepalived_exporter binaries
|
||||||
|
copy:
|
||||||
|
src: "/tmp/keepalived_exporter-{{ keepalived_exporter_version }}-{{ go_arch }}/keepalived_exporter"
|
||||||
|
dest: "{{ keepalived_exporter_binary_install_dir }}/keepalived_exporter"
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
remote_src: true
|
||||||
|
notify: restart keepalived_exporter
|
||||||
|
when: not ansible_check_mode
|
||||||
|
when: keepalived_exporter_binary_local_dir | length == 0
|
||||||
|
|
||||||
|
- name: propagate locally distributed keepalived_exporter binary
|
||||||
|
copy:
|
||||||
|
src: "{{ keepalived_exporter_binary_local_dir }}/keepalived_exporter"
|
||||||
|
dest: "{{ keepalived_exporter_binary_install_dir }}/keepalived_exporter"
|
||||||
|
mode: 0755
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
when: keepalived_exporter_binary_local_dir | length > 0
|
||||||
|
notify: restart keepalived_exporter
|
|
@ -0,0 +1,33 @@
|
||||||
|
---
|
||||||
|
- import_tasks: preflight.yml
|
||||||
|
tags:
|
||||||
|
- keepalived_exporter_install
|
||||||
|
- keepalived_exporter_configure
|
||||||
|
- keepalived_exporter_run
|
||||||
|
|
||||||
|
- import_tasks: install.yml
|
||||||
|
become: true
|
||||||
|
when: (not __keepalived_exporter_is_installed.stat.exists) or (__keepalived_exporter_current_version_output.stderr_lines[0].split(" ")[2] != keepalived_exporter_version)
|
||||||
|
tags:
|
||||||
|
- keepalived_exporter_install
|
||||||
|
|
||||||
|
- import_tasks: selinux.yml
|
||||||
|
become: true
|
||||||
|
when: ansible_selinux.status == "enabled"
|
||||||
|
tags:
|
||||||
|
- keepalived_exporter_configure
|
||||||
|
|
||||||
|
- import_tasks: configure.yml
|
||||||
|
become: true
|
||||||
|
tags:
|
||||||
|
- keepalived_exporter_configure
|
||||||
|
|
||||||
|
- name: Ensure Keepalived Exporter is enabled on boot
|
||||||
|
become: true
|
||||||
|
systemd:
|
||||||
|
daemon_reload: true
|
||||||
|
name: keepalived_exporter
|
||||||
|
enabled: true
|
||||||
|
state: started
|
||||||
|
tags:
|
||||||
|
- keepalived_exporter_run
|
|
@ -0,0 +1,88 @@
|
||||||
|
---
|
||||||
|
- name: Assert usage of systemd as an init system
|
||||||
|
assert:
|
||||||
|
that: ansible_service_mgr == 'systemd'
|
||||||
|
msg: "This role only works with systemd"
|
||||||
|
|
||||||
|
- name: Get systemd version
|
||||||
|
command: systemctl --version
|
||||||
|
changed_when: false
|
||||||
|
check_mode: false
|
||||||
|
register: __systemd_version
|
||||||
|
tags:
|
||||||
|
- skip_ansible_lint
|
||||||
|
|
||||||
|
- name: Set systemd version fact
|
||||||
|
set_fact:
|
||||||
|
keepalived_exporter_systemd_version: "{{ __systemd_version.stdout_lines[0] | regex_replace('^systemd\\s(\\d+).*$', '\\1') }}"
|
||||||
|
|
||||||
|
- name: Naive assertion of proper listen address
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "':' in keepalived_exporter_web_listen_address"
|
||||||
|
|
||||||
|
- name: Assert collectors are not both disabled and enabled at the same time
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- "item not in keepalived_exporter_enabled_collectors"
|
||||||
|
with_items: "{{ keepalived_exporter_disabled_collectors }}"
|
||||||
|
|
||||||
|
- name: Check if keepalived_exporter is installed
|
||||||
|
stat:
|
||||||
|
path: "{{ keepalived_exporter_binary_install_dir }}/keepalived_exporter"
|
||||||
|
register: __keepalived_exporter_is_installed
|
||||||
|
check_mode: false
|
||||||
|
tags:
|
||||||
|
- keepalived_exporter_install
|
||||||
|
|
||||||
|
- name: Gather currently installed keepalived_exporter version (if any)
|
||||||
|
command: "{{ keepalived_exporter_binary_install_dir }}/keepalived_exporter --version"
|
||||||
|
args:
|
||||||
|
warn: false
|
||||||
|
changed_when: false
|
||||||
|
register: __keepalived_exporter_current_version_output
|
||||||
|
check_mode: false
|
||||||
|
when: __keepalived_exporter_is_installed.stat.exists
|
||||||
|
tags:
|
||||||
|
- keepalived_exporter_install
|
||||||
|
- skip_ansible_lint
|
||||||
|
|
||||||
|
- name: Get latest release version
|
||||||
|
block:
|
||||||
|
- name: Get latest release
|
||||||
|
uri:
|
||||||
|
url: "https://api.github.com/repos/gen2brain/keepalived_exporter/releases/latest"
|
||||||
|
method: GET
|
||||||
|
return_content: true
|
||||||
|
status_code: 200
|
||||||
|
body_format: json
|
||||||
|
validate_certs: false
|
||||||
|
user: "{{ lookup('env', 'GH_USER') | default(omit) }}"
|
||||||
|
password: "{{ lookup('env', 'GH_TOKEN') | default(omit) }}"
|
||||||
|
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
||||||
|
register: _latest_release
|
||||||
|
until: _latest_release.status == 200
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
- name: "Set keepalived_exporter version to {{ _latest_release.json.tag_name[1:] }}"
|
||||||
|
set_fact:
|
||||||
|
keepalived_exporter_version: "{{ _latest_release.json.tag_name[1:] }}"
|
||||||
|
when:
|
||||||
|
- keepalived_exporter_version == "latest"
|
||||||
|
- keepalived_exporter_binary_local_dir | length == 0
|
||||||
|
delegate_to: localhost
|
||||||
|
run_once: true
|
||||||
|
#- name: Get checksum list from github according to version
|
||||||
|
# block:
|
||||||
|
# - name: Get checksum list from github
|
||||||
|
# set_fact:
|
||||||
|
# _checksums: "{{ lookup('url', 'https://github.com/gen2brain/keepalived_exporter/releases/download/v' + keepalived_exporter_version + '/keepalived_exporter_0.3.0_checksums.txt', wantlist=True) | list }}"
|
||||||
|
# run_once: true
|
||||||
|
#
|
||||||
|
# - name: "Get checksum for {{ go_arch }} architecture"
|
||||||
|
# set_fact:
|
||||||
|
# keepalived_exporter_checksum: "{{ item.split(' ')[0] }}"
|
||||||
|
# with_items: "{{ _checksums }}"
|
||||||
|
# when:
|
||||||
|
# - "('linux-' + go_arch + '.tar.gz') in item"
|
||||||
|
# when: keepalived_exporter_binary_local_dir | length == 0
|
|
@ -0,0 +1,38 @@
|
||||||
|
---
|
||||||
|
- name: Install selinux python packages [RHEL]
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- "{{ ( (ansible_facts.distribution_major_version | int) < 8) | ternary('libselinux-python','python3-libselinux') }}"
|
||||||
|
- "{{ ( (ansible_facts.distribution_major_version | int) < 8) | ternary('libselinux-python','python3-policycoreutils') }}"
|
||||||
|
state: present
|
||||||
|
register: _install_selinux_packages
|
||||||
|
until: _install_selinux_packages is success
|
||||||
|
retries: 5
|
||||||
|
delay: 2
|
||||||
|
when:
|
||||||
|
- (ansible_distribution | lower == "redhat") or
|
||||||
|
(ansible_distribution | lower == "centos")
|
||||||
|
|
||||||
|
- name: Install selinux python packages [Fedora]
|
||||||
|
package:
|
||||||
|
name:
|
||||||
|
- "{{ ( (ansible_facts.distribution_major_version | int) < 29) | ternary('libselinux-python','python3-libselinux') }}"
|
||||||
|
- "{{ ( (ansible_facts.distribution_major_version | int) < 29) | ternary('libselinux-python','python3-policycoreutils') }}"
|
||||||
|
state: present
|
||||||
|
register: _install_selinux_packages
|
||||||
|
until: _install_selinux_packages is success
|
||||||
|
retries: 5
|
||||||
|
delay: 2
|
||||||
|
when:
|
||||||
|
- ansible_distribution | lower == "fedora"
|
||||||
|
|
||||||
|
- name: Install selinux python packages [clearlinux]
|
||||||
|
package:
|
||||||
|
name: sysadmin-basic
|
||||||
|
state: present
|
||||||
|
register: _install_selinux_packages
|
||||||
|
until: _install_selinux_packages is success
|
||||||
|
retries: 5
|
||||||
|
delay: 2
|
||||||
|
when:
|
||||||
|
- ansible_distribution | lower == "clearlinux"
|
|
@ -0,0 +1,51 @@
|
||||||
|
{{ ansible_managed | comment }}
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=Prometheus Keepalived Exporter
|
||||||
|
After=network-online.target
|
||||||
|
#StartLimitInterval=0
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
#User={{ keepalived_exporter_system_user }}
|
||||||
|
#Group={{ keepalived_exporter_system_group }}
|
||||||
|
ExecStart={{ keepalived_exporter_binary_install_dir }}/keepalived_exporter \
|
||||||
|
{% for collector in keepalived_exporter_enabled_collectors -%}
|
||||||
|
{% if not collector is mapping %}
|
||||||
|
--collector.{{ collector }} \
|
||||||
|
{% else -%}
|
||||||
|
{% set name, options = (collector.items()|list)[0] -%}
|
||||||
|
--collector.{{ name }} \
|
||||||
|
{% for k,v in options|dictsort %}
|
||||||
|
--collector.{{ name }}.{{ k }}={{ v }} \
|
||||||
|
{% endfor -%}
|
||||||
|
{% endif -%}
|
||||||
|
{% endfor -%}
|
||||||
|
{% for collector in keepalived_exporter_disabled_collectors %}
|
||||||
|
--no-collector.{{ collector }} \
|
||||||
|
{% endfor %}
|
||||||
|
--web.listen-address={{ keepalived_exporter_web_listen_address }}
|
||||||
|
|
||||||
|
SyslogIdentifier=keepalived_exporter
|
||||||
|
Restart=always
|
||||||
|
RestartSec=1
|
||||||
|
|
||||||
|
#PrivateTmp=yes
|
||||||
|
{% for m in ansible_mounts if m.mount == '/home' %}
|
||||||
|
#ProtectHome=read-only
|
||||||
|
{% else %}
|
||||||
|
#ProtectHome=yes
|
||||||
|
{% endfor %}
|
||||||
|
#NoNewPrivileges=yes
|
||||||
|
|
||||||
|
{% if keepalived_exporter_systemd_version | int >= 232 %}
|
||||||
|
ProtectSystem=strict
|
||||||
|
ProtectControlGroups=true
|
||||||
|
ProtectKernelModules=true
|
||||||
|
ProtectKernelTunables=yes
|
||||||
|
{% else %}
|
||||||
|
ProtectSystem=full
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
go_arch_map:
|
||||||
|
x86_64: "amd64"
|
||||||
|
|
||||||
|
go_arch: "{{ go_arch_map[ansible_architecture] | default(ansible_architecture) }}"
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/bin/bash
|
||||||
|
for ARGUMENT in "$@"
|
||||||
|
do
|
||||||
|
KEY=$(echo $ARGUMENT | cut -f1 -d=)
|
||||||
|
VALUE=$(echo $ARGUMENT | cut -f2 -d=)
|
||||||
|
|
||||||
|
case "$KEY" in
|
||||||
|
PROXY) PROXY=${VALUE} ;;
|
||||||
|
HOST) HOST=${VALUE} ;;
|
||||||
|
USER) USER=${VALUE} ;;
|
||||||
|
PASS) PASS=${VALUE} ;;
|
||||||
|
KEY) KEY=${VALUE} ;;
|
||||||
|
VER) VER=${VALUE} ;;
|
||||||
|
EXP_PROM) EXP_PROM=${VALUE} ;;
|
||||||
|
SSH_PORT) SSH_PORT=${VALUE} ;;
|
||||||
|
*)
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
export ANSIBLE_HOST_KEY_CHECKING=False
|
||||||
|
export ANSIBLE_DISPLAY_SKIPPED_HOSTS=False
|
||||||
|
export ACTION_WARNINGS=False
|
||||||
|
export LOCALHOST_WARNING=False
|
||||||
|
export COMMAND_WARNINGS=False
|
||||||
|
|
||||||
|
PWD=`pwd`
|
||||||
|
PWD=$PWD/scripts/ansible/
|
||||||
|
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
||||||
|
|
||||||
|
if [[ $KEY == "" ]]; then
|
||||||
|
ansible-playbook $PWD/roles/keepalived_exporter.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST PROXY=$PROXY SSH_PORT=$SSH_PORT keepalived_exporter_version=$VER" -i $PWD/$HOST
|
||||||
|
else
|
||||||
|
ansible-playbook $PWD/roles/keepalived_exporter.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY SSH_PORT=$SSH_PORT keepalived_exporter_version=$VER" -i $PWD/$HOST
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $? -gt 0 ]
|
||||||
|
then
|
||||||
|
echo "error: Can't install Keepalived exporter <br /><br />"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ "$EXP_PROM" == 0 ]
|
||||||
|
then
|
||||||
|
if ! sudo grep -Fxq " - $HOST:9650" /etc/prometheus/prometheus.yml; then
|
||||||
|
sudo echo " - $HOST:9650" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
||||||
|
sudo systemctl reload prometheus 2>> /dev/null
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f $PWD/$HOST
|
|
@ -133,6 +133,37 @@
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
<table id="keepalived-table">
|
||||||
|
<caption><h3>Install Keepalived Exporter</h3></caption>
|
||||||
|
<tr class="overviewHead">
|
||||||
|
<td class="padding10 first-collumn" style="width: 20%;">Current installation</td>
|
||||||
|
<td class="padding10 first-collumn" style="width: 30%;">Available Versions</td>
|
||||||
|
<td class="padding10 first-collumn" style="width: 30%;">Server</td>
|
||||||
|
<td class="help_cursor" style="width: 20%;" title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter">External Prometheus</td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td id="cur_keepalived_exp_ver" class="padding10 first-collumn"></td>
|
||||||
|
<td class="padding10 first-collumn" style="width: 20%;">
|
||||||
|
{% set values = dict() %}
|
||||||
|
{% set values = {'0.1.0':'0.1.0', '0.2.0':'0.2.0', '0.3.0':'0.3.0', '0.4.0':'0.4.0', '0.5.0':'0.5.0'} %}
|
||||||
|
{{ select('keepalivedexpver', values=values, selected='0.5.0') }}
|
||||||
|
</td>
|
||||||
|
<td class="padding10 first-collumn">
|
||||||
|
<select autofocus required name="keepalived_exp_addserv" id="keepalived_exp_addserv">
|
||||||
|
<option disabled selected>------</option>
|
||||||
|
{% for select in servers %}
|
||||||
|
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="padding-left: 50px;">{{ checkbox('keepalived_ext_prom', title="This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter") }}</td>
|
||||||
|
<td>
|
||||||
|
<span class="ui-button ui-widget ui-corner-all" id="keepalived_exp_install" title="Install Keepalived Exporter">Install</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
<table style="margin-top: 20px" id="node-table">
|
<table style="margin-top: 20px" id="node-table">
|
||||||
<caption><h3>Install Node Exporter</h3></caption>
|
<caption><h3>Install Node Exporter</h3></caption>
|
||||||
<tr class="overviewHead">
|
<tr class="overviewHead">
|
||||||
|
|
61
inc/users.js
61
inc/users.js
|
@ -196,6 +196,43 @@ $( function() {
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
});
|
});
|
||||||
|
$('#keepalived_exp_install').click(function() {
|
||||||
|
$("#ajaxmon").html('')
|
||||||
|
$("#ajaxmon").html(wait_mess);
|
||||||
|
var ext_prom = 0;
|
||||||
|
if ($('#keepalived_ext_prom').is(':checked')) {
|
||||||
|
ext_prom = '1';
|
||||||
|
}
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
keepalived_exp_install: $('#keepalived_exp_addserv').val(),
|
||||||
|
exporter_v: $('#keepalivedexpver').val(),
|
||||||
|
ext_prom: ext_prom,
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g,' ');
|
||||||
|
$("#ajaxmon").html('');
|
||||||
|
if (data.indexOf('error:') != '-1' || data.indexOf('FAILED') != '-1' || data.indexOf('UNREACHABLE') != '-1') {
|
||||||
|
var p_err = show_pretty_ansible_error(data);
|
||||||
|
toastr.error(p_err);
|
||||||
|
} else if (data.indexOf('success') != '-1' ){
|
||||||
|
toastr.clear();
|
||||||
|
toastr.success(data);
|
||||||
|
$('#cur_keepalived_exp_ver').text('Keepalived exporter is installed');
|
||||||
|
$("#keepalived_exp_addserv").trigger( "selectmenuchange" );
|
||||||
|
} else if (data.indexOf('Info') != '-1' ){
|
||||||
|
toastr.clear();
|
||||||
|
toastr.info(data);
|
||||||
|
} else {
|
||||||
|
toastr.clear();
|
||||||
|
toastr.info(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
});
|
||||||
$('#node_exp_install').click(function() {
|
$('#node_exp_install').click(function() {
|
||||||
$("#ajaxmon").html('')
|
$("#ajaxmon").html('')
|
||||||
$("#ajaxmon").html(wait_mess);
|
$("#ajaxmon").html(wait_mess);
|
||||||
|
@ -308,6 +345,30 @@ $( function() {
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
});
|
});
|
||||||
|
$( "#keepalived_exp_addserv" ).on('selectmenuchange',function() {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
get_exporter_v: 'keepalived_exporter',
|
||||||
|
serv: $('#keepalived_exp_addserv option:selected').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/^\s+|\s+$/g,'');
|
||||||
|
if (data.indexOf('error:') != '-1') {
|
||||||
|
toastr.clear();
|
||||||
|
toastr.error(data);
|
||||||
|
} else if (data.indexOf('keepalived_exporter.service') != '-1') {
|
||||||
|
$('#cur_keepalived_exp_ver').text('Keepalived exporter has been installed');
|
||||||
|
} else if(data == 'no' || data == '' || data.indexOf('No') != '-1') {
|
||||||
|
$('#cur_keepalived_exp_ver').text('Keepalived exporter has not been installed');
|
||||||
|
} else {
|
||||||
|
$('#cur_keepalived_exp_ver').text(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
});
|
||||||
$( "#node_exp_addserv" ).on('selectmenuchange',function() {
|
$( "#node_exp_addserv" ).on('selectmenuchange',function() {
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
|
|
Loading…
Reference in New Issue