Node exporter installation

---
- name: Install node_exporter
  hosts: machines
  become: true  
  vars:
    node_exporter_url: "https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz"
    node_exporter_tarball: "{{ node_exporter_url | basename | regex_replace('\\.tar\\.gz$', '') }}"

  tasks:
    - name: Create a group for node_exporter
      group:
        name: node_exporter
        system: true
      notify: Restart node_exporter

    - name: Make a user for node_exporter
      user:
        name: node_exporter
        shell: /sbin/nologin
        system: true
        create_home: no
        group: node_exporter  
      notify: Restart node_exporter

    - name: Check if Node Exporter binary exists
      stat:
        path: /opt/node_exporter/node_exporter  
      register: binary

    - name: Unarchive a file that needs to be downloaded 
      unarchive:
        src: "{{ node_exporter_url }}"
        dest: /opt
        group: node_exporter
        owner: node_exporter
        remote_src: yes
      when: not binary.stat.exists
      notify: Download the binnary 

    - name: Create a symbolic link to node_exporter
      file:
        src: "/opt/{{ node_exporter_tarball }}"
        dest: /opt/node_exporter
        owner: node_exporter
        state: link
      notify: Restart node_exporter

    - name: Firewall set for 9100 to be accessible
      firewalld:
        port: 9100/tcp
        permanent: yes
        state: enabled
        immediate: yes
      failed_when: false
      ignore_errors: true

    - name: Copy over the service file
      copy:
        src: node_exporter.service
        dest: /etc/systemd/system/node_exporter.service
      notify: Restart node_exporter

    - name: Create directory for textfile collector
      file:
        path: /var/lib/node_exporter/textfile_collector
        state: directory
        owner: node_exporter
        group: node_exporter
        mode: '0755'
      notify: Restart node_exporter

    - name: Create sysconfig file for node_exporter
      file:
        path: /etc/sysconfig/node_exporter
        state: file
        owner: node_exporter
        group: node_exporter
        mode: '0644'
      notify: Restart node_exporter

    - name: Start the node_exporter
      systemd:
        name: node_exporter
        state: started
        daemon_reload: yes
        enabled: yes
      notify: Restart node_exporter

  handlers:
    - name: Restart node_exporter
      systemd:
        name: node_exporter
        state: restarted