mirror of
https://github.com/RWejlgaard/pez-infra.git
synced 2026-05-06 04:14:43 +00:00
* Add systemd_exporter Ansible role and Prometheus scrape config - Create systemd_exporter role (download binary, create user, deploy service) - Add scrape job for london-b:9558 and copenhagen-a:9558 - Add systemd_exporter_hosts inventory group - Add stage 3b to deploy.yml - Map role to deploy-on-merge scope Closes PESO-120 * Fix line length lint violations in systemd_exporter tasks * Fix var-naming lint: use systemd_exporter_ prefix for role variables
98 lines
2.9 KiB
YAML
98 lines
2.9 KiB
YAML
---
|
|
# Install and configure systemd_exporter for Prometheus monitoring.
|
|
# Downloads the binary from GitHub releases and deploys a systemd service.
|
|
# Linux only — systemd_exporter has no FreeBSD equivalent.
|
|
|
|
- name: Create systemd_exporter group
|
|
ansible.builtin.group:
|
|
name: "{{ systemd_exporter_group }}"
|
|
system: true
|
|
state: present
|
|
|
|
- name: Create systemd_exporter user
|
|
ansible.builtin.user:
|
|
name: "{{ systemd_exporter_user }}"
|
|
group: "{{ systemd_exporter_group }}"
|
|
system: true
|
|
shell: /usr/sbin/nologin
|
|
create_home: false
|
|
|
|
- name: Check if systemd_exporter binary exists
|
|
ansible.builtin.stat:
|
|
path: /usr/local/bin/systemd_exporter
|
|
register: systemd_exporter_bin
|
|
|
|
- name: Get installed version
|
|
ansible.builtin.command: /usr/local/bin/systemd_exporter --version
|
|
register: systemd_exporter_installed_version
|
|
changed_when: false
|
|
failed_when: false
|
|
when: systemd_exporter_bin.stat.exists
|
|
|
|
- name: Set architecture fact
|
|
ansible.builtin.set_fact:
|
|
systemd_exporter_arch: >-
|
|
{{ ansible_architecture
|
|
| regex_replace('x86_64', 'amd64')
|
|
| regex_replace('aarch64', 'arm64') }}
|
|
|
|
- name: Set release and URL facts
|
|
ansible.builtin.set_fact:
|
|
systemd_exporter_release: >-
|
|
systemd_exporter-{{ systemd_exporter_version }}.linux-{{ systemd_exporter_arch }}
|
|
systemd_exporter_base_url: >-
|
|
https://github.com/prometheus-community/systemd_exporter
|
|
|
|
- name: Download and install systemd_exporter
|
|
when: >-
|
|
not systemd_exporter_bin.stat.exists or
|
|
systemd_exporter_version not in
|
|
(systemd_exporter_installed_version.stdout | default(''))
|
|
block:
|
|
- name: Download systemd_exporter tarball
|
|
ansible.builtin.get_url:
|
|
url: >-
|
|
{{ systemd_exporter_base_url }}/releases/download/v{{
|
|
systemd_exporter_version }}/{{
|
|
systemd_exporter_release }}.tar.gz
|
|
dest: /tmp/systemd_exporter.tar.gz
|
|
mode: '0644'
|
|
|
|
- name: Extract systemd_exporter binary
|
|
ansible.builtin.unarchive:
|
|
src: /tmp/systemd_exporter.tar.gz
|
|
dest: /tmp
|
|
remote_src: true
|
|
|
|
- name: Install systemd_exporter binary
|
|
ansible.builtin.copy:
|
|
src: "/tmp/{{ systemd_exporter_release }}/systemd_exporter"
|
|
dest: /usr/local/bin/systemd_exporter
|
|
mode: '0755'
|
|
owner: root
|
|
group: root
|
|
remote_src: true
|
|
notify: Restart systemd_exporter
|
|
|
|
- name: Clean up tarball
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- /tmp/systemd_exporter.tar.gz
|
|
- "/tmp/{{ systemd_exporter_release }}"
|
|
|
|
- name: Deploy systemd_exporter service file
|
|
ansible.builtin.template:
|
|
src: systemd_exporter.service.j2
|
|
dest: /etc/systemd/system/systemd_exporter.service
|
|
mode: '0644'
|
|
notify:
|
|
- Reload systemd
|
|
- Restart systemd_exporter
|
|
|
|
- name: Enable and start systemd_exporter
|
|
ansible.builtin.service:
|
|
name: systemd_exporter
|
|
state: started
|
|
enabled: true
|