From 9d205bc4f8346376dafcbc759f8ab225a9e2bac0 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 15:42:23 +0400 Subject: [PATCH 1/9] Fix an inconsistent variable name --- roles/prometheus/molecule/default/converge.yml | 2 +- roles/prometheus/tasks/configure.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/prometheus/molecule/default/converge.yml b/roles/prometheus/molecule/default/converge.yml index a9b0439..c867a06 100644 --- a/roles/prometheus/molecule/default/converge.yml +++ b/roles/prometheus/molecule/default/converge.yml @@ -5,4 +5,4 @@ roles: - role: genlab.common.prometheus prometheus_config_source_dir: prometheus - alertrules_source_dir: prometheus/rules + prometheus_alertrules_source_dir: prometheus/rules diff --git a/roles/prometheus/tasks/configure.yml b/roles/prometheus/tasks/configure.yml index cbad1ad..b9c3473 100644 --- a/roles/prometheus/tasks/configure.yml +++ b/roles/prometheus/tasks/configure.yml @@ -12,7 +12,7 @@ - name: "Copy alert rules" notify: "(Re)start Prometheus service" - when: alertrules_source_dir is defined + when: prometheus_alertrules_source_dir is defined ansible.builtin.copy: src: "{{ item }}" dest: "{{ prometheus_config_dir }}/{{ item | basename }}" @@ -20,4 +20,4 @@ group: "{{ prometheus_group }}" mode: "0660" with_fileglob: - - "{{ alertrules_source_dir }}/*.yml" + - "{{ prometheus_alertrules_source_dir }}/*.yml" From bdfab12d58e386c443c7be18636af60a603ca0e4 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 15:48:31 +0400 Subject: [PATCH 2/9] Restore the task naming convention --- roles/prometheus/tasks/configure.yml | 4 ++-- roles/prometheus/tasks/install.yml | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/roles/prometheus/tasks/configure.yml b/roles/prometheus/tasks/configure.yml index b9c3473..7f56078 100644 --- a/roles/prometheus/tasks/configure.yml +++ b/roles/prometheus/tasks/configure.yml @@ -1,5 +1,5 @@ --- -- name: "Copy config file" +- name: "Configure| Copy Prometheus configuration files" notify: "(Re)start Prometheus service" ansible.builtin.copy: src: "{{ item }}" @@ -10,7 +10,7 @@ with_fileglob: - "{{ prometheus_config_source_dir }}/*.yml" -- name: "Copy alert rules" +- name: "Configure | Copy alert rules" notify: "(Re)start Prometheus service" when: prometheus_alertrules_source_dir is defined ansible.builtin.copy: diff --git a/roles/prometheus/tasks/install.yml b/roles/prometheus/tasks/install.yml index 3118047..a2a4a33 100644 --- a/roles/prometheus/tasks/install.yml +++ b/roles/prometheus/tasks/install.yml @@ -1,11 +1,11 @@ --- -- name: "Create Prometheus system group" +- name: "Install | Create Prometheus system group" ansible.builtin.group: name: "{{ prometheus_group }}" system: true state: present -- name: "Create Prometheus system user" +- name: "Install | Create Prometheus system user" ansible.builtin.user: name: "{{ prometheus_user }}" group: "{{ prometheus_group }}" @@ -14,22 +14,22 @@ create_home: false state: present -- name: "Install prometheus from binary" +- name: "Install | Install the binary" block: - - name: "Check Prometheus version" + - name: "Install | Check Prometheus version" changed_when: false ansible.builtin.command: cmd: "prometheus --version" register: prometheus_ver - - name: "Assert version correctness" + - name: "Install | Assert version correctness" ansible.builtin.assert: that: "prometheus_ver.stdout is regex('{{ prometheus_version }}')" success_msg: "prometheus version {{ prometheus_version }} is installed and working" fail_msg: "prometheus version {{ prometheus_version }} is not installed or not working correctly" rescue: - - name: "Create prometheus directories {{ item }}" + - name: "Install | Create directories {{ item }}" ansible.builtin.file: path: "{{ item }}" state: directory @@ -41,7 +41,7 @@ - "{{ prometheus_dir }}" - "{{ prometheus_db_dir }}" - - name: "Download Prometheus binary" + - name: "Install | Download the binary distribution" ansible.builtin.get_url: url: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" dest: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" @@ -49,7 +49,7 @@ group: "{{ prometheus_group }}" mode: "0644" - - name: "Unpack Prometheus binaries" + - name: "Install | Unpack the distribution" notify: "(Re)start Prometheus service" ansible.builtin.unarchive: src: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" @@ -57,12 +57,12 @@ creates: "{{ prometheus_dir }}/prometheus-{{ prometheus_version }}.linux-amd64" remote_src: true - - name: "Cleanup downloaded file" + - name: "Install | Clean up downloads" ansible.builtin.file: path: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" state: absent - - name: "Move official prometheus and promtool binaries" + - name: "Install | Move official prometheus and promtool binaries" ansible.builtin.copy: src: "{{ prometheus_dir }}/prometheus-{{ prometheus_version }}.linux-amd64/{{ item }}" dest: "/usr/local/bin/{{ item }}" @@ -74,7 +74,7 @@ - prometheus - promtool -- name: "Create systemd service unit" +- name: "Install | Create a systemd service unit" notify: "(Re)start Prometheus service" ansible.builtin.template: src: prometheus.service.j2 From f45f73e6ff2bea43307aa463e8acaebe04c04e23 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 15:57:59 +0400 Subject: [PATCH 3/9] Restore the task formatting consistency --- roles/prometheus/tasks/configure.yml | 8 ++++---- roles/prometheus/tasks/install.yml | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/roles/prometheus/tasks/configure.yml b/roles/prometheus/tasks/configure.yml index 7f56078..d8cd506 100644 --- a/roles/prometheus/tasks/configure.yml +++ b/roles/prometheus/tasks/configure.yml @@ -1,23 +1,23 @@ --- - name: "Configure| Copy Prometheus configuration files" notify: "(Re)start Prometheus service" + with_fileglob: + - "{{ prometheus_config_source_dir }}/*.yml" ansible.builtin.copy: src: "{{ item }}" dest: "{{ prometheus_config_dir }}/{{ item | basename }}" owner: "{{ prometheus_user }}" group: "{{ prometheus_group }}" mode: "0660" - with_fileglob: - - "{{ prometheus_config_source_dir }}/*.yml" - name: "Configure | Copy alert rules" notify: "(Re)start Prometheus service" when: prometheus_alertrules_source_dir is defined + with_fileglob: + - "{{ prometheus_alertrules_source_dir }}/*.yml" ansible.builtin.copy: src: "{{ item }}" dest: "{{ prometheus_config_dir }}/{{ item | basename }}" owner: "{{ prometheus_user }}" group: "{{ prometheus_group }}" mode: "0660" - with_fileglob: - - "{{ prometheus_alertrules_source_dir }}/*.yml" diff --git a/roles/prometheus/tasks/install.yml b/roles/prometheus/tasks/install.yml index a2a4a33..c4922e8 100644 --- a/roles/prometheus/tasks/install.yml +++ b/roles/prometheus/tasks/install.yml @@ -63,6 +63,9 @@ state: absent - name: "Install | Move official prometheus and promtool binaries" + with_items: + - prometheus + - promtool ansible.builtin.copy: src: "{{ prometheus_dir }}/prometheus-{{ prometheus_version }}.linux-amd64/{{ item }}" dest: "/usr/local/bin/{{ item }}" @@ -70,9 +73,6 @@ owner: "{{ prometheus_user }}" group: "{{ prometheus_group }}" remote_src: true - with_items: - - prometheus - - promtool - name: "Install | Create a systemd service unit" notify: "(Re)start Prometheus service" From 31e6b1f3304e0ad2208c476fa2f8a047a0d8a4f5 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 15:59:40 +0400 Subject: [PATCH 4/9] Hardcode `prometheus` as user and group name Not much sense or need in using variables here. The systemd unit file was using hard-coded values anyway. --- roles/prometheus/defaults/main.yml | 2 -- roles/prometheus/tasks/configure.yml | 8 +++---- roles/prometheus/tasks/install.yml | 33 +++++++++++----------------- 3 files changed, 17 insertions(+), 26 deletions(-) diff --git a/roles/prometheus/defaults/main.yml b/roles/prometheus/defaults/main.yml index 5ecc61c..59c8728 100644 --- a/roles/prometheus/defaults/main.yml +++ b/roles/prometheus/defaults/main.yml @@ -1,7 +1,5 @@ --- prometheus_version: 3.2.1 prometheus_dir: "/etc/prometheus" -prometheus_user: prometheus -prometheus_group: prometheus prometheus_config_dir: "/etc/prometheus/conf" prometheus_db_dir: "/var/lib/prometheus" diff --git a/roles/prometheus/tasks/configure.yml b/roles/prometheus/tasks/configure.yml index d8cd506..0d123be 100644 --- a/roles/prometheus/tasks/configure.yml +++ b/roles/prometheus/tasks/configure.yml @@ -6,8 +6,8 @@ ansible.builtin.copy: src: "{{ item }}" dest: "{{ prometheus_config_dir }}/{{ item | basename }}" - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + owner: "prometheus" + group: "prometheus" mode: "0660" - name: "Configure | Copy alert rules" @@ -18,6 +18,6 @@ ansible.builtin.copy: src: "{{ item }}" dest: "{{ prometheus_config_dir }}/{{ item | basename }}" - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + owner: "prometheus" + group: "prometheus" mode: "0660" diff --git a/roles/prometheus/tasks/install.yml b/roles/prometheus/tasks/install.yml index c4922e8..cfac627 100644 --- a/roles/prometheus/tasks/install.yml +++ b/roles/prometheus/tasks/install.yml @@ -1,14 +1,7 @@ --- -- name: "Install | Create Prometheus system group" - ansible.builtin.group: - name: "{{ prometheus_group }}" - system: true - state: present - - name: "Install | Create Prometheus system user" ansible.builtin.user: - name: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + name: "prometheus" system: true shell: "/sbin/nologin" create_home: false @@ -30,23 +23,23 @@ rescue: - name: "Install | Create directories {{ item }}" - ansible.builtin.file: - path: "{{ item }}" - state: directory - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" - mode: "0755" with_items: - "{{ prometheus_config_dir }}" - "{{ prometheus_dir }}" - "{{ prometheus_db_dir }}" + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "prometheus" + group: "prometheus" + mode: "0755" - name: "Install | Download the binary distribution" ansible.builtin.get_url: url: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" dest: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + owner: "prometheus" + group: "prometheus" mode: "0644" - name: "Install | Unpack the distribution" @@ -70,8 +63,8 @@ src: "{{ prometheus_dir }}/prometheus-{{ prometheus_version }}.linux-amd64/{{ item }}" dest: "/usr/local/bin/{{ item }}" mode: "0755" - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + owner: "prometheus" + group: "prometheus" remote_src: true - name: "Install | Create a systemd service unit" @@ -79,6 +72,6 @@ ansible.builtin.template: src: prometheus.service.j2 dest: /etc/systemd/system/prometheus.service - owner: "{{ prometheus_user }}" - group: "{{ prometheus_group }}" + owner: "prometheus" + group: "prometheus" mode: "0660" From e6eab72d9b58ab7b3c09225ab51668251699c9bf Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 16:17:47 +0400 Subject: [PATCH 5/9] Change configuration file placement --- roles/prometheus/defaults/main.yml | 2 +- roles/prometheus/tasks/configure.yml | 2 +- roles/prometheus/tasks/install.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/prometheus/defaults/main.yml b/roles/prometheus/defaults/main.yml index 59c8728..7f63286 100644 --- a/roles/prometheus/defaults/main.yml +++ b/roles/prometheus/defaults/main.yml @@ -1,5 +1,5 @@ --- prometheus_version: 3.2.1 prometheus_dir: "/etc/prometheus" -prometheus_config_dir: "/etc/prometheus/conf" +prometheus_config_dir: "/etc/prometheus" prometheus_db_dir: "/var/lib/prometheus" diff --git a/roles/prometheus/tasks/configure.yml b/roles/prometheus/tasks/configure.yml index 0d123be..042f062 100644 --- a/roles/prometheus/tasks/configure.yml +++ b/roles/prometheus/tasks/configure.yml @@ -17,7 +17,7 @@ - "{{ prometheus_alertrules_source_dir }}/*.yml" ansible.builtin.copy: src: "{{ item }}" - dest: "{{ prometheus_config_dir }}/{{ item | basename }}" + dest: "{{ prometheus_config_dir }}/rules/{{ item | basename }}" owner: "prometheus" group: "prometheus" mode: "0660" diff --git a/roles/prometheus/tasks/install.yml b/roles/prometheus/tasks/install.yml index cfac627..2387883 100644 --- a/roles/prometheus/tasks/install.yml +++ b/roles/prometheus/tasks/install.yml @@ -25,7 +25,7 @@ - name: "Install | Create directories {{ item }}" with_items: - "{{ prometheus_config_dir }}" - - "{{ prometheus_dir }}" + - "{{ prometheus_config_dir }}/rules" - "{{ prometheus_db_dir }}" ansible.builtin.file: path: "{{ item }}" From efc2462c15f611d7b0ac005d919f02455c62fce6 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 16:24:30 +0400 Subject: [PATCH 6/9] Simplify installation handling --- roles/prometheus/defaults/main.yml | 1 - roles/prometheus/tasks/install.yml | 36 ++++++++----------- .../templates/prometheus.service.j2 | 2 +- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/roles/prometheus/defaults/main.yml b/roles/prometheus/defaults/main.yml index 7f63286..e7270f8 100644 --- a/roles/prometheus/defaults/main.yml +++ b/roles/prometheus/defaults/main.yml @@ -1,5 +1,4 @@ --- prometheus_version: 3.2.1 -prometheus_dir: "/etc/prometheus" prometheus_config_dir: "/etc/prometheus" prometheus_db_dir: "/var/lib/prometheus" diff --git a/roles/prometheus/tasks/install.yml b/roles/prometheus/tasks/install.yml index 2387883..03877de 100644 --- a/roles/prometheus/tasks/install.yml +++ b/roles/prometheus/tasks/install.yml @@ -34,38 +34,30 @@ group: "prometheus" mode: "0755" - - name: "Install | Download the binary distribution" - ansible.builtin.get_url: - url: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - dest: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - owner: "prometheus" - group: "prometheus" - mode: "0644" - - - name: "Install | Unpack the distribution" + - name: "Install | Fetch and unpack the distribution" notify: "(Re)start Prometheus service" ansible.builtin.unarchive: - src: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - dest: "{{ prometheus_dir }}" - creates: "{{ prometheus_dir }}/prometheus-{{ prometheus_version }}.linux-amd64" + src: "https://github.com/prometheus/prometheus/releases/download/v{{ prometheus_version }}/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" + dest: "/tmp" + creates: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64" remote_src: true - - name: "Install | Clean up downloads" - ansible.builtin.file: - path: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64.tar.gz" - state: absent - - - name: "Install | Move official prometheus and promtool binaries" + - name: "Install | Put the binaries under the PATH" with_items: - prometheus - promtool ansible.builtin.copy: - src: "{{ prometheus_dir }}/prometheus-{{ prometheus_version }}.linux-amd64/{{ item }}" - dest: "/usr/local/bin/{{ item }}" - mode: "0755" + remote_src: true + src: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64/{{ item }}" + dest: "/usr/bin/{{ item }}" owner: "prometheus" group: "prometheus" - remote_src: true + mode: "0755" + + - name: "Install | Clean up the downloads" + ansible.builtin.file: + path: "/tmp/prometheus-{{ prometheus_version }}.linux-amd64" + state: absent - name: "Install | Create a systemd service unit" notify: "(Re)start Prometheus service" diff --git a/roles/prometheus/templates/prometheus.service.j2 b/roles/prometheus/templates/prometheus.service.j2 index 2f17191..94804b1 100644 --- a/roles/prometheus/templates/prometheus.service.j2 +++ b/roles/prometheus/templates/prometheus.service.j2 @@ -8,7 +8,7 @@ Documentation="https://prometheus.io/" User=prometheus Group=prometheus Type=simple -ExecStart=/usr/local/bin/prometheus \ +ExecStart=/usr/bin/prometheus \ --config.file {{ prometheus_config_dir }}/prometheus.yml \ --storage.tsdb.path {{ prometheus_db_dir }} \ --storage.tsdb.retention.time=30d From 62f52010c992ac30594eb53a521592fd8d24a4b6 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 16:24:42 +0400 Subject: [PATCH 7/9] Minor edits --- roles/prometheus/molecule/default/verify.yml | 4 ++-- roles/prometheus/templates/prometheus.service.j2 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/prometheus/molecule/default/verify.yml b/roles/prometheus/molecule/default/verify.yml index c085dd1..c2107bb 100644 --- a/roles/prometheus/molecule/default/verify.yml +++ b/roles/prometheus/molecule/default/verify.yml @@ -19,8 +19,8 @@ - name: "Check Prometheus version" ansible.builtin.assert: that: "prometheus_installed_version.stdout is regex('{{ prometheus_version }}')" - success_msg: "Prometheus version {{ prometheus_version }} is installed and working" - fail_msg: "Prometheus version {{ prometheus_version }} is not installed or not working correctly" + success_msg: "Prometheus version {{ prometheus_version }} is available and executable" + fail_msg: "Prometheus version {{ prometheus_version }} not found or not executable" # kics-scan ignore-block - name: "Check if Prometheus is reachable" diff --git a/roles/prometheus/templates/prometheus.service.j2 b/roles/prometheus/templates/prometheus.service.j2 index 94804b1..45a6668 100644 --- a/roles/prometheus/templates/prometheus.service.j2 +++ b/roles/prometheus/templates/prometheus.service.j2 @@ -25,4 +25,4 @@ ProtectClock=yes RestrictSUIDSGID=true [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=multi-user.target From d0bfc16311d92b95f4dc49c6d685c5f976c1c5a4 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 16:24:59 +0400 Subject: [PATCH 8/9] Bump the default Prometheus version to the latest LTS (3.5.0) --- roles/prometheus/defaults/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/prometheus/defaults/main.yml b/roles/prometheus/defaults/main.yml index e7270f8..da34767 100644 --- a/roles/prometheus/defaults/main.yml +++ b/roles/prometheus/defaults/main.yml @@ -1,4 +1,4 @@ --- -prometheus_version: 3.2.1 +prometheus_version: "3.5.0" prometheus_config_dir: "/etc/prometheus" prometheus_db_dir: "/var/lib/prometheus" From 8039a00896219fb484b56e58a599017bd5358b7f Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Sun, 28 Dec 2025 16:39:21 +0400 Subject: [PATCH 9/9] Add a missing space --- roles/prometheus/tasks/configure.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/prometheus/tasks/configure.yml b/roles/prometheus/tasks/configure.yml index 042f062..a8ac6e9 100644 --- a/roles/prometheus/tasks/configure.yml +++ b/roles/prometheus/tasks/configure.yml @@ -1,5 +1,5 @@ --- -- name: "Configure| Copy Prometheus configuration files" +- name: "Configure | Copy Prometheus configuration files" notify: "(Re)start Prometheus service" with_fileglob: - "{{ prometheus_config_source_dir }}/*.yml"