From ff3f1e7984202896c259d0bcc645d6f55346cf4b Mon Sep 17 00:00:00 2001 From: Till! Date: Tue, 21 Jul 2020 14:26:26 +0200 Subject: [PATCH] Add amtool configuration on alertmanager host (#135) [minor] release --- README.md | 3 +++ defaults/main.yml | 9 +++++++++ tasks/configure.yml | 11 ++++++++++- tasks/install.yml | 1 + templates/amtool.yml.j2 | 4 ++++ vars/main.yml | 3 +++ 6 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 templates/amtool.yml.j2 diff --git a/README.md b/README.md index c249517..901e6e3 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,9 @@ All variables which can be overridden are stored in [defaults/main.yml](defaults | `alertmanager_receivers` | [] | A list of notification receivers. Configuration same as in [official docs](https://prometheus.io/docs/alerting/configuration/#) | | `alertmanager_inhibit_rules` | [] | List of inhibition rules. Same as in [official docs](https://prometheus.io/docs/alerting/configuration/#inhibit_rule) | | `alertmanager_route` | {} | Alert routing. More in [official docs](https://prometheus.io/docs/alerting/configuration/#) | +| `alertmanager_amtool_config_file` | amtool.yml.j2 | Template for amtool config | +| `alertmanager_amtool_config_alertmanager_url` | `alertmanager_web_external_url` | URL of the alertmanager | +| `alertmanager_amtool_config_output` | extended | Extended output, use `""` for simple output. | ## Example diff --git a/defaults/main.yml b/defaults/main.yml index d997823..83a12e8 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -113,3 +113,12 @@ alertmanager_route: {} # - match: # owner: team-Y # receiver: team-Y-pager + +# The template for amtool's configuration +alertmanager_amtool_config_file: 'amtool.yml.j2' + +# Location (URL) of the alertmanager +alertmanager_amtool_config_alertmanager_url: "{{ alertmanager_web_external_url }}" + +# Extended output of `amtool` commands, use '' for less verbosity +alertmanager_amtool_config_output: 'extended' diff --git a/tasks/configure.yml b/tasks/configure.yml index 4fffef5..eb27c30 100644 --- a/tasks/configure.yml +++ b/tasks/configure.yml @@ -1,4 +1,13 @@ --- +- name: copy amtool config + template: + force: true + src: "{{ alertmanager_amtool_config_file }}" + dest: "{{ _alertmanager_amtool_config_dir }}/config.yml" + owner: alertmanager + group: alertmanager + mode: 0644 + - name: copy alertmanager config template: force: true @@ -7,7 +16,7 @@ owner: alertmanager group: alertmanager mode: 0644 - validate: "{{ _alertmanager_binary_install_dir }}/amtool --alertmanager.url= check-config %s" + validate: "{{ _alertmanager_binary_install_dir }}/amtool check-config %s" notify: - restart alertmanager diff --git a/tasks/install.yml b/tasks/install.yml index 9f19adf..a7b9856 100644 --- a/tasks/install.yml +++ b/tasks/install.yml @@ -24,6 +24,7 @@ - "{{ alertmanager_config_dir }}" - "{{ alertmanager_config_dir }}/templates" - "{{ alertmanager_db_dir }}" + - "{{ _alertmanager_amtool_config_dir }}" - block: - name: download alertmanager binary to local folder diff --git a/templates/amtool.yml.j2 b/templates/amtool.yml.j2 new file mode 100644 index 0000000..51d3ae2 --- /dev/null +++ b/templates/amtool.yml.j2 @@ -0,0 +1,4 @@ +alertmanager.url: "{{ alertmanager_amtool_config_alertmanager_url }}" +{%if alertmanager_amtool_config_output != "" %} +output: "{{ alertmanager_amtool_config_output }}" +{% endif %} diff --git a/vars/main.yml b/vars/main.yml index eec4e51..ad87dc8 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -8,3 +8,6 @@ go_arch_map: go_arch: "{{ go_arch_map[ansible_architecture] | default(ansible_architecture) }}" _alertmanager_binary_install_dir: '/usr/local/bin' + +# The expected location of the amtool configuration file +_alertmanager_amtool_config_dir: '/etc/amtool'