Files
semaphore/playbooks/install-node-exporter.yml

80 lines
2.4 KiB
YAML

- name: Install Node Exporter from binary
hosts: all
become: true
vars:
node_exporter_version: "1.9.1"
node_exporter_user: "node_exporter"
node_exporter_listen: "0.0.0.0:9100"
node_exporter_bin_dir: "/usr/local/bin"
node_exporter_service_path: "/etc/systemd/system/node_exporter.service"
node_exporter_arch_map:
x86_64: "amd64"
aarch64: "arm64"
armv7l: "armv7"
node_exporter_arch: "{{ node_exporter_arch_map[ansible_architecture] | default('amd64') }}"
tasks:
- name: Debug detected architecture
debug:
msg: "Detected architecture: {{ ansible_architecture }} -> using {{ node_exporter_arch }} build"
- name: Ensure node_exporter user exists
user:
name: "{{ node_exporter_user }}"
shell: /usr/sbin/nologin
system: true
create_home: false
- name: Download Node Exporter archive
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.tar.gz"
mode: "0644"
- name: Extract Node Exporter binary
unarchive:
src: "/tmp/node_exporter.tar.gz"
dest: "/tmp/"
remote_src: true
- name: Move Node Exporter binary into place
command: mv /tmp/node_exporter-{{ node_exporter_version }}.linux-{{ node_exporter_arch }}/node_exporter {{ node_exporter_bin_dir }}/node_exporter
- name: Set binary permissions
file:
path: "{{ node_exporter_bin_dir }}/node_exporter"
mode: "0755"
owner: root
group: root
- name: Create systemd service
copy:
dest: "{{ node_exporter_service_path }}"
content: |
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
User={{ node_exporter_user }}
ExecStart={{ node_exporter_bin_dir }}/node_exporter --web.listen-address={{ node_exporter_listen }}
Restart=always
[Install]
WantedBy=multi-user.target
notify: Restart node_exporter
- name: Enable and start node_exporter
systemd:
name: node_exporter
enabled: true
state: started
daemon_reload: true
handlers:
- name: Restart node_exporter
systemd:
name: node_exporter
state: restarted