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:
 | 
			
		||||
		try:
 | 
			
		||||
			cursor.execute(i)
 | 
			
		||||
		except Exception as e:
 | 
			
		||||
		except Exception:
 | 
			
		||||
			pass
 | 
			
		||||
	else:
 | 
			
		||||
		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 = ''
 | 
			
		||||
        if sql.check_exists_backup(serv):
 | 
			
		||||
            print(f'warning: Backup job for {serv} already exists')
 | 
			
		||||
            sys.exit()
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
    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}'"]
 | 
			
		||||
	elif service_name == 'apache_exporter':
 | 
			
		||||
		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)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -78,11 +78,11 @@ def nginx_apache_exp_installation():
 | 
			
		|||
    os.remove(script)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def node_exp_installation():
 | 
			
		||||
    serv = common.is_ip_or_dns(form.getvalue('node_exp_install'))
 | 
			
		||||
def node_keepalived_exp_installation(service: str) -> None:
 | 
			
		||||
    serv = common.is_ip_or_dns(form.getvalue(f'{service}_exp_install'))
 | 
			
		||||
    ver = common.checkAjaxInput(form.getvalue('exporter_v'))
 | 
			
		||||
    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_serv = ''
 | 
			
		||||
    ssh_settings = return_ssh_keys_path(serv)
 | 
			
		||||
| 
						 | 
				
			
			@ -93,7 +93,7 @@ def node_exp_installation():
 | 
			
		|||
        proxy_serv = proxy
 | 
			
		||||
 | 
			
		||||
    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']}"
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -419,7 +419,14 @@ if form.getvalue('nginx_exp_install') or form.getvalue('apache_exp_install'):
 | 
			
		|||
if form.getvalue('node_exp_install'):
 | 
			
		||||
    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'):
 | 
			
		||||
    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>
 | 
			
		||||
        </tr>
 | 
			
		||||
    </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">
 | 
			
		||||
        <caption><h3>Install Node Exporter</h3></caption>
 | 
			
		||||
        <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() {
 | 
			
		||||
		$("#ajaxmon").html('')
 | 
			
		||||
		$("#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() {
 | 
			
		||||
		$.ajax( {
 | 
			
		||||
			url: "options.py",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue