Skip to content
Snippets Groups Projects
main.yaml 2.24 KiB
Newer Older
---
- 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

- name: Collect facts about system services
  ansible.builtin.service_facts:

- name: Configure firewalld to allow prometheus
  ansible.posix.firewalld:
    port: "{{ node_exporter_port }}/tcp"
    zone: public
    state: enabled
    permanent: true
  when:
    - "'firewalld.service' in ansible_facts.services"
    - ansible_facts.services["firewalld.service"].state == "running"

- name: Enable and start firewalld
  ansible.builtin.service:
    name: firewalld
    enabled: true
    state: restarted
  when:
    - "'firewalld.service' in ansible_facts.services"
    - ansible_facts.services["firewalld.service"].state == "running"