--- - name: Install required packages apt: name: - wget - tar state: present update_cache: yes tags: node_exporter - name: Create node_exporter user user: name: node_exporter system: yes shell: /bin/false home: /nonexistent comment: "Node Exporter Service User" tags: node_exporter - name: Download Node Exporter get_url: url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz" dest: "/tmp/node_exporter-{{ node_exporter_version }}.tar.gz" timeout: 30 validate_certs: no tags: node_exporter - name: Extract Node Exporter unarchive: src: "/tmp/node_exporter-{{ node_exporter_version }}.tar.gz" dest: "/tmp/" remote_src: yes creates: "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64" tags: node_exporter - name: Install Node Exporter binary copy: src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64/node_exporter" dest: "/usr/local/bin/node_exporter" owner: node_exporter group: node_exporter mode: '0755' remote_src: yes tags: node_exporter - name: Create systemd service for LXC template: src: node_exporter.service.j2 dest: /etc/systemd/system/node_exporter.service owner: root group: root mode: '0644' tags: node_exporter - name: Create textfile collector directory file: path: /var/lib/node_exporter/textfile_collector state: directory owner: node_exporter group: node_exporter mode: '0755' tags: node_exporter - name: Clean up temp files file: path: "/tmp/node_exporter-{{ node_exporter_version }}.tar.gz" state: absent tags: node_exporter - name: Clean up extracted directory file: path: "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64" state: absent tags: node_exporter - name: Reload systemd systemd: daemon_reload: yes tags: node_exporter - name: Enable and start Node Exporter systemd: name: node_exporter enabled: yes state: started daemon_reload: yes tags: node_exporter - name: Configure UFW for Node Exporter ufw: rule: allow port: "{{ node_exporter_port }}" proto: tcp comment: "Node Exporter metrics" tags: node_exporter - name: Verify Node Exporter is running wait_for: port: "{{ node_exporter_port }}" host: "{{ ansible_host }}" delay: 3 timeout: 60 tags: node_exporter