From 2553ebb2aa3a03d2859f0fdf725b465a43dce95a Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 26 Aug 2023 04:51:11 +0200 Subject: prometheus/exporter/snmp: switch to new config format (0.23.0+) --- .../exporter/register/templates/snmp/probe.yml.j2 | 3 ++ .../prometheus/exporter/snmp/defaults/main.yml | 3 +- .../prometheus/exporter/snmp/tasks/main.yml | 39 ++++++++++++++++++++-- .../exporter/snmp/templates/config.yml.j2 | 9 ++++- 4 files changed, 49 insertions(+), 5 deletions(-) (limited to 'roles/monitoring/prometheus') diff --git a/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2 b/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2 index 3ecf129a..a50a32ff 100644 --- a/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2 +++ b/roles/monitoring/prometheus/exporter/register/templates/snmp/probe.yml.j2 @@ -3,6 +3,9 @@ instance: '{{ target.instance }}' __param_target: '{{ target.config.target }}' __param_module: '{{ target.config.module }}' +{% if 'auth' in target.config %} + __param_auth: '{{ target.config.auth }}' +{% endif %} {% for name, value in prometheus_target_labels.items() %} {{ name }}: '{{ value }}' {% endfor %} diff --git a/roles/monitoring/prometheus/exporter/snmp/defaults/main.yml b/roles/monitoring/prometheus/exporter/snmp/defaults/main.yml index a8c67a23..45cff8aa 100644 --- a/roles/monitoring/prometheus/exporter/snmp/defaults/main.yml +++ b/roles/monitoring/prometheus/exporter/snmp/defaults/main.yml @@ -5,4 +5,5 @@ # prometheus_exporter_snmp_config: ## this extends the default config -# prometheus_exporter_snmp_config_extra: +# prometheus_exporter_snmp_auths_extra: +# prometheus_exporter_snmp_modules_extra: diff --git a/roles/monitoring/prometheus/exporter/snmp/tasks/main.yml b/roles/monitoring/prometheus/exporter/snmp/tasks/main.yml index 8fc93f0b..66b6f6b7 100644 --- a/roles/monitoring/prometheus/exporter/snmp/tasks/main.yml +++ b/roles/monitoring/prometheus/exporter/snmp/tasks/main.yml @@ -28,14 +28,47 @@ dest: /etc/prometheus/exporter/snmp/config.yml notify: reload prometheus-snmp-exporter -- name: extend the default configuration +- name: add extra auths to default configuration when: - prometheus_exporter_snmp_config is not defined - - prometheus_exporter_snmp_config_extra is defined + - prometheus_exporter_snmp_auths_extra is defined blockinfile: path: /etc/prometheus/exporter/snmp/config.yml + insertbefore: '^modules:' + marker: '# {mark} ANSIBLE MANAGED BLOCK auths-extra' block: | - {{ prometheus_exporter_snmp_config_extra | to_nice_yaml(indent=2) }} + {{ ' ' }}{{ prometheus_exporter_snmp_auths_extra | to_nice_yaml(indent=2) | indent(2) }} + notify: reload prometheus-snmp-exporter + +- name: remove extra auths from default configuration + when: + - prometheus_exporter_snmp_config is not defined + - prometheus_exporter_snmp_auths_extra is not defined + blockinfile: + path: /etc/prometheus/exporter/snmp/config.yml + marker: '# {mark} ANSIBLE MANAGED BLOCK auths-extra' + state: absent + notify: reload prometheus-snmp-exporter + +- name: add extra modules to default configuration + when: + - prometheus_exporter_snmp_config is not defined + - prometheus_exporter_snmp_modules_extra is defined + blockinfile: + path: /etc/prometheus/exporter/snmp/config.yml + marker: '# {mark} ANSIBLE MANAGED BLOCK modules-extra' + block: | + {{ ' ' }}{{ prometheus_exporter_snmp_modules_extra | to_nice_yaml(indent=2) | indent(2) }} + notify: reload prometheus-snmp-exporter + +- name: remove extra modules from default configuration + when: + - prometheus_exporter_snmp_config is not defined + - prometheus_exporter_snmp_modules_extra is not defined + blockinfile: + path: /etc/prometheus/exporter/snmp/config.yml + marker: '# {mark} ANSIBLE MANAGED BLOCK modules-extra' + state: absent notify: reload prometheus-snmp-exporter - name: generate systemd service unit diff --git a/roles/monitoring/prometheus/exporter/snmp/templates/config.yml.j2 b/roles/monitoring/prometheus/exporter/snmp/templates/config.yml.j2 index c75b8469..0f84b705 100644 --- a/roles/monitoring/prometheus/exporter/snmp/templates/config.yml.j2 +++ b/roles/monitoring/prometheus/exporter/snmp/templates/config.yml.j2 @@ -1,3 +1,10 @@ # {{ ansible_managed }} -{{ prometheus_exporter_snmp_config | combine(prometheus_exporter_snmp_config_extra | default({})) | to_nice_yaml(indent=2) }} +{% set config_extra = dict() %} +{% if prometheus_exporter_snmp_auths_extra is defined %} +{% config_extra.update{'auths': prometheus_exporter_snmp_auths_extra } %} +{% endif %} +{% if prometheus_exporter_snmp_modules_extra is defined %} +{% config_extra.update{'modules': prometheus_exporter_snmp_modules_extra } %} +{% endif %} +{{ prometheus_exporter_snmp_config | combine(config_extra) | to_nice_yaml(indent=2) }} -- cgit v1.2.3