mysqld_exporter: Initial version of role

This commit is contained in:
Timo Makinen 2024-02-17 17:58:32 +00:00
parent 5751c77b8f
commit 8bc5793d70
7 changed files with 125 additions and 0 deletions

View file

@ -0,0 +1,2 @@
---
mysqld_exporter_pkg: "mysqld_exporter-{{ mysqld_exporter_version }}.linux-amd64"

View file

@ -0,0 +1,14 @@
[Unit]
Description=Prometheus MySQL Exporter
After=syslog.target
After=network.target
[Service]
Type=simple
User=mysqld_exporter
Group=mysqld_exporter
ExecStart=/usr/local/bin/mysqld_exporter --config.my-cnf=/etc/mysqld_exporter/my.cnf --web.config.file=/etc/mysqld_exporter/web-config.yml
Restart=always
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,6 @@
---
- name: Restart mysqld_exporter
ansible.builtin.systemd:
name: mysqld_exporter
daemon_reload: true
state: restarted

View file

@ -0,0 +1,3 @@
---
dependencies:
- {role: pki}

View file

@ -0,0 +1,83 @@
---
- name: Create group
ansible.builtin.group:
name: mysqld_exporter
system: true
- name: Create user
ansible.builtin.user:
name: mysqld_exporter
comment: Prometheus MySQL Exporter
group: mysqld_exporter
groups: hostkey
create_home: false
home: /var/empty
shell: /sbin/nologin
system: true
- name: Download package
ansible.builtin.get_url:
url: "https://github.com/prometheus/mysqld_exporter/releases/download/v{{ mysqld_exporter_version }}/{{ mysqld_exporter_pkg }}.tar.gz"
dest: "/usr/local/src/{{ mysqld_exporter_pkg }}.tar.gz"
mode: "0644"
owner: root
group: "{{ ansible_wheel }}"
- name: Extract package
ansible.builtin.unarchive:
src: "/usr/local/src/{{ mysqld_exporter_pkg }}.tar.gz"
dest: /usr/local/src
owner: root
group: "{{ ansible_wheel }}"
creates: "/usr/local/src/{{ mysqld_exporter_pkg }}"
remote_src: true
- name: Copy binary
ansible.builtin.copy:
dest: /usr/local/bin/mysqld_exporter
src: "/usr/local/src/{{ mysqld_exporter_pkg }}/mysqld_exporter"
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
remote_src: true
- name: Create config directory
ansible.builtin.file:
path: /etc/mysqld_exporter
state: directory
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
- name: Create web-config
ansible.builtin.template:
dest: /etc/mysqld_exporter/web-config.yml
src: web-config.yml.j2
mode: "0644"
owner: root
group: "{{ ansible_wheel }}"
notify: Restart mysqld_exporter
- name: Create credentials config
ansible.builtin.template:
dest: /etc/mysqld_exporter/my.cnf
src: my.cnf.j2
mode: "0640"
owner: root
group: mysqld_exporter
notify: Restart mysqld_exporter
- name: Create service file
ansible.builtin.copy:
dest: /etc/systemd/system/mysqld_exporter.service
src: mysqld_exporter.service
mode: "0644"
owner: root
group: "{{ ansible_wheel }}"
notify: Restart mysqld_exporter
- name: Enable service
ansible.builtin.service:
name: mysqld_exporter
state: started
enabled: true

View file

@ -0,0 +1,6 @@
[client]
user = mysqld_exporter
password = {{ mysqld_exporter_pass }}
ssl-cert = {{ tls_certs }}/{{ inventory_hostname }}.crt
ssl-key = {{ tls_private }}/{{ inventory_hostname }}.key
ssl-ca = {{ tls_certs }}/ca.crt

View file

@ -0,0 +1,11 @@
tls_server_config:
key_file: {{ tls_private }}/{{ inventory_hostname }}.key
cert_file: {{ tls_certs }}/{{ inventory_hostname }}.crt
client_ca_file: {{ tls_certs }}/ca.crt
client_auth_type: RequireAndVerifyClientCert
client_allowed_sans:
- prometheus01.home.foo.sh
- prometheus02.home.foo.sh
- prometheus03.home.foo.sh
- prometheus04.home.foo.sh
min_version: TLS13