From ddc99c03cb7441d408becbb1f41a9633057cc52a Mon Sep 17 00:00:00 2001 From: s3lph Date: Tue, 14 Feb 2023 02:26:13 +0100 Subject: [PATCH] Add prometheus-ipmi-exporter role --- galaxy.yml | 2 +- roles/ipmi_exporter/defaults/main.yml | 25 +++++++++++++++++++ roles/ipmi_exporter/handlers/main.yml | 6 +++++ roles/ipmi_exporter/tasks/config.yml | 25 +++++++++++++++++++ roles/ipmi_exporter/tasks/install.yml | 15 +++++++++++ roles/ipmi_exporter/tasks/main.yml | 13 ++++++++++ .../etc/default/prometheus-ipmi-exporter.j2 | 13 ++++++++++ .../prometheus/ipmi-exporter/config.yaml.j2 | 4 +++ 8 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 roles/ipmi_exporter/defaults/main.yml create mode 100644 roles/ipmi_exporter/handlers/main.yml create mode 100644 roles/ipmi_exporter/tasks/config.yml create mode 100644 roles/ipmi_exporter/tasks/install.yml create mode 100644 roles/ipmi_exporter/tasks/main.yml create mode 100644 roles/ipmi_exporter/templates/etc/default/prometheus-ipmi-exporter.j2 create mode 100644 roles/ipmi_exporter/templates/etc/prometheus/ipmi-exporter/config.yaml.j2 diff --git a/galaxy.yml b/galaxy.yml index 78301ef..df949fa 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -7,7 +7,7 @@ namespace: s3lph name: prometheus # The version of the collection. Must be compatible with semantic versioning -version: 0.9.1 +version: 0.9.2 # The path to the Markdown (.md) readme file. This path is relative to the root of the collection readme: README.md diff --git a/roles/ipmi_exporter/defaults/main.yml b/roles/ipmi_exporter/defaults/main.yml new file mode 100644 index 0000000..bc581e1 --- /dev/null +++ b/roles/ipmi_exporter/defaults/main.yml @@ -0,0 +1,25 @@ +--- + +ipmi_exporter_additional_options: "" + +ipmi_exporter_config: | + modules: + default: + collectors: + - ipmi + - dcmi + - bmc + - chassis + - sel + collector_cmd: + ipmi: sudo + dcmi: sudo + bmc: sudo + chassis: sudo + sel: sudo + custom_args: + ipmi: ["/usr/sbin/ipmimonitoring"] + dcmi: ["/usr/sbin/ipmi-dcmi"] + bmc: ["/usr/sbin/bmc-info"] + chassis: ["/usr/sbin/ipmi-chassis"] + sel: ["/usr/sbin/ipmi-sel"] diff --git a/roles/ipmi_exporter/handlers/main.yml b/roles/ipmi_exporter/handlers/main.yml new file mode 100644 index 0000000..aa6e668 --- /dev/null +++ b/roles/ipmi_exporter/handlers/main.yml @@ -0,0 +1,6 @@ +--- + +- name: restart prometheus-ipmi-exporter + ansible.builtin.service: + name: prometheus-ipmi-exporter + state: restarted diff --git a/roles/ipmi_exporter/tasks/config.yml b/roles/ipmi_exporter/tasks/config.yml new file mode 100644 index 0000000..a4c843a --- /dev/null +++ b/roles/ipmi_exporter/tasks/config.yml @@ -0,0 +1,25 @@ +--- + +- name: Render /etc/prometheus/ipmi-exporter/config.yaml + ansible.builtin.template: + src: etc/prometheus/ipmi-exporter/config.yaml.j2 + dest: /etc/prometheus/ipmi-exporter/config.yaml + owner: root + group: root + mode: 0644 + notify: restart prometheus-ipmi-exporter + +- name: Render /etc/default/prometheus-ipmi-exporter + ansible.builtin.template: + src: etc/default/prometheus-ipmi-exporter.j2 + dest: /etc/default/prometheus-ipmi-exporter + owner: root + group: root + mode: 0644 + notify: restart prometheus-ipmi-exporter + +- name: Start and enable prometheus-ipmi-exporter + ansible.builtin.service: + name: prometheus-ipmi-exporter + state: started + enabled: yes diff --git a/roles/ipmi_exporter/tasks/install.yml b/roles/ipmi_exporter/tasks/install.yml new file mode 100644 index 0000000..6f035ff --- /dev/null +++ b/roles/ipmi_exporter/tasks/install.yml @@ -0,0 +1,15 @@ +--- + +- name: Add repo.s3lph.me key + ansible.builtin.apt_key: + url: https://repo.s3lph.me/debian/repo.s3lph.me.gpg + keyring: /etc/apt/trusted.gpg.d/repo.s3lph.me.gpg + +- name: Add repo.s3lph.me + ansible.builtin.apt_repository: + filename: repo.s3lph.me.list + repo: deb https://repo.s3lph.me/debian stable main + +- name: Install prometheus-ipmi-exporter from system package sources + ansible.builtin.apt: + name: prometheus-ipmi-exporter diff --git a/roles/ipmi_exporter/tasks/main.yml b/roles/ipmi_exporter/tasks/main.yml new file mode 100644 index 0000000..757f8e0 --- /dev/null +++ b/roles/ipmi_exporter/tasks/main.yml @@ -0,0 +1,13 @@ +--- + +- name: install prometheus-ipmi-exporter + ansible.builtin.import_tasks: install.yml + tags: + - "role::ipmi_exporter" + - "role::ipmi_exporter:install" + +- name: configure prometheus-ipmi-exporter + ansible.builtin.import_tasks: config.yml + tags: + - "role::ipmi_exporter" + - "role::ipmi_exporter:config" diff --git a/roles/ipmi_exporter/templates/etc/default/prometheus-ipmi-exporter.j2 b/roles/ipmi_exporter/templates/etc/default/prometheus-ipmi-exporter.j2 new file mode 100644 index 0000000..4b84931 --- /dev/null +++ b/roles/ipmi_exporter/templates/etc/default/prometheus-ipmi-exporter.j2 @@ -0,0 +1,13 @@ +{{ ansible_managed | comment }} + +ARGS="--config.file=/etc/prometheus/ipmi-exporter/config.yaml {{ ipmi_exporter_additional_options }}" + +# GLOBAL OPTIONS: +# --config.file=CONFIG.FILE Path to configuration file. +# --freeipmi.path=FREEIPMI.PATH Path to FreeIPMI executables (default: rely on $PATH). +# --web.listen-address=":9290" Address to listen on for web interface and telemetry. +# --web.config.file="" [EXPERIMENTAL] Path to configuration file that can enable TLS or authentication. +# --log.level=info Only log messages with the given severity or above. One of: [debug, info, warn, error] +# --log.format=logfmt Output format of log messages. One of: [logfmt, json] +# --version Show application version. + diff --git a/roles/ipmi_exporter/templates/etc/prometheus/ipmi-exporter/config.yaml.j2 b/roles/ipmi_exporter/templates/etc/prometheus/ipmi-exporter/config.yaml.j2 new file mode 100644 index 0000000..06c6055 --- /dev/null +++ b/roles/ipmi_exporter/templates/etc/prometheus/ipmi-exporter/config.yaml.j2 @@ -0,0 +1,4 @@ +--- +{{ ansible_managed | comment }} + +{{ ipmi_exporter_config }}