fix: support new config file options, expose aide_version
Cause: The aide role custom config test is using the old configuration options on newer EL9 systems which use AIDE version 0.17 and later. Consequence: The test gives errors like "ERROR: /etc/aide.conf:12: unexpected character" and the test fails. Fix: The role will now determine the AIDE version, set the new aide_version variable, and use this variable to determine the old or new style configuration. Result: The aide system role can process custom config on all supported AIDE versions. See https://github.com/aide/aide/blob/master/ChangeLog#L241 Signed-off-by: Rich Megginson <rmeggins@redhat.com>
This commit is contained in:
committed by
Richard Megginson
parent
21e441ee90
commit
189c7a6f85
@@ -28,7 +28,7 @@ only.
|
|||||||
|
|
||||||
This variable takes a string to specify a path where the custom template for aide.conf is located.
|
This variable takes a string to specify a path where the custom template for aide.conf is located.
|
||||||
|
|
||||||
To be sure that everething is correct, template needs to start with following snippet:
|
To be sure that everything is correct, template needs to start with following snippet:
|
||||||
|
|
||||||
``` jinja
|
``` jinja
|
||||||
{{ ansible_managed | comment }}
|
{{ ansible_managed | comment }}
|
||||||
@@ -39,6 +39,11 @@ Default: `null`
|
|||||||
|
|
||||||
Type: `string`
|
Type: `string`
|
||||||
|
|
||||||
|
**NOTE:** The config file format has changed somewhat in AIDE version 0.17.
|
||||||
|
The role exports a variable `aide_version` which you can use, and see
|
||||||
|
`examples/aide-custom.conf.j2` for an example of how to conditionally define
|
||||||
|
configuration which will work across multiple versions of AIDE.
|
||||||
|
|
||||||
### aide_db_fetch_dir
|
### aide_db_fetch_dir
|
||||||
|
|
||||||
This variable takes a string to specify the directory on the Ansible Control
|
This variable takes a string to specify the directory on the Ansible Control
|
||||||
@@ -113,6 +118,24 @@ Default: `0 12 * * *`
|
|||||||
|
|
||||||
Type: `string`
|
Type: `string`
|
||||||
|
|
||||||
|
### Variables Exported by the Role
|
||||||
|
|
||||||
|
The role will export the following variables:
|
||||||
|
|
||||||
|
`aide_version` - string - this is the AIDE version you can use if you need to do
|
||||||
|
something which depends on the version e.g. in your custom template you can do:
|
||||||
|
|
||||||
|
```jinja2
|
||||||
|
{% if aide_version is version("0.17.0", ">=") %}
|
||||||
|
# The location of the database to be read.
|
||||||
|
database_in=file:@@{DBDIR}/aide.db.gz
|
||||||
|
... other new style parameters ...
|
||||||
|
{% else %}
|
||||||
|
database=file:@@{DBDIR}/aide.db.gz
|
||||||
|
... other old style parameters ...
|
||||||
|
{% endif %}
|
||||||
|
```
|
||||||
|
|
||||||
## Example Playbook
|
## Example Playbook
|
||||||
|
|
||||||
Including an example of how to use your role (for instance, with variables
|
Including an example of how to use your role (for instance, with variables
|
||||||
|
|||||||
@@ -5,13 +5,18 @@
|
|||||||
@@define DBDIR /var/lib/aide
|
@@define DBDIR /var/lib/aide
|
||||||
@@define LOGDIR /var/log/aide
|
@@define LOGDIR /var/log/aide
|
||||||
|
|
||||||
{% if ansible_facts['os_family'] == 'RedHat' and
|
# Get the AIDE version first using command 'aide --version' and then check if it is greater than or equal to 0.17.0
|
||||||
ansible_facts['distribution_major_version'] in ['8','9'] %}
|
{% if aide_version is version("0.17.0", ">=") %}
|
||||||
# The location of the database to be read.
|
|
||||||
database=file:@@{DBDIR}/aide.db.gz
|
|
||||||
{% else %}
|
|
||||||
# The location of the database to be read.
|
# The location of the database to be read.
|
||||||
database_in=file:@@{DBDIR}/aide.db.gz
|
database_in=file:@@{DBDIR}/aide.db.gz
|
||||||
|
# Default.
|
||||||
|
log_level=warning
|
||||||
|
report_level=changed_attributes
|
||||||
|
{% else %}
|
||||||
|
# The location of the database to be read.
|
||||||
|
database=file:@@{DBDIR}/aide.db.gz
|
||||||
|
# Default.
|
||||||
|
verbose=5
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
# The location of the database to be written.
|
# The location of the database to be written.
|
||||||
@@ -22,16 +27,6 @@ database_out=file:@@{DBDIR}/aide.db.new.gz
|
|||||||
# Whether to gzip the output to database
|
# Whether to gzip the output to database
|
||||||
gzip_dbout=yes
|
gzip_dbout=yes
|
||||||
|
|
||||||
{% if ansible_facts['os_family'] == 'RedHat' and
|
|
||||||
ansible_facts['distribution_major_version'] in ['8','9'] %}
|
|
||||||
# Default.
|
|
||||||
verbose=5
|
|
||||||
{% else %}
|
|
||||||
# Default.
|
|
||||||
log_level=warning
|
|
||||||
report_level=changed_attributes
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
report_url=file:@@{LOGDIR}/aide.log
|
report_url=file:@@{LOGDIR}/aide.log
|
||||||
report_url=stdout
|
report_url=stdout
|
||||||
#report_url=stderr
|
#report_url=stderr
|
||||||
|
|||||||
@@ -11,6 +11,20 @@
|
|||||||
use: "{{ (__aide_is_ostree | d(false)) |
|
use: "{{ (__aide_is_ostree | d(false)) |
|
||||||
ternary('ansible.posix.rhel_rpm_ostree', omit) }}"
|
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
|
- name: Ensure required services are enabled and started
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
name: "{{ item }}"
|
name: "{{ item }}"
|
||||||
|
|||||||
@@ -5,13 +5,17 @@
|
|||||||
@@define DBDIR /var/lib/aide
|
@@define DBDIR /var/lib/aide
|
||||||
@@define LOGDIR /var/log/aide
|
@@define LOGDIR /var/log/aide
|
||||||
|
|
||||||
{% if ansible_facts['os_family'] == 'RedHat' and
|
{% if aide_version is version('0.17.0', '>=') %}
|
||||||
ansible_facts['distribution_major_version'] in ['8','9'] %}
|
|
||||||
# The location of the database to be read.
|
|
||||||
database=file:@@{DBDIR}/aide.db.gz
|
|
||||||
{% else %}
|
|
||||||
# The location of the database to be read.
|
# The location of the database to be read.
|
||||||
database_in=file:@@{DBDIR}/aide.db.gz
|
database_in=file:@@{DBDIR}/aide.db.gz
|
||||||
|
# Default.
|
||||||
|
log_level=warning
|
||||||
|
report_level=changed_attributes
|
||||||
|
{% else %}
|
||||||
|
# The location of the database to be read.
|
||||||
|
database=file:@@{DBDIR}/aide.db.gz
|
||||||
|
# Default.
|
||||||
|
verbose=5
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
# The location of the database to be written.
|
# The location of the database to be written.
|
||||||
@@ -22,16 +26,6 @@ database_out=file:@@{DBDIR}/aide.db.new.gz
|
|||||||
# Whether to gzip the output to database
|
# Whether to gzip the output to database
|
||||||
gzip_dbout=yes
|
gzip_dbout=yes
|
||||||
|
|
||||||
{% if ansible_facts['os_family'] == 'RedHat' and
|
|
||||||
ansible_facts['distribution_major_version'] in ['8','9'] %}
|
|
||||||
# Default.
|
|
||||||
verbose=5
|
|
||||||
{% else %}
|
|
||||||
# Default.
|
|
||||||
log_level=warning
|
|
||||||
report_level=changed_attributes
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
report_url=file:@@{LOGDIR}/aide.log
|
report_url=file:@@{LOGDIR}/aide.log
|
||||||
report_url=stdout
|
report_url=stdout
|
||||||
#report_url=stderr
|
#report_url=stderr
|
||||||
|
|||||||
Reference in New Issue
Block a user