Feature: Add a fingerprint string to the system log to indicate when the role began successfully, and when the role finished successfully. The fingerprint string indicates the role name, a timestamp, and the platform. Reason: Users can see when the role was used and if it was used successfully. This information from the system log can be collected by log scanners and aggregators for further analysis. Result: The role logs fingerprints to the system log. This also adds a test to check if the fingerprints were written upon a successful role invocation. Signed-off-by: Rich Megginson <rmeggins@redhat.com>
147 lines
4.2 KiB
YAML
147 lines
4.2 KiB
YAML
# SPDX-License-Identifier: MIT
|
|
---
|
|
- name: Set platform/version specific variables
|
|
include_tasks: tasks/set_vars.yml
|
|
|
|
# Examples of some tasks:
|
|
- name: Ensure required packages are installed
|
|
ansible.builtin.package:
|
|
name: "{{ __aide_packages }}"
|
|
state: present
|
|
use: "{{ (__aide_is_ostree | d(false)) |
|
|
ternary('ansible.posix.rhel_rpm_ostree', omit) }}"
|
|
|
|
- name: Get AIDE version
|
|
ansible.builtin.command:
|
|
cmd: aide --version
|
|
register: __aide_version_register
|
|
changed_when: false
|
|
|
|
# assumes the version starts with a digit and goes to the end of the line
|
|
- name: Set AIDE version
|
|
set_fact:
|
|
aide_version: "{{ __output | regex_search('(?m)^A[iI][dD][eE] (\\d.*)$', '\\1') | first }}"
|
|
vars:
|
|
__output: "{{ __aide_version_register.stdout if __aide_version_register.stdout | length > 0
|
|
else __aide_version_register.stderr }}"
|
|
|
|
- name: Ensure required services are enabled and started
|
|
ansible.builtin.service:
|
|
name: "{{ item }}"
|
|
state: started
|
|
enabled: true
|
|
loop: "{{ __aide_services }}"
|
|
|
|
- name: Generate "/etc/{{ __aide_config }}"
|
|
ansible.builtin.template:
|
|
src: "{{ aide_config_template }}"
|
|
dest: "/etc/{{ __aide_config }}"
|
|
mode: "0400"
|
|
when: aide_config_template is not none
|
|
|
|
# - name: Print Header
|
|
# ansible.builtin.command: head /etc/aide.conf || true
|
|
|
|
- name: Initialize AIDE database
|
|
when: aide_init | bool
|
|
block:
|
|
- name: Initialize AIDE database
|
|
ansible.builtin.command:
|
|
cmd: aide --init
|
|
changed_when: true
|
|
|
|
- name: Copy AIDE reference database
|
|
ansible.builtin.copy:
|
|
remote_src: true
|
|
src: "{{ __aide_db_new_name }}"
|
|
dest: "{{ __aide_db_name }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0440"
|
|
force: true
|
|
when: not aide_fetch_db | bool
|
|
|
|
- name: Remove remote AIDE database file
|
|
ansible.builtin.file:
|
|
path: "{{ __aide_db_new_name }}"
|
|
state: absent
|
|
when: not aide_fetch_db | bool
|
|
|
|
- name: Fetch AIDE database
|
|
when: aide_fetch_db | bool
|
|
block:
|
|
- name: Fetch AIDE database
|
|
ansible.builtin.fetch:
|
|
src: "{{ __aide_db_new_name }}"
|
|
dest: "{{ aide_db_fetch_dir }}"
|
|
|
|
- name: Remove remote AIDE database file
|
|
ansible.builtin.file:
|
|
path: "{{ __aide_db_new_name }}"
|
|
state: absent
|
|
|
|
- name: Check AIDE integrity
|
|
when: aide_check | bool
|
|
block:
|
|
- name: Copy AIDE reference database
|
|
ansible.builtin.copy:
|
|
src: >-
|
|
{{ aide_db_fetch_dir }}/{{ inventory_hostname }}{{ __aide_db_new_name }}
|
|
dest: "{{ __aide_db_name }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0440"
|
|
when: aide_fetch_db | bool
|
|
|
|
- name: Check against AIDE reference database
|
|
ansible.builtin.command:
|
|
cmd: aide --check
|
|
changed_when: false
|
|
|
|
- name: Update AIDE database and fetch it
|
|
when: aide_update | bool
|
|
block:
|
|
- name: Update AIDE database
|
|
ansible.builtin.command:
|
|
cmd: aide --update
|
|
register: __aide_update_result
|
|
failed_when: __msg not in __aide_update_result.stdout
|
|
changed_when: true
|
|
vars:
|
|
__msg: >-
|
|
AIDE found NO differences between database and filesystem. Looks okay!!
|
|
|
|
- name: Fetch AIDE database
|
|
ansible.builtin.fetch:
|
|
src: "{{ __aide_db_new_name }}"
|
|
dest: "{{ aide_db_fetch_dir }}"
|
|
|
|
- name: Remove remote AIDE database file
|
|
ansible.builtin.file:
|
|
path: "{{ __aide_db_new_name }}"
|
|
state: absent
|
|
|
|
- name: Update aide check cron configuration if necessary
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/crontab
|
|
regexp: "^.* root {{ __aide_bin_path }} --check"
|
|
line: "{{ aide_cron_interval }} root {{ __aide_bin_path }} --check"
|
|
when:
|
|
- aide_cron_check is not none
|
|
- aide_cron_check | bool
|
|
|
|
- name: Remove aide check cron configuration if necessary
|
|
ansible.builtin.lineinfile:
|
|
path: /etc/crontab
|
|
state: absent
|
|
regexp: "^.* root {{ __aide_bin_path }} --check"
|
|
when:
|
|
- aide_cron_check is not none
|
|
- not aide_cron_check | bool
|
|
|
|
- name: Record role success fingerprint
|
|
sr_fingerprint:
|
|
sr_message: >-
|
|
success system_role:aide ansible_version={{ ansible_version.full }}
|
|
{{ ansible_facts['distribution'] }}-{{ ansible_facts['distribution_version'] }}
|