Provisions prom.w5isp.com (10.0.15.31) as the home-cluster monitoring host. Prometheus 3.6.0 scrapes the Talos cluster API/nodes/cAdvisor via an external SA token; Grafana ships with the Prometheus datasource pre-provisioned. host_vars opens 9090/9093/9100/3000 to 10.0.0.0/16 plus SSH from the home LAN so the firewall role doesn't lock out admin access.
75 lines
2.4 KiB
YAML
75 lines
2.4 KiB
YAML
---
|
|
# Installs Prometheus node_exporter from the upstream tarball and runs it under systemd.
|
|
|
|
- name: Create node_exporter group
|
|
ansible.builtin.group:
|
|
name: "{{ node_exporter_group }}"
|
|
system: true
|
|
state: present
|
|
|
|
- name: Create node_exporter user
|
|
ansible.builtin.user:
|
|
name: "{{ node_exporter_user }}"
|
|
group: "{{ node_exporter_group }}"
|
|
system: true
|
|
shell: /usr/sbin/nologin
|
|
home: /nonexistent
|
|
create_home: false
|
|
state: present
|
|
|
|
- name: Check installed node_exporter version
|
|
ansible.builtin.command: "{{ node_exporter_install_dir }}/node_exporter --version"
|
|
register: node_exporter_installed
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: Set fact for installed version
|
|
ansible.builtin.set_fact:
|
|
node_exporter_needs_install: >-
|
|
{{
|
|
node_exporter_installed.rc != 0
|
|
or (node_exporter_version not in (node_exporter_installed.stderr | default('')))
|
|
and (node_exporter_version not in (node_exporter_installed.stdout | default('')))
|
|
}}
|
|
|
|
- name: Download node_exporter tarball
|
|
ansible.builtin.get_url:
|
|
url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-{{ node_exporter_arch }}.tar.gz"
|
|
dest: "/tmp/node_exporter-{{ node_exporter_version }}.tar.gz"
|
|
mode: "0644"
|
|
when: node_exporter_needs_install
|
|
|
|
- name: Extract node_exporter
|
|
ansible.builtin.unarchive:
|
|
src: "/tmp/node_exporter-{{ node_exporter_version }}.tar.gz"
|
|
dest: /tmp/
|
|
remote_src: true
|
|
creates: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ node_exporter_arch }}/node_exporter"
|
|
when: node_exporter_needs_install
|
|
|
|
- name: Install node_exporter binary
|
|
ansible.builtin.copy:
|
|
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-{{ node_exporter_arch }}/node_exporter"
|
|
dest: "{{ node_exporter_install_dir }}/node_exporter"
|
|
remote_src: true
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
when: node_exporter_needs_install
|
|
notify: Restart node_exporter
|
|
|
|
- name: Install node_exporter systemd unit
|
|
ansible.builtin.template:
|
|
src: node_exporter.service.j2
|
|
dest: /etc/systemd/system/node_exporter.service
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
notify: Restart node_exporter
|
|
|
|
- name: Enable and start node_exporter
|
|
ansible.builtin.systemd:
|
|
name: node_exporter
|
|
enabled: true
|
|
state: started
|
|
daemon_reload: true
|