diff --git a/ansible/roles/install_node_exporter/tasks/main.yaml b/ansible/roles/install_node_exporter/tasks/main.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3bee4a737d298234cb23f10d104dc646f5bba070 --- /dev/null +++ b/ansible/roles/install_node_exporter/tasks/main.yaml @@ -0,0 +1,60 @@ +--- +- name: Download node_exporter binary + ansible.builtin.get_url: + url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_ver }}/{{ node_exporter_filename }}.tar.gz" + dest: "/tmp/{{ node_exporter_filename }}.tar.gz" + +- name: Extract node_exporter + ansible.builtin.unarchive: + src: "/tmp/{{ node_exporter_filename }}.tar.gz" + dest: "/tmp" + remote_src: yes + +- name: Create system group for user account {{ node_exporter_group }} + ansible.builtin.group: + name: "{{ node_exporter_group }}" + system: true + state: present + +- name: Create system user account {{ node_exporter_user }} + ansible.builtin.user: + name: "{{ node_exporter_user }}" + comment: Prometheus node_exporter system account + group: "{{ node_exporter_group }}" + system: true + home: /var/lib/node_exporter + create_home: false + shell: /sbin/nologin + state: present + +- name: Copy node_exporter binary + ansible.builtin.copy: + src: "/tmp/{{ node_exporter_filename }}/node_exporter" + dest: /usr/local/bin/node_exporter + remote_src: yes + owner: root + group: root + mode: 0755 + +- name: Copy systemd unit file + ansible.builtin.template: + src: node_exporter.service.j2 + dest: /etc/systemd/system/node_exporter.service + owner: root + group: root + mode: '0644' + +- name: Clean up /tmp + ansible.builtin.file: + path: "/tmp/{{ item }}" + state: absent + loop: + - "{{ node_exporter_filename }}.tar.gz" + - "{{ node_exporter_filename }}" + +- name: Restart node_exporter service + ansible.builtin.systemd: + daemon_reload: yes + name: node_exporter + state: restarted + enabled: true diff --git a/ansible/roles/install_node_exporter/templates/node_exporter.service.j2 b/ansible/roles/install_node_exporter/templates/node_exporter.service.j2 new file mode 100644 index 0000000000000000000000000000000000000000..fddb82d9e0f74fe4382ac62e94fbb3a25ddb9dda --- /dev/null +++ b/ansible/roles/install_node_exporter/templates/node_exporter.service.j2 @@ -0,0 +1,12 @@ +[Unit] +Description=Node Exporter +After=network.target + +[Service] +User={{ node_exporter_user }} +Group={{ node_exporter_group }} +Type=simple +ExecStart=/usr/local/bin/node_exporter --web.listen-address=:{{ node_exporter_port }} --collector.filesystem.mount-points-exclude "^/(dev|proc|run/user/.+|run/credentials/.+|sys|var/lib/docker/.+)($|/)" --collector.filesystem.fs-types-exclude "^(autofs|binfmt_misc|bpf|cgroup|tmpfs|sunrpc|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$" + +[Install] +WantedBy=multi-user.target