--- - 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 ...