defaults: one apache_* namespace for both families

The collection had two roles for the same service: this one, deb only, and an EL
only 'httpd' role in a library that is no longer maintained.

The namespace is apache_*. The httpd_* names are gone rather than aliased: an
alias that silently stops matching is the failure mode this merge is meant to
remove. httpd_main_packages becomes apache_packages, httpd_ssl_enabled becomes
apache_ssl_modules_enabled, everything else is a mechanical rename.

Packages, service name, config directory, user and group carry the distribution
test inside the default itself, the convention already used by the postgresql
role, so they stay overridable from host_vars and group_vars. The package list
uses a single Jinja expression rather than an {% if %} block, which would render
the list as its repr.

apache_servertokens keeps the value the absorbed role used, OS, rather than the
safer Prod: changing it here would be a silent change for every host that
inherits the default.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018sTDubHhviDWKZLtAtZXTW
This commit is contained in:
Andrea Dell'Amico 2026-09-04 19:54:37 +00:00
parent 8b6bade923
commit 2ec983c1da
1 changed files with 64 additions and 3 deletions

View File

@ -1,6 +1,6 @@
---
apache_service_enabled: True
apache_user: www-data
apache_user: '{% if ansible_distribution_file_variety == "Debian" %}www-data{% else %}apache{% endif %}'
apache_pkg_state: present
apache_group: '{{ apache_user }}'
apache_from_ppa: False
@ -13,12 +13,24 @@ apache_listen_ports:
# Possible choices: event, prefork (the old ones), worker (the threaded version), itm
apache_mpm_mode: worker
apache_packages:
apache_packages: "{{ apache_deb_packages if ansible_distribution_file_variety == 'Debian' else apache_el_packages }}"
apache_deb_packages:
- apache2
- apache2-utils
- libapache2-mod-xsendfile
- unzip
- zip
apache_el_packages:
- httpd
- httpd-tools
# EL only: mod_ssl is a separate package, on deb it is part of apache2
apache_ssl_packages:
- mod_ssl
apache_service_name: '{% if ansible_distribution_file_variety == "Debian" %}apache2{% else %}httpd{% endif %}'
apache_base_conf_dir: '{% if ansible_distribution_file_variety == "Debian" %}/etc/apache2{% else %}/etc/httpd{% endif %}'
apache_base_document_root: '{% if ansible_distribution_file_variety == "Debian" %}/var/www{% else %}/var/www{% endif %}'
apache_document_root: '{{ apache_base_document_root }}/html'
apache_modules_packages:
- 'apache2-mpm-{{ apache_mpm_mode }}'
@ -62,7 +74,7 @@ apache_info_allowed_hosts:
apache_basic_auth: False
apache_basic_auth_single_file: True
apache_basic_auth_dir: /etc/apache2/auth
apache_basic_auth_dir: '{{ apache_base_conf_dir }}/auth'
apache_basic_auth_file: '{{ apache_basic_auth_dir }}/htpasswd'
apache_basic_auth_modules:
@ -91,3 +103,52 @@ apache_letsencrypt_proxy_modules:
apache_letsencrypt_proxy_conf:
- letsencrypt-proxy.conf
#
# EL only settings. They come from the httpd role this one absorbs, renamed from
# httpd_* to apache_*: on EL the whole httpd.conf is templated, while on deb the
# packaged apache2.conf is left alone and only ports.conf and the modules are
# managed.
#
apache_server_admin: root@localhost
apache_base_document_root_override: 'None'
apache_base_document_root_access: 'denied'
apache_document_root_options: 'Indexes FollowSymLinks'
apache_document_root_override: 'None'
apache_document_root_access: 'granted'
apache_cgi_enabled: False
apache_sendfile_enabled: 'on'
apache_mmap_enabled: 'on'
apache_use_canonicalname: 'off'
# The httpd role this one absorbs used OS. Prod is the safer value, but changing
# it here would be a silent change for every host that inherits the default.
apache_servertokens: 'OS'
apache_hostname_lookups: 'off'
apache_default_charset: 'UTF-8'
apache_languages:
- en
- it
apache_timeout: 60
apache_keepalive_enabled: True
apache_keepalive_timeout: 5
apache_keepalive_requests: 100
# MPM tuning, used by the EL httpd.conf template
apache_startservers: 8
apache_maxclients: 300
apache_min_spare: 25
apache_max_spare: 75
apache_max_requests_per_child: 0
apache_threads_per_child: 25
apache_serverlimit: 256
# Modules on EL are not managed with a2enmod: the apache2_module Ansible module
# requires the a2enmod and a2dismod binaries, which the EL httpd package does not
# ship, so the module list of the old role could never be applied there. What EL
# actually needs is the MPM selection, written into conf.modules.d/00-mpm.conf,
# plus an optional file for modules the distribution does not load by default.
# Every entry is emitted as: LoadModule <identifier> modules/<file>
apache_el_extra_modules: []
# - { identifier: 'jk_module', file: 'mod_jk.so' }