--- - name: Install Prometheus Node Exporter hosts: all become: yes tasks: - name: Install dependencies apt: name: - libffi-dev - python3 - python3-pip - python3-setuptools state: latest update_cache: true - name: Upgrade pip pip: name: pip state: latest - name: Install required pip packages pip: name: - pyopenssl state: present - name: Create node_exporter group group: name: "node_exporter" state: present system: true - name: Create node_exporter user user: name: "node_exporter" group: "node_exporter" comment: "Node Exporter" shell: /bin/false home: "/usr/sbin/nologin" system: true state: present - name: Create config directory file: path: "/etc/node_exporter" state: directory owner: "node_exporter" group: "node_exporter" - name: Generate an OpenSSL private key openssl_privatekey: path: /etc/node_exporter/node_exporter.key owner: "node_exporter" group: "node_exporter" - name: Generate an OpenSSL Certificate Signing Request openssl_csr: path: /etc/node_exporter/node_exporter.csr privatekey_path: /etc/node_exporter/node_exporter.key common_name: localhost owner: "node_exporter" group: "node_exporter" - name: Generate a Self Signed OpenSSL certificate openssl_certificate: path: /etc/node_exporter/node_exporter.crt privatekey_path: /etc/node_exporter/node_exporter.key csr_path: /etc/node_exporter/node_exporter.csr provider: selfsigned owner: "node_exporter" group: "node_exporter" - name: Copy config template: src: config.yml.j2 dest: /etc/node_exporter/config.yml owner: "node_exporter" group: "node_exporter" mode: 0755 - name: Download and unzip Node Exporter unarchive: src: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz" dest: /tmp/ remote_src: yes validate_certs: no - name: Move the binary to the installation directory 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: true - name: Remove archive file: path: /tmp/node_exporter-{{ node_exporter_version }}.linux-amd64/ state: absent - name: Install service template: src: node_exporter.service.j2 dest: /etc/systemd/system/node_exporter.service owner: root group: root mode: 0755 - name: Restart service and pickup changes systemd: state: restarted daemon_reload: yes name: node_exporter.service enabled: yes