# platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol,multi_platform_almalinux,multi_platform_rhv,multi_platform_sle,multi_platform_slmicro,multi_platform_ubuntu,multi_platform_debian
# reboot = true
# strategy = restrict
# complexity = low
# disruption = low

#
# What architecture are we on?
#
- name: Set architecture for audit {{{ NAME | join(", ") }}} tasks
  ansible.builtin.set_fact:
    audit_arch: "b64"
  when:
  - ansible_architecture == "aarch64" or
    ansible_architecture == "ppc64" or
    ansible_architecture == "ppc64le" or
    ansible_architecture == "s390x" or
    ansible_architecture == "x86_64"

{{% for EXIT_CODE in ["EACCES","EPERM"] %}}
- name: Perform remediation of Audit rules for {{{ NAME | join(", ") }}} {{{ EXIT_CODE}}} for 32bit platform
  block:
    {{{ ansible_audit_augenrules_add_syscall_rule(
      action_arch_filters="-a always,exit -F arch=b32",
      other_filters="-F exit=-"~EXIT_CODE,
      auid_filters="-F auid>="~auid~" -F auid!=unset",
      syscalls=NAME,
      key="access",
      syscall_grouping=SYSCALL_GROUPING,
      )|indent(4) }}}
    {{{ ansible_audit_auditctl_add_syscall_rule(
      action_arch_filters="-a always,exit -F arch=b32",
      other_filters="-F exit=-"~EXIT_CODE,
      auid_filters="-F auid>="~auid~" -F auid!=unset",
      syscalls=NAME,
      key="access",
      syscall_grouping=SYSCALL_GROUPING,
      )|indent(4) }}}

- name: Perform remediation of Audit rules for {{{ NAME | join(", ") }}} {{{ EXIT_CODE }}} for 64bit platform
  block:
    {{{ ansible_audit_augenrules_add_syscall_rule(
      action_arch_filters="-a always,exit -F arch=b64",
      other_filters="-F exit=-"~EXIT_CODE,
      auid_filters="-F auid>="~auid~" -F auid!=unset",
      syscalls=NAME,
      key="access",
      syscall_grouping=SYSCALL_GROUPING,
      )|indent(4) }}}
    {{{ ansible_audit_auditctl_add_syscall_rule(
      action_arch_filters="-a always,exit -F arch=b64",
      other_filters="-F exit=-"~EXIT_CODE,
      auid_filters="-F auid>="~auid~" -F auid!=unset",
      syscalls=NAME,
      key="access",
      syscall_grouping=SYSCALL_GROUPING,
      )|indent(4) }}}
  when: audit_arch == "b64"
{{% endfor %}}
