- name: check hardware resource usage gather_facts: no hosts: "{{target}}" become: "{{become}}" tasks: # # shared requirements # - name: install sysstat and check script deps package: name: - coreutils # check script - curl # slack webhook - dos2unix # slack webhook - procps # check script - sysstat # check script diff: true # # setup sysstat sa1/collect # - name: check whether sysstat-collect unit file exists shell: executable: /bin/bash cmd: "[[ -f /usr/lib/systemd/system/sysstat-collect.service ]] && echo there || echo absent" changed_when: false check_mode: false failed_when: false register: collect diff: true - debug: var=collect.stdout - debug: var=collect.stderr - name: start and enable sysstat service: name: sysstat state: started enabled: true diff: true # required for network stats - name: simply enable sysstat-collect service: name: sysstat-collect.service enabled: true when: collect.stdout == 'there' diff: true - name: start and enable sysstat collect timer service: name: sysstat-collect.timer state: started enabled: true when: collect.stdout == 'there' diff: true - name: enable sa1/collect lineinfile: path: /etc/default/sysstat regexp: '^ENABLED=' line: ENABLED="true" diff: true # # check scripts & webhooks # - name: deploy special filesystem trigger when there is ansible.builtin.copy: content: "{{check_hw_resources_conf}}\n" dest: /etc/check_hw_resources.conf diff: true when: check_hw_resources_conf is defined - set_fact: slack_host: "{{ slack_webhook_sev5 | regex_replace ('^[^:]+://', '') | regex_replace ('/hooks/.*$', '') }}" #when: slack_webhook_sev5 is defined - debug: var=slack_host #when: slack_webhook_sev5 is defined - name: slack webhook sev5 endpoint is reachable ansible.builtin.wait_for: host={{slack_host}} port=443 timeout=1 check_mode: false #when: slack_webhook_sev5 is defined - name: check scripts ansible.builtin.copy: src: "{{item}}" dest: "/usr/local/bin/{{item}}" mode: 0755 with_items: - check_hw_resources - check_hw_resources_wrapper diff: true - name: slack webhook5 script ansible.builtin.template: src: slack_webhook5.bash dest: /usr/local/bin/slack_webhook5.bash mode: 0755 diff: true #when: slack_webhook_sev5 is defined - name: hw resources incident monitoring cron job ansible.builtin.cron: name: "hw resources incident monitoring cron job" minute: "*/5" # wrapper remains silent by default job: "/usr/local/bin/check_hw_resources_wrapper" diff: true #when: slack_webhook_sev5 is defined #- name: remove decentralized cron job # ansible.builtin.cron: # name: "hw resources incident monitoring cron job" # state: absent # diff: true