exporters reorganization

This commit is contained in:
tom.chivert 2023-07-20 15:40:35 +02:00
parent f733ab6d2c
commit 78decc8f50
21 changed files with 135 additions and 145 deletions

View File

@ -1,130 +0,0 @@
---
# to build prometheus repo for another var: https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#when-should-i-use-also-how-to-interpolate-variables-or-dynamic-variable-names
- set_fact:
prometheus_repo: "{{ lookup('vars', 'prometheus_repo_' ~ exporter) }}"
#- name: debug
# debug:
# msg: "Repo: {{ prometheus_repo }}"
- name: '{{ exporter }} exporter | check if exporter is already install'
stat:
path: /usr/local/bin/prometheus-{{ exporter }}-exporter
register: stat_result
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | stop old version'
systemd:
name: prometheus-{{ exporter }}-exporter.service
state: stopped
when: exporter_upgrade == "yes"
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | remove old version'
file:
path: /usr/local/bin/prometheus-{{ exporter }}-exporter
state: absent
when: exporter_upgrade == "yes"
tags: [ 'prometheus_{{ exporter }}' ]
# If prometheus_exporters_sources == "repo"
- name: '{{ exporter }} exporter | download from repo'
get_url:
url: "{{prometheus_exporters_repo}}/releases/download/{{prometheus_exporters_release}}/{{exporter}}_exporter"
dest: /usr/local/bin/prometheus-{{ exporter }}-exporter
remote_src: yes
owner: root
group: root
mode: 0755
ignore_errors: '{{ ansible_check_mode }}'
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "repo"
tags: [ 'prometheus_{{ exporter }}' ]
# If prometheus_exporters_sources == "origin"
- name: '{{ exporter }} exporter | create temp path'
file:
state: directory
path: /tmp/prometheus_exporter/{{ exporter }}
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "origin"
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | get latest release from GitHub'
shell: curl --silent "https://api.github.com/repos/{{ prometheus_repo }}/{{ exporter }}_exporter/releases/latest" | jq -r .tag_name | sed "s/v//"
register: prometheus_exporter_latest_version
run_once: true
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "origin"
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | download from origin'
get_url:
url: "https://github.com/{{ prometheus_repo }}/{{ exporter }}_exporter/releases/download/v{{ prometheus_exporter_latest_version.stdout }}/{{ exporter }}_exporter-{{ prometheus_exporter_latest_version.stdout }}.{{ prometheus_os }}-{{ prometheus_arch }}.tar.gz"
dest: /tmp/prometheus_exporter/{{ exporter }}/
ignore_errors: '{{ ansible_check_mode }}'
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "origin"
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | unarchive'
unarchive:
remote_src: yes
src: /tmp/prometheus_exporter/{{ exporter }}/{{ exporter }}_exporter-{{ prometheus_exporter_latest_version.stdout }}.{{ prometheus_os }}-{{ prometheus_arch }}.tar.gz
dest: /tmp/prometheus_exporter/{{ exporter }}/
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "origin"
ignore_errors: '{{ ansible_check_mode }}'
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | move to /usr/local/bin'
copy:
src: /tmp/prometheus_exporter/{{ exporter }}/{{ exporter }}_exporter-{{ prometheus_exporter_latest_version.stdout }}.{{ prometheus_os }}-{{ prometheus_arch }}/{{ exporter }}_exporter
dest: /usr/local/bin/prometheus-{{ exporter }}-exporter
remote_src: yes
owner: root
group: root
mode: 0755
notify:
- '{{ exporter }}-exporter-restart'
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "origin"
tags: [ 'prometheus_{{ exporter }}' ]
ignore_errors: '{{ ansible_check_mode }}'
- name: '{{ exporter }} exporter | cleanup temp path'
file:
state: absent
path: /tmp/prometheus_exporter/{{ exporter }}
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "origin"
- name: '{{ exporter }} exporter | systemd | copy unit file'
template:
src: systemd/prometheus-{{ exporter }}-exporter.service.j2
dest: /etc/systemd/system/prometheus-{{ exporter }}-exporter.service
owner: root
group: root
mode: 0600
notify:
- '{{ exporter }}-exporter-restart'
when: not stat_result.stat.exists or exporter_upgrade == "yes"
ignore_errors: '{{ ansible_check_mode }}'
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | systemd | enable service'
systemd:
daemon_reload: yes
enabled: yes
name: prometheus-{{ exporter }}-exporter.service
ignore_errors: '{{ ansible_check_mode }}'
when: not stat_result.stat.exists or exporter_upgrade == "yes"
tags: [ 'prometheus_{{ exporter }}' ]

47
tasks/exporter/common.yml Normal file
View File

@ -0,0 +1,47 @@
---
- name: '{{ exporter }} exporter | check if exporter is already install'
stat:
path: /usr/local/bin/prometheus-{{ exporter }}-exporter
register: stat_result
tags: [ 'prometheus_{{ exporter }}' ]
- name '{{ exporter }} exporter | remove old exporter version'
include_tasks: "upgrade.yml"
when: stat_result.stat.exists and exporter_upgrade == "yes"
tags: [ 'prometheus_{{ exporter }}' ]
- name '{{ exporter }} exporter | install from origin'
include_tasks: "origin.yml"
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "origin"
tags: [ 'prometheus_{{ exporter }}' ]
- name '{{ exporter }} exporter | install from repo'
include_tasks: "repo.yml"
when: >
(not stat_result.stat.exists or exporter_upgrade == "yes") and
prometheus_exporters_sources == "repo"
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | systemd | copy unit file'
template:
src: systemd/prometheus-{{ exporter }}-exporter.service.j2
dest: /etc/systemd/system/prometheus-{{ exporter }}-exporter.service
owner: root
group: root
mode: 0600
notify:
- '{{ exporter }}-exporter-restart'
when: not stat_result.stat.exists or exporter_upgrade == "yes"
ignore_errors: '{{ ansible_check_mode }}'
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | systemd | enable service'
systemd:
daemon_reload: yes
enabled: yes
name: prometheus-{{ exporter }}-exporter.service
ignore_errors: '{{ ansible_check_mode }}'
when: not stat_result.stat.exists or exporter_upgrade == "yes"
tags: [ 'prometheus_{{ exporter }}' ]

View File

@ -8,7 +8,7 @@
failed_when: result.rc != 0 and result.rc != 127 failed_when: result.rc != 0 and result.rc != 127
with_items: with_items:
- docker - docker
- docker-compose - docker-compose-plugin
tags: [ 'prometheus_{{ exporter }}' ] tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | create docker-compose directory' - name: '{{ exporter }} exporter | create docker-compose directory'

50
tasks/exporter/origin.yml Normal file
View File

@ -0,0 +1,50 @@
---
# to build prometheus repo for another var: https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#when-should-i-use-also-how-to-interpolate-variables-or-dynamic-variable-names
- set_fact:
prometheus_repo: "{{ lookup('vars', 'prometheus_repo_' ~ exporter) }}"
- name: '{{ exporter }} exporter | create temp path'
file:
state: directory
path: /tmp/prometheus_exporter/{{ exporter }}
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | get latest release from GitHub'
shell: curl --silent "https://api.github.com/repos/{{ prometheus_repo }}/{{ exporter }}_exporter/releases/latest" | jq -r .tag_name | sed "s/v//"
register: prometheus_exporter_latest_version
run_once: true
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | download from origin'
get_url:
url: "https://github.com/{{ prometheus_repo }}/{{ exporter }}_exporter/releases/download/v{{ prometheus_exporter_latest_version.stdout }}/{{ exporter }}_exporter-{{ prometheus_exporter_latest_version.stdout }}.{{ prometheus_os }}-{{ prometheus_arch }}.tar.gz"
dest: /tmp/prometheus_exporter/{{ exporter }}/
ignore_errors: '{{ ansible_check_mode }}'
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | unarchive'
unarchive:
remote_src: yes
src: /tmp/prometheus_exporter/{{ exporter }}/{{ exporter }}_exporter-{{ prometheus_exporter_latest_version.stdout }}.{{ prometheus_os }}-{{ prometheus_arch }}.tar.gz
dest: /tmp/prometheus_exporter/{{ exporter }}/
ignore_errors: '{{ ansible_check_mode }}'
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | move to /usr/local/bin'
copy:
src: /tmp/prometheus_exporter/{{ exporter }}/{{ exporter }}_exporter-{{ prometheus_exporter_latest_version.stdout }}.{{ prometheus_os }}-{{ prometheus_arch }}/{{ exporter }}_exporter
dest: /usr/local/bin/prometheus-{{ exporter }}-exporter
remote_src: yes
owner: root
group: root
mode: 0755
notify:
- '{{ exporter }}-exporter-restart'
tags: [ 'prometheus_{{ exporter }}' ]
ignore_errors: '{{ ansible_check_mode }}'
- name: '{{ exporter }} exporter | cleanup temp path'
file:
state: absent
path: /tmp/prometheus_exporter/{{ exporter }}

11
tasks/exporter/repo.yml Normal file
View File

@ -0,0 +1,11 @@
---
- name: '{{ exporter }} exporter | download from repo'
get_url:
url: "{{prometheus_exporters_repo}}/releases/download/{{prometheus_exporters_release}}/{{exporter}}_exporter"
dest: /usr/local/bin/prometheus-{{ exporter }}-exporter
remote_src: yes
owner: root
group: root
mode: 0755
ignore_errors: '{{ ansible_check_mode }}'
tags: [ 'prometheus_{{ exporter }}' ]

View File

@ -1,3 +1,3 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_apache_exporter'] tags: ['prometheus_apache_exporter']

View File

@ -1,5 +1,5 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_blackbox_exporter'] tags: ['prometheus_blackbox_exporter']
- name: 'blackbox exporter | configuration' - name: 'blackbox exporter | configuration'

View File

@ -5,5 +5,5 @@
- cloudflare_api_key is defined - cloudflare_api_key is defined
tags: ['prometheus_cloudflare'] tags: ['prometheus_cloudflare']
- include_tasks: _docker.yml - include_tasks: ../docker.yml
tags: ['prometheus_cloudflare'] tags: ['prometheus_cloudflare']

View File

@ -1,3 +1,3 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_memcached_exporter'] tags: ['prometheus_memcached_exporter']

View File

@ -1,5 +1,5 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_mongodb_exporter'] tags: ['prometheus_mongodb_exporter']
- name: 'mongodb exporter < v0.2 | move to /usr/local/bin' - name: 'mongodb exporter < v0.2 | move to /usr/local/bin'

View File

@ -1,5 +1,5 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_mysqld_exporter'] tags: ['prometheus_mysqld_exporter']
- name: 'mysqld exporter | configuration' - name: 'mysqld exporter | configuration'

View File

@ -1,3 +1,3 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_nginx_exporter'] tags: ['prometheus_nginx_exporter']

View File

@ -1,3 +1,3 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_node_exporter'] tags: ['prometheus_node_exporter']

View File

@ -1,5 +1,5 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_opcache_exporter'] tags: ['prometheus_opcache_exporter']
- name: 'opcache exporter | configuration' - name: 'opcache exporter | configuration'

View File

@ -1,5 +1,5 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_phpfpm_exporter'] tags: ['prometheus_phpfpm_exporter']
- name: 'phpfpm exporter | install startup script' - name: 'phpfpm exporter | install startup script'

View File

@ -1,5 +1,5 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_postgres_exporter'] tags: ['prometheus_postgres_exporter']
- name: 'postgres exporter | configuration' - name: 'postgres exporter | configuration'

View File

@ -1,5 +1,5 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_redis_exporter'] tags: ['prometheus_redis_exporter']
- name: 'redis exporter | configuration' - name: 'redis exporter | configuration'

View File

@ -1,3 +1,3 @@
--- ---
- include_tasks: _common.yml - include_tasks: ../common.yml
tags: ['prometheus_varnish_exporter'] tags: ['prometheus_varnish_exporter']

View File

@ -0,0 +1,12 @@
---
- name: '{{ exporter }} exporter | stop old version'
systemd:
name: prometheus-{{ exporter }}-exporter.service
state: stopped
tags: [ 'prometheus_{{ exporter }}' ]
- name: '{{ exporter }} exporter | remove old version'
file:
path: /usr/local/bin/prometheus-{{ exporter }}-exporter
state: absent
tags: [ 'prometheus_{{ exporter }}' ]

View File

@ -24,7 +24,7 @@
- name: 'exporters install' - name: 'exporters install'
vars: vars:
exporter: "{{ item }}" exporter: "{{ item }}"
include_tasks: "exporter/{{ item }}.yml" include_tasks: "exporter/services/{{ item }}.yml"
tags: tags:
- prometheus_node_exporter - prometheus_node_exporter
- prometheus_mysqld_exporter - prometheus_mysqld_exporter