Ansible local facts

If jo is installed and this Bash script is present and executable at /etc/ansible/facts.d/a2query.fact

#!/usr/bin/env bash

set -euo pipefail

A2QUERY=/usr/sbin/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

Then Ansible facts will contain something like this:

ansible_facts:
    ansible_local:
        a2query:
            conf_enabled:
            - other-vhosts-access-log
            - localized-error-pages
            - security
            - webarch
            - charset
            - le
            modules_enabled:
            - authz_core
            - rewrite
            - socache_shmcb
            - http2
            - cgid
            - include
            - authz_host
            - remoteip
            - mpm_event
            - proxy_fcgi
            - alias
            - auth_basic
            - ssl
            - authz_user
            - proxy_wstunnel
            - status
            - proxy
            - suexec
            - autoindex
            - authn_file
            - proxy_http
            - setenvif
            - fcgid
            - dir
            - env
            - headers
            - reqtimeout
            - authn_core
            - deflate
            - mime
            - access_compat
            - filter
            - expires
            - negotiation
            mpm: event
            sites_enabled:
            - foobar
            - localhost
            - wiki
            version: 2.4.53

And as a result these config details should be able to be used to make this role faster...

Edited by Chris Croome