Role that installs apache https://httpd.apache.org
Go to file
Andrea Dell'Amico 03bf17004d tasks: split the deb and EL branches
The whole httpd.conf is templated on EL and left to the package on deb, which is
how each family expects it: on deb the role manages ports.conf, the default
virtualhost and a2enmod.

Modules on EL are not managed with apache2_module. That Ansible module requires
the a2enmod and a2dismod binaries and EL ships neither, so the module list of the
absorbed role could never be applied there. The role now writes the MPM selection
into conf.modules.d/00-mpm.conf and leaves the individual LoadModule lines to the
distribution, with apache_el_extra_modules for what the distribution does not
load by default.

The letsencrypt hook is named after the service, apache2 or httpd, so the acme
client reloads the right one. The httpd reload and httpd restart handlers are
kept alongside the apache2 ones for the roles that notify those names.

python-passlib becomes python3-passlib: the python2 package is gone from every
supported release.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018sTDubHhviDWKZLtAtZXTW
2026-09-04 19:54:37 +00:00
defaults defaults: one apache_* namespace for both families 2026-09-04 19:54:37 +00:00
files Change the letsencrypt env path 2023-03-24 14:42:27 +01:00
handlers tasks: split the deb and EL branches 2026-09-04 19:54:37 +00:00
meta Import the old role. 2020-06-02 15:48:56 +02:00
tasks tasks: split the deb and EL branches 2026-09-04 19:54:37 +00:00
templates templates: the EL httpd.conf and MPM selection, with the typo fixed 2026-09-04 19:54:37 +00:00
tests Initial commit 2020-05-28 14:54:59 +02:00
vars Initial commit 2020-05-28 14:54:59 +02:00
.gitignore Initial commit 2020-05-28 14:54:59 +02:00
LICENSE Initial commit 2020-05-28 14:54:59 +02:00
README.md Import the old role. 2020-06-02 15:48:56 +02:00

README.md

Role Name

A role that installs and configures the apache web server http://httpd.apache.org

Role Variables

The most important variables are listed below:

apache_service_enabled: True
apache_user: www-data
apache_pkg_state: latest
apache_group: '{{ apache_user }}'
apache_from_ppa: False
apache_ppa_repo: 'ppa:ondrej/apache2'

apache_listen_ports:
  - 80
  - '{{ apache_ssl_port }}'

# Possible choices: event, prefork (the old ones), worker (the threaded version), itm
apache_mpm_mode: worker

apache_packages:
  - apache2
  - apache2-utils
  - libapache2-mod-xsendfile
  - unzip
  - zip

apache_modules_packages:
  - 'apache2-mpm-{{ apache_mpm_mode }}'

# Only one can be present at the same time. It needs to be listed as the last one
apache_worker_modules:
#  - { name: 'mpm_itm', state: 'absent' }
  - { name: 'mpm_event', state: 'absent' }
  - { name: 'mpm_prefork', state: 'absent' }
  - { name: 'mpm_{{ apache_mpm_mode }}', state: 'present' }

# apache RPAF is needed to obtain the real client addresses when behind a reverse proxy
apache_rpaf_install: False

apache_default_modules:
  - headers
  - rewrite
  - expires
  - xsendfile

apache_ssl_modules_enabled: True
apache_ssl_port: 443
apache_ssl_modules:
  - ssl
  - socache_shmcb
apache_http_proxy_modules_enabled: False
apache_http_proxy_modules:
  - proxy
  - proxy_ajp
  - proxy_http

apache_status_module: True  
apache_status_location: '/server-status'
apache_status_allowed_hosts:
  - 127.0.0.1/8

apache_info_module: True
apache_info_location: '/server-info'
apache_info_allowed_hosts:
  - 127.0.0.1/8

apache_basic_auth: False
apache_basic_auth_single_file: True
apache_basic_auth_dir: /etc/apache2/auth
apache_basic_auth_file: '{{ apache_basic_auth_dir }}/htpasswd'

apache_basic_auth_modules:
  - auth_basic
  - authn_file
  - authz_user

# Put them in a vault file. auth_file is optional. Not used when apache_basic_auth_single_file is true
apache_basic_users:
  - { username:'', password:'', state:'present,absent', auth_file:'path_to_file' }

#
apache_additional_packages: False
apache_additional_packages_list:
#   - libapache2-mod-uwsgi
#   - ...
#
# Set this variable to load the modules you need
apache_additional_modules: False
apache_additional_modules_list: []
#  -
#  -

apache_letsencrypt_managed: True
apache_letsencrypt_proxy_modules:
  - proxy
  - proxy_http

apache_letsencrypt_proxy_conf:
  - letsencrypt-proxy.conf

Dependencies

None

License

EUPL-1.2

Author Information

Andrea DellAmico, andrea.dellamico@isti.cnr.it