diff --git a/defaults/main.yml b/defaults/main.yml
index e60788a846e06bc880fc45ef179de8708216037a..daccedbc09de0a5c6d79e28c40a600d1ae52e12f 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -28,6 +28,7 @@ apache_dhparam_path: /etc/apache2/dhparam.pem
 apache_dhparam_size: 2048
 apache_localhost_port: 80
 apache_ulimit: 65536
+apache_a2query: /usr/sbin/a2query
 apache_packages_present:
   - lynx
   # - libapache2-mod-fcgid
diff --git a/tasks/local_facts.yml b/tasks/local_facts.yml
new file mode 100644
index 0000000000000000000000000000000000000000..83d6cd8a41df24e88f3e90818b2541a96ad79dd3
--- /dev/null
+++ b/tasks/local_facts.yml
@@ -0,0 +1,34 @@
+---
+- name: Ansible local facts
+  block:
+
+    - name: Required packages present
+      ansible.builtin.apt:
+        pkg:
+          - jo
+        state: present
+
+    - name: Ansible facts.d directory present
+      ansible.builtin.file:
+        path: /etc/ansible/facts.d
+        recurse: true
+        state: directory
+        mode: 0700
+        owner: root
+        group: root
+
+    - name: Ansible a2query local facts script present
+      ansible.builtin.template:
+        src: a2query.fact.j2
+        dest: /etc/ansible/facts.d/a2query.fact
+        mode: 0700
+        owner: root
+        group: root
+
+    - name: Re-read Ansible local facts
+      ansible.builtin.setup:
+        filter: ansible_local
+
+  tags:
+    - quota
+...
diff --git a/tasks/main.yml b/tasks/main.yml
index ba12d958f2e75b5ecd613b9de1e859abd10eebe2..b302f19ad6a4b5e1e3d8fe23d0fe4e4fc9bf3cc2 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -28,6 +28,9 @@
         update_cache: false
       when: ( apache_packages_present is defined ) and ( apache_packages_present != [] )
 
+    - name: Include local facts tasks
+      include_tasks: local_facts.yml
+
     - name: Include Apache checks
       include_tasks: checks.yml
 
diff --git a/templates/a2query.fact.j2 b/templates/a2query.fact.j2
new file mode 100644
index 0000000000000000000000000000000000000000..6ac25bf4feb084fcffcefaab54733eee25c15b8a
--- /dev/null
+++ b/templates/a2query.fact.j2
@@ -0,0 +1,17 @@
+#!/usr/bin/env bash
+
+# {{ ansible_managed }}
+
+set -euo pipefail
+IFS=$'\n'
+
+A2QUERY="{{ apache_a2query }}"
+
+if [[ -f "${A2QUERY}" ]]; then
+  jo state=present version=$(${A2QUERY} -v) mpm=$(${A2QUERY} -M) \
+     conf_enabled=$(${A2QUERY} -c | awk '{ print $1 }' | sort | jo -a) \
+     modules_enabled=$(${A2QUERY} -m | awk '{ print $1 }' | sort | jo -a) \
+     sites_enabled=$(${A2QUERY} -s | awk '{ print $1 }' | sort | jo -a)
+else
+  jo state=absent
+fi