From 65111b14fb80fc7d2c960df6129f9b8b213c4784 Mon Sep 17 00:00:00 2001 From: Christian Krause Date: Mon, 4 Sep 2023 11:07:13 +0200 Subject: [PATCH] enhancement(alertmanager): allows using multiple web listen addresses Signed-off-by: Christian Krause --- roles/alertmanager/molecule/alternative/molecule.yml | 4 +++- .../molecule/alternative/tests/test_alternative.py | 1 + roles/alertmanager/templates/alertmanager.service.j2 | 9 +++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/roles/alertmanager/molecule/alternative/molecule.yml b/roles/alertmanager/molecule/alternative/molecule.yml index a1c4e387..81590156 100644 --- a/roles/alertmanager/molecule/alternative/molecule.yml +++ b/roles/alertmanager/molecule/alternative/molecule.yml @@ -6,7 +6,9 @@ provisioner: alertmanager_binary_local_dir: '/tmp/alertmanager-linux-amd64' alertmanager_config_dir: /opt/am/etc alertmanager_db_dir: /opt/am/lib - alertmanager_web_listen_address: '127.0.0.1:9093' + alertmanager_web_listen_address: + - '127.0.0.1:9093' + - '127.0.1.1:9093' alertmanager_web_external_url: 'http://localhost:9093/alertmanager' alertmanager_resolve_timeout: 10m alertmanager_slack_api_url: "http://example.com" diff --git a/roles/alertmanager/molecule/alternative/tests/test_alternative.py b/roles/alertmanager/molecule/alternative/tests/test_alternative.py index ebf17a1b..7872265c 100644 --- a/roles/alertmanager/molecule/alternative/tests/test_alternative.py +++ b/roles/alertmanager/molecule/alternative/tests/test_alternative.py @@ -47,6 +47,7 @@ def test_service(host): @pytest.mark.parametrize("sockets", [ "tcp://127.0.0.1:9093", + "tcp://127.0.1.1:9093", "tcp://127.0.0.1:6783" ]) def test_socket(host, sockets): diff --git a/roles/alertmanager/templates/alertmanager.service.j2 b/roles/alertmanager/templates/alertmanager.service.j2 index 9499c355..34ffdba7 100644 --- a/roles/alertmanager/templates/alertmanager.service.j2 +++ b/roles/alertmanager/templates/alertmanager.service.j2 @@ -33,7 +33,16 @@ ExecStart={{ _alertmanager_binary_install_dir }}/alertmanager \ {% endfor %} {{ pre }}-config.file={{ alertmanager_config_dir }}/alertmanager.yml \ {{ pre }}-storage.path={{ alertmanager_db_dir }} \ +{% if alertmanager_version is version('0.25.0', '>=') and + alertmanager_web_listen_address is iterable and + alertmanager_web_listen_address is not mapping and + alertmanager_web_listen_address is not string %} +{% for address in alertmanager_web_listen_address %} + {{ pre }}-web.listen-address={{ address }} \ +{% endfor %} +{% else %} {{ pre }}-web.listen-address={{ alertmanager_web_listen_address }} \ +{% endif %} {{ pre }}-web.external-url={{ alertmanager_web_external_url }}{% for flag, flag_value in alertmanager_config_flags_extra.items() %} \ {{ pre }}-{{ flag }}={{ flag_value }}{% endfor %}