Skip to content

Commit 56a46f1

Browse files
authored
Merge pull request #10 from ntk148v/change-reload
change reload logic
2 parents 4b94db6 + 71244e0 commit 56a46f1

File tree

6 files changed

+53
-89
lines changed

6 files changed

+53
-89
lines changed

ansible/roles/alertmanager/defaults/main.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@ alertmanager_docker_memory_limit: "{{ docker_memory_limit }}"
1313
alertmanager_docker_memory_swap_limit: "{{ docker_memory_swap_limit }}"
1414
alertmanager_docker_cpus_limit: "{{ docker_cpus_limit }}"
1515

16-
amtool_docker_namespace: "{{ docker_namespace if docker_namespace else 'kiennt26' }}"
17-
amtool_version: "v3.1.0-v0.28.0"
18-
amtool_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ amtool_docker_namespace }}/pramtool:{{ amtool_version }}"
19-
2016
# Alertmanager agruments
2117
# ----------------------
2218
alertmanager_web_listen_address: "{{ api_interface_address }}:{{ alertmanager_port }}"
Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1 @@
11
---
2-
- name: Validate alertmanager config
3-
vars:
4-
service_name: "alertmanager"
5-
service: "{{ alertmanager_services[service_name] }}"
6-
ansible.builtin.command: >
7-
/usr/bin/docker run --rm -v {{ alertmanager_config_dir }}:/etc/alertmanager {{ amtool_image }} sh -c 'amtool \
8-
check-config /etc/alertmanager/config.yml'
9-
when:
10-
- inventory_hostname in groups[service.group]
11-
- service.enabled | bool
12-
- alertmanager_config.changed | bool
13-
14-
# NOTE(kiennt26): Reloading the config by sending SIGHUP to the main process, instead of sending a POST request
15-
# to the /-/reload endpoint, because the latter doesn't work when the basic auth is enabled.
16-
# The password for the basic auth is encrypted using bcrypt, and I don't want to store the raw password
17-
# The SIGHUP signal is sent to the process with PID 1 in the container, which is the main process.
18-
- name: Reload alertmanager config
19-
vars:
20-
service_name: "alertmanager"
21-
service: "{{ alertmanager_services[service_name] }}"
22-
ansible.builtin.command: >
23-
/usr/bin/docker exec -i {{ alertmanager_container_name }} kill -SIGHUP 1
24-
register: result
25-
retries: 5
26-
delay: 20
27-
until: result.rc == 0
28-
when:
29-
- inventory_hostname in groups[service.group]
30-
- service.enabled | bool
31-
- alertmanager_config.changed | bool
32-
or alertmanager_custom_templates.changed | bool

ansible/roles/alertmanager/tasks/config.yml

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@
3636
when:
3737
- alertmanager_custom_template_files is defined and alertmanager_custom_template_files.files | length > 0
3838
with_items: "{{ alertmanager_custom_template_files.files }}"
39-
notify:
40-
- Reload alertmanager config
4139

4240
- name: Configure Alertmanager web
4341
ansible.builtin.copy:
@@ -61,9 +59,33 @@
6159
when:
6260
- inventory_hostname in groups[service.group]
6361
- service.enabled | bool
64-
notify:
65-
- Validate alertmanager config
66-
- Reload alertmanager config
62+
63+
- name: Validate alertmanager config
64+
vars:
65+
service: "{{ alertmanager_services['alertmanager'] }}"
66+
ansible.builtin.shell: |
67+
/usr/bin/docker run --rm -v {{ alertmanager_config_dir }}:/etc/alertmanager --entrypoint "/bin/amtool" \
68+
{{ alertmanager_image }} check-config /etc/alertmanager/config.yml
69+
when:
70+
- inventory_hostname in groups[service.group]
71+
- service.enabled | bool
72+
73+
# NOTE(kiennt26): Reloading the config by sending SIGHUP to the main process, instead of sending a POST request
74+
# to the /-/reload endpoint, because the latter doesn't work when the basic auth is enabled.
75+
# The password for the basic auth is encrypted using bcrypt, and I don't want to store the raw password
76+
# The SIGHUP signal is sent to the process with PID 1 in the container, which is the main process.
77+
- name: Reload alertmanager config
78+
vars:
79+
service: "{{ alertmanager_services['alertmanager'] }}"
80+
ansible.builtin.command: >
81+
/usr/bin/docker exec -i {{ alertmanager_container_name }} kill -SIGHUP 1
82+
register: result
83+
retries: 5
84+
delay: 20
85+
until: result.rc == 0
86+
when:
87+
- inventory_hostname in groups[service.group]
88+
- service.enabled | bool
6789

6890
- name: Check alertmanager containers
6991
community.general.docker_container:

ansible/roles/prometheus/defaults/main.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ prometheus_docker_cpus_limit: "{{ docker_cpus_limit }}"
1515

1616
prometheus_web_listen_address: "{{ api_interface_address }}:{{ prometheus_port }}"
1717
prometheus_web_external_url: "http://{{ prometheus_vip_address }}:{{ prometheus_port }}"
18-
promtool_docker_namespace: "{{ docker_namespace if docker_namespace else 'kiennt26' }}"
19-
promtool_version: "v3.1.0-v0.28.0"
20-
promtool_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ promtool_docker_namespace }}/pramtool:{{ promtool_version }}"
2118

2219
# Prometheus arguments
2320
# --------------------

ansible/roles/prometheus/handlers/main.yml

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,4 @@
11
---
2-
- name: Validate prometheus config
3-
vars:
4-
service_name: "prometheus"
5-
service: "{{ prometheus_services[service_name] }}"
6-
ansible.builtin.command: >
7-
/usr/bin/docker run --rm -v {{ prometheus_config_dir }}:/etc/prometheus {{ promtool_image }} sh -c 'promtool \
8-
check config /etc/prometheus/prometheus.yml'
9-
when:
10-
- inventory_hostname in groups[service.group]
11-
- service.enabled | bool
12-
- prometheus_confs.changed | bool
13-
or prometheus_alert_confs.changed | bool
14-
or prometheus_file_sd_confs.changed | bool
15-
16-
# NOTE(kiennt26): Reloading the config by sending SIGHUP to the main process, instead of sending a POST request
17-
# to the /-/reload endpoint, because the latter doesn't work when the basic auth is enabled.
18-
# The password for the basic auth is encrypted using bcrypt, and I don't want to store the raw password
19-
# The SIGHUP signal is sent to the process with PID 1 in the container, which is the main process.
20-
- name: Reload prometheus config
21-
vars:
22-
service_name: "prometheus"
23-
service: "{{ prometheus_services[service_name] }}"
24-
ansible.builtin.command: >
25-
/usr/bin/docker exec -i {{ prometheus_container_name }} kill -SIGHUP 1
26-
register: result
27-
retries: 5
28-
delay: 20
29-
until: result.rc == 0
30-
when:
31-
- inventory_hostname in groups[service.group]
32-
- service.enabled | bool
33-
- prometheus_confs.changed | bool
34-
or prometheus_alert_confs.changed | bool
35-
or prometheus_file_sd_confs.changed | bool
36-
or prometheus_tls_confs.changed | bool
37-
382
# NOTE(kiennt26): Force restart keepalived to trigger notify script.
393
# Prometheus instances must be deployed in the same nodes as Haproxy and Keepalived.
404
- name: Restart keepalived service

ansible/roles/prometheus/tasks/config.yml

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,11 @@
2929
src: "{{ item.path }}"
3030
dest: "{{ prometheus_config_dir }}/rules/{{ item.path | basename }}"
3131
mode: 0755
32+
validate: "/usr/bin/docker run --rm -v {{ prometheus_config_dir }}:/etc/prometheus --entrypoint '/bin/promtool' {{ prometheus_image }} check rules %s"
3233
register: prometheus_alert_confs
3334
with_items: "{{ prometheus_alert_rules.files }}"
3435
when:
3536
- prometheus_alert_rules is defined and prometheus_alert_rules.files | length > 0
36-
notify:
37-
- Reload prometheus config
3837

3938
- name: Check custom file_sd files exists
4039
local_action:
@@ -63,8 +62,6 @@
6362
with_items: "{{ prometheus_file_sd.files }}"
6463
when:
6564
- prometheus_file_sd is defined and prometheus_file_sd.files | length > 0
66-
notify:
67-
- Reload prometheus config
6865

6966
- name: Configure Prometheus web
7067
ansible.builtin.copy:
@@ -118,14 +115,33 @@
118115
- host_file_sd.files | length > 0
119116

120117
- name: Validate prometheus config
121-
meta: noop
122-
notify:
123-
- Validate prometheus config
118+
vars:
119+
service: "{{ prometheus_services['prometheus'] }}"
120+
ansible.builtin.shell: |
121+
/usr/bin/docker run --rm -v {{ prometheus_config_dir }}:/etc/prometheus --entrypoint "/bin/promtool" \
122+
{{ prometheus_image }} check config /etc/prometheus/prometheus.yml && \
123+
/usr/bin/docker run --rm -v {{ prometheus_config_dir }}:/etc/prometheus --entrypoint "/bin/promtool" \
124+
{{ prometheus_image }} check web-config /etc/prometheus/web.yml
125+
when:
126+
- inventory_hostname in groups[service.group]
127+
- service.enabled | bool
124128

129+
# NOTE(kiennt26): Reloading the config by sending SIGHUP to the main process, instead of sending a POST request
130+
# to the /-/reload endpoint, because the latter doesn't work when the basic auth is enabled.
131+
# The password for the basic auth is encrypted using bcrypt, and I don't want to store the raw password
132+
# The SIGHUP signal is sent to the process with PID 1 in the container, which is the main process.
125133
- name: Reload prometheus config
126-
meta: noop
127-
notify:
128-
- Reload prometheus config
134+
vars:
135+
service: "{{ prometheus_services['prometheus'] }}"
136+
ansible.builtin.command: >
137+
/usr/bin/docker exec -i {{ prometheus_container_name }} kill -SIGHUP 1
138+
register: result
139+
retries: 5
140+
delay: 20
141+
until: result.rc == 0
142+
when:
143+
- inventory_hostname in groups[service.group]
144+
- service.enabled | bool
129145

130146
- name: Check prometheus containers
131147
community.general.docker_container:

0 commit comments

Comments
 (0)