ansible_playbooks/roles/node_exporter_install/tasks/main.yml

132 lines
4 KiB
YAML
Executable file

---
- name: Check current node exporter version.
ansible.builtin.command: "{{ node_exporter_install_node_exporter_bin_path }} --version"
failed_when: false
changed_when: false
register: node_exporter_version_check
- name: Download and unarchive node exporter into temporary location.
ansible.builtin.unarchive:
src: "{{ node_exporter_install_node_exporter_download_url }}"
dest: /tmp
remote_src: true
mode: '0755'
when: node_exporter_version_check.stdout is not defined or node_exporter_version_check.stdout | length == 0
register: node_exporter_download_check
- name: Move node exporter binary into place.
ansible.builtin.copy:
src: "/tmp/node_exporter-{{ node_exporter_install_node_exporter_version }}.linux-amd64/node_exporter"
dest: "{{ node_exporter_install_node_exporter_bin_path }}"
mode: '0755'
remote_src: true
when: node_exporter_download_check is changed or node_exporter_version_check.stdout | length == 0
ignore_errors: "{{ ansible_check_mode }}"
- name: Create node_exporter group (optional fixed GID)
ansible.builtin.group:
name: node_exporter
gid: "{{ node_exporter_install_node_exporter_gid | default(omit) }}"
state: present
when: "node_exporter_install_node_exporter_gid is defined"
- name: Create node_exporter user (optional fixed UID)
ansible.builtin.user:
name: node_exporter
shell: /sbin/nologin
create_home: false
uid: "{{ node_exporter_install_node_exporter_uid | default(omit) }}"
group: "{{ (node_exporter_install_node_exporter_gid is defined) | ternary('node_exporter', omit) }}"
state: present
- name: Copy the node exporter systemd unit file.
ansible.builtin.template:
src: node_exporter.service.j2
dest: /etc/systemd/system/node_exporter.service
mode: '0644'
register: node_exporter_service
- name: Create direcory for textfile collector
ansible.builtin.file:
path: /var/lib/node_exporter/textfile_collector
state: directory
mode: '0755'
owner: node_exporter
group: node_exporter
recurse: true
- name: Copy script for docker state check
ansible.builtin.copy:
src: files/docker-ps-metrics.sh
dest: /usr/local/bin/docker-ps-metrics.sh
owner: root
group: root
mode: '0744'
when: inventory_hostname is match("^PTAF")
- name: Create cron job for docker state check
ansible.builtin.cron:
name: "Collect Docker state check"
minute: "*/1"
job: "/usr/local/bin/docker-ps-metrics.sh"
user: root
when: inventory_hostname is match("^PTAF")
- name: Copy script shared memory check
ansible.builtin.copy:
src: files/collect-shm-metrics.sh
dest: /usr/local/bin/collect-shm-metrics.sh
owner: root
group: root
mode: '0744'
when: inventory_hostname is match("^PTAF")
- name: Create cron job for shared memory check
ansible.builtin.cron:
name: "Collect Docker shared memory check"
minute: "*/1"
job: "/usr/local/bin/collect-shm-metrics.sh"
user: root
when: inventory_hostname is match("^PTAF")
- name: Copy script for docker CPU check
ansible.builtin.copy:
src: files/docker-cpu-metrics.sh
dest: /usr/local/bin/docker-cpu-metrics.sh
owner: root
group: root
mode: '0744'
when: inventory_hostname is match("^PTAF")
- name: Add first cron job
ansible.builtin.cron:
name: "Docker CPU Metrics (every minute)"
minute: "*"
hour: "*"
day: "*"
month: "*"
weekday: "*"
job: "/usr/local/bin/docker-cpu-metrics.sh"
user: "root"
when: inventory_hostname is match("^PTAF")
- name: Add second cron jobcron
ansible.builtin.cron:
name: "Docker CPU Metrics (with 30s delay)"
minute: "*"
hour: "*"
day: "*"
month: "*"
weekday: "*"
job: "( sleep 30 && /usr/local/bin/docker-cpu-metrics.sh )"
user: "root"
when: inventory_hostname is match("^PTAF")
- name: Systemd restarted, enable node_exporter and restart node_exporter
ansible.builtin.systemd:
name: node_exporter
state: restarted
enabled: true
daemon_reload: true
when: node_exporter_service is changed
...