From fac775cb9d87b0ad7b3b2a2bd381b1b19e54904b Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 21:58:02 +0400 Subject: [PATCH 1/9] Simplify handler logic --- roles/promtail/handlers/main.yml | 8 ++------ roles/promtail/tasks/main.yml | 13 +++---------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/roles/promtail/handlers/main.yml b/roles/promtail/handlers/main.yml index d1c06ac..020808a 100644 --- a/roles/promtail/handlers/main.yml +++ b/roles/promtail/handlers/main.yml @@ -1,11 +1,7 @@ --- - -- name: "Restart the Promtail daemon" +- name: "Enable and restart the Promtail daemon" ansible.builtin.systemd: name: promtail state: restarted - - -- name: "Reload the Promtail daemon configuration" - ansible.builtin.systemd: + enabled: true daemon_reload: true diff --git a/roles/promtail/tasks/main.yml b/roles/promtail/tasks/main.yml index 127c10c..c3897fe 100644 --- a/roles/promtail/tasks/main.yml +++ b/roles/promtail/tasks/main.yml @@ -51,7 +51,6 @@ changed_when: false - name: "Assert version correctness" - notify: "Restart the Promtail daemon" ansible.builtin.assert: that: "promtail_version in promtail_version_check.stdout" success_msg: "Expected Promtail version available ({{ promtail_version }})" @@ -59,6 +58,7 @@ rescue: - name: "Install Promtail if its not present" + notify: "Enable and restart the Promtail daemon" ansible.builtin.unarchive: src: "https://github.com/grafana/loki/releases/download/v\ {{ promtail_version }}/promtail-linux-amd64.zip" @@ -81,7 +81,7 @@ - name: "Template the systemd unit file" - notify: "Reload the Promtail daemon configuration" + notify: "Enable and restart the Promtail daemon" ansible.builtin.template: src: promtail.service.j2 dest: /etc/systemd/system/promtail.service @@ -91,17 +91,10 @@ - name: "Template Promtail config file" - notify: "Restart the Promtail daemon" + notify: "Enable and restart the Promtail daemon" ansible.builtin.template: src: templates/promtail.yml.j2 dest: /usr/local/bin/config-promtail.yml owner: root group: root mode: "0644" - - -- name: "Enable and start Promtail daemon" - ansible.builtin.systemd: - name: promtail - state: started - enabled: true From 3203acba879aadaf130ccfe84f91cba9f6bba847 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 22:08:59 +0400 Subject: [PATCH 2/9] Update the `promtail` user creation task --- roles/promtail/defaults/main.yml | 2 +- roles/promtail/tasks/main.yml | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/roles/promtail/defaults/main.yml b/roles/promtail/defaults/main.yml index 8a8fa39..91c9f6d 100644 --- a/roles/promtail/defaults/main.yml +++ b/roles/promtail/defaults/main.yml @@ -1,6 +1,6 @@ --- promtail_version: 2.7.3 -promtail_positions_path: /home/promtail/positions.yaml +promtail_positions_path: /var/lib/promtail/positions.yaml promtail_http_port: 9080 promtail_loki_server: localhost promtail_loki_port: 3100 diff --git a/roles/promtail/tasks/main.yml b/roles/promtail/tasks/main.yml index c3897fe..ae70976 100644 --- a/roles/promtail/tasks/main.yml +++ b/roles/promtail/tasks/main.yml @@ -17,9 +17,11 @@ ansible.builtin.user: name: promtail groups: + - adm - promtail - systemd-journal - - adm + shell: /bin/false + home: /var/lib/promtail state: present system: true From 46a3ce39aa3e7def3bbbaacaa5ca73146f4483a7 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 22:10:09 +0400 Subject: [PATCH 3/9] Update defaults --- roles/promtail/defaults/main.yml | 3 +-- roles/promtail/molecule/default/converge.yml | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/roles/promtail/defaults/main.yml b/roles/promtail/defaults/main.yml index 91c9f6d..3a22cf7 100644 --- a/roles/promtail/defaults/main.yml +++ b/roles/promtail/defaults/main.yml @@ -1,7 +1,6 @@ --- -promtail_version: 2.7.3 +promtail_version: 3.6.3 promtail_positions_path: /var/lib/promtail/positions.yaml promtail_http_port: 9080 -promtail_loki_server: localhost promtail_loki_port: 3100 promtail_add_var_logs: true diff --git a/roles/promtail/molecule/default/converge.yml b/roles/promtail/molecule/default/converge.yml index ea072dd..4d4cda0 100644 --- a/roles/promtail/molecule/default/converge.yml +++ b/roles/promtail/molecule/default/converge.yml @@ -3,3 +3,5 @@ hosts: all roles: - role: genlab.common.promtail + promtail_version: 3.6.3 + promtail_loki_server: localhost # required, but doesn't do anything in these tests From d9180e04b23515cb80adc96144217d8de3a4fbe8 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 22:20:49 +0400 Subject: [PATCH 4/9] Drop explicit group creation making the eponymous group non-primary --- roles/promtail/tasks/main.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/roles/promtail/tasks/main.yml b/roles/promtail/tasks/main.yml index ae70976..0b25055 100644 --- a/roles/promtail/tasks/main.yml +++ b/roles/promtail/tasks/main.yml @@ -7,18 +7,11 @@ cache_valid_time: 3600 -- name: "Create the 'promtail' group" - ansible.builtin.group: - name: promtail - state: present - - - name: "Create the 'promtail' user" ansible.builtin.user: name: promtail groups: - adm - - promtail - systemd-journal shell: /bin/false home: /var/lib/promtail From 10a1a993c847745adf57af446ecc75b997d8e64a Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 22:30:14 +0400 Subject: [PATCH 5/9] Put the configuration file under `/etc/promtail` --- roles/promtail/tasks/main.yml | 9 ++++++++- roles/promtail/templates/promtail.service.j2 | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/roles/promtail/tasks/main.yml b/roles/promtail/tasks/main.yml index 0b25055..9171298 100644 --- a/roles/promtail/tasks/main.yml +++ b/roles/promtail/tasks/main.yml @@ -84,12 +84,19 @@ group: root mode: "0644" +- name: "Ensure '/etc/promtail' exists" + ansible.builtin.file: + path: /etc/promtail + state: directory + owner: promtail + group: promtail + mode: "0755" - name: "Template Promtail config file" notify: "Enable and restart the Promtail daemon" ansible.builtin.template: src: templates/promtail.yml.j2 - dest: /usr/local/bin/config-promtail.yml + dest: /etc/promtail/config.yml owner: root group: root mode: "0644" diff --git a/roles/promtail/templates/promtail.service.j2 b/roles/promtail/templates/promtail.service.j2 index 3b7b517..3344016 100644 --- a/roles/promtail/templates/promtail.service.j2 +++ b/roles/promtail/templates/promtail.service.j2 @@ -5,7 +5,7 @@ After=network.target [Service] Type=simple User=promtail -ExecStart=/usr/bin/promtail -config.file /usr/local/bin/config-promtail.yml +ExecStart=/usr/bin/promtail -config.file /etc/promtail/config.yml [Install] WantedBy=multi-user.target From 7c635cbc7ba1fbfea2bc3f43a9d760b638513d68 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 22:35:25 +0400 Subject: [PATCH 6/9] Switch Molecule to 24.04 by default --- roles/promtail/molecule/default/molecule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/promtail/molecule/default/molecule.yml b/roles/promtail/molecule/default/molecule.yml index 8d39b18..943f66b 100644 --- a/roles/promtail/molecule/default/molecule.yml +++ b/roles/promtail/molecule/default/molecule.yml @@ -5,7 +5,7 @@ driver: name: docker platforms: - name: ubuntu - image: geerlingguy/docker-ubuntu2204-ansible:latest + image: geerlingguy/docker-ubuntu2404-ansible:latest pre_build_image: true command: ${MOLECULE_DOCKER_COMMAND:-""} volumes: From 6925c33baabc6f7a22b5a26521c7ab2fe4e82053 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 22:36:10 +0400 Subject: [PATCH 7/9] Make minor wording changes --- roles/promtail/meta/main.yml | 2 +- roles/promtail/molecule/default/verify.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/promtail/meta/main.yml b/roles/promtail/meta/main.yml index 92ff89a..dc98d48 100644 --- a/roles/promtail/meta/main.yml +++ b/roles/promtail/meta/main.yml @@ -2,7 +2,7 @@ galaxy_info: role_name: promtail namespace: genlab author: Danilkin Danila - description: Installs Promtail + description: Deploy Promtail company: Genlab LLC license: MIT diff --git a/roles/promtail/molecule/default/verify.yml b/roles/promtail/molecule/default/verify.yml index 7e078c2..3d89610 100644 --- a/roles/promtail/molecule/default/verify.yml +++ b/roles/promtail/molecule/default/verify.yml @@ -9,7 +9,7 @@ dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults/" extensions: ['yml'] - # kics-scan ignore-block - kics doesn't like http but it's localhost so it's not important + # kics-scan ignore-block - kics doesn't like HTTP but on localhost it's not important - name: "Sanity check the Promtail daemon" retries: 3 delay: 1 From be6fef69afb4489e678edac020094ea9f4c33388 Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 22:50:03 +0400 Subject: [PATCH 8/9] Remove excessive templating --- roles/promtail/README.md | 1 - roles/promtail/templates/promtail.yml.j2 | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/roles/promtail/README.md b/roles/promtail/README.md index 7984179..ef7bca5 100644 --- a/roles/promtail/README.md +++ b/roles/promtail/README.md @@ -13,7 +13,6 @@ Role Variables `promtail_version`: version to install `promtail_loki_server`: set loki server `promtail_loki_port`: set loki port -`custom_server_config`: path to custom config witch replace all config with your own `custom_scrape_configs`: path to custom scrape configs Dependencies diff --git a/roles/promtail/templates/promtail.yml.j2 b/roles/promtail/templates/promtail.yml.j2 index 21dea49..13a3c49 100644 --- a/roles/promtail/templates/promtail.yml.j2 +++ b/roles/promtail/templates/promtail.yml.j2 @@ -1,10 +1,7 @@ -{% if custom_server_config is defined %} -{{ custom_server_config }} -{% else %} +--- server: http_listen_port: {{ promtail_http_port }} grpc_listen_port: 0 -{% endif %} positions: filename: {{ promtail_positions_path }} From 3072a3c1b8fa55b64e789298f315388d684c039d Mon Sep 17 00:00:00 2001 From: Alexander Gorelyshev Date: Fri, 26 Dec 2025 22:50:28 +0400 Subject: [PATCH 9/9] Update `README.md` --- roles/promtail/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/roles/promtail/README.md b/roles/promtail/README.md index ef7bca5..dfb1605 100644 --- a/roles/promtail/README.md +++ b/roles/promtail/README.md @@ -10,10 +10,12 @@ Role Variables -------------- (all optional) -`promtail_version`: version to install -`promtail_loki_server`: set loki server -`promtail_loki_port`: set loki port -`custom_scrape_configs`: path to custom scrape configs +- `promtail_version`: Promtail version to install +- `promtail_loki_server`: address of the Loki server +- `promtail_loki_port`: Loki listening port +- `promtail_positions_path`: a YAML file containing last scraped positions in the logs (default: `/var/lib/promtail/positions.yaml`) +- `promtail_custom_scrape_configs`: additional `scrape_configs` configuration +- `promtail_add_var_logs`: scrape the entire `/var/logs` directory (default: `true`) Dependencies ------------