gcoop-libre.apache
Apache 2.x
Un rôle Ansible qui installe Apache 2.x sur RHEL/CentOS, Debian/Ubuntu, SLES et Solaris.
Exigences
Le rôle ne gère pas les fichiers de certificat et de clé pour les sites utilisant SSL/TLS.
Si vous avez besoin d'Apache avec PHP, vous pouvez ajouter les paquets PHP à la variable apache_packages
. Sinon, vous pouvez utiliser un autre rôle, comme le rôle geerlingguy.php
ou geerlingguy.apache-php-fpm
si vous préférez utiliser PHP en tant que FPM plutôt qu'en module Apache.
Variables du Rôle
Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut (voir defaults/main.yml
):
apache_enablerepo: ''
Le dépôt à utiliser lors de l'installation d'Apache (uniquement utilisé sur les systèmes RHEL/CentOS). Si vous souhaitez des versions ultérieures d'Apache que celles disponibles dans les dépôts fondamentaux du système d'exploitation, utilisez un dépôt comme EPEL.
apache_listen_ip: '*'
apache_listen_port: 80
apache_listen_port_ssl: 443
L'adresse IP et les ports sur lesquels Apache doit écouter. Cela est utile si vous avez un autre service (comme un proxy inverse) écoutant sur le port 80 ou 443 et que vous devez changer les valeurs par défaut.
apache_keepalive: true
apache_keepalive_requests: 500
apache_keepalive_timeout: 5
Cette propriété active les connexions HTTP persistantes et permet de personnaliser le délai d'expiration et le nombre maximum de demandes.
apache_prefork_server_limit: 256
apache_prefork_start_servers: 5
apache_prefork_min_spare_servers: 5
apache_prefork_max_spare_servers: 10
apache_prefork_max_clients: 256
apache_prefork_max_requests_per_child: 0
La configuration du module MPM du serveur. Ces propriétés s'appliquent au module MPM Prefork et au module MPM Worker. Sur Apache 2.4 sur Debian, vous pouvez configurer les modes MPM avec des valeurs différentes, car il a des fichiers séparés.
apache_worker_server_limit: 16
apache_worker_start_servers: 3
apache_worker_min_spare_threads: 75
apache_worker_max_spare_threads: 250
apache_worker_max_clients: 400
apache_worker_max_requests_per_child: 0
apache_worker_thread_limit: 64
apache_worker_threads_per_child: 25
La configuration du module MPM Worker. Cela n'est disponible que pour Apache 2.4 sur Debian GNU/Linux.
apache_event_server_limit: 16
apache_event_start_servers: 3
apache_event_min_spare_threads: 75
apache_event_max_spare_threads: 250
apache_event_max_clients: 400
apache_event_max_requests_per_child: 0
apache_event_thread_limit: 64
apache_event_threads_per_child: 25
La configuration du module MPM Event. Cela n'est disponible que pour Apache 2.4 sur Debian GNU/Linux.
apache_remove_default_aliases: True
Supprime les alias par défaut qui viennent avec la configuration par défaut d'Apache.
apache_base_dir: '/var/www'
Le répertoire de base où les sites Web seront alloués. Cette valeur est utilisée avec les trois suivantes pour générer le Document Root pour les hôtes virtuels qui n'ont pas de Document Root explicite.
apache_web_subdir: 'web'
apache_ssl_subdir: 'ssl'
apache_private_subdir: 'private'
Le sous-répertoire pour les fichiers web HTTP, celui pour les fichiers web HTTPS et le sous-répertoire pour les fichiers htpasswd. Si un hôte virtuel n'a pas de Document Root, le rôle génère trois répertoires :
apache_base_dir/SITENAME/apache_web_subdir
apache_base_dir/SITENAME/apache_ssl_subdir
apache_base_dir/SITENAME/apache_private_subdir
apache_create_vhosts: true apache_vhosts_filename: 'vhosts.conf'
S'il est défini sur true, un fichier de configuration vhosts global et un fichier par hôte virtuel, gérés par les variables de ce rôle (voir ci-dessous), seront créés et placés dans le dossier de configuration d'Apache. S'il est défini sur false, vous pouvez placer vos propres fichiers vhosts dans le dossier de configuration d'Apache et ignorer ceux ajoutés par ce rôle (même s'ils sont pratiques, mais plus basiques).
apache_remove_default_vhost: false
Sur Debian/Ubuntu, un hôte virtuel par défaut est inclus dans la configuration d'Apache. Mettez ceci sur true
pour supprimer ce fichier de configuration par défaut.
apache_global_vhost_settings: |
DirectoryIndex index.php index.html
# Ajoutez d'autres paramètres globaux sur les lignes suivantes.
Vous pouvez ajouter ou écraser des paramètres de configuration Apache globaux dans le fichier vhosts fourni par le rôle (supposant que apache_create_vhosts
est vrai) en utilisant cette variable. Par défaut, elle ne définit que la configuration DirectoryIndex.
apache_global_vhost_access_log_format_combined: '%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'
apache_global_vhost_access_log_format_proxy: '%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'
Avec ces propriétés, vous pouvez personnaliser le format de log combiné et le format de log utilisé pour enregistrer les requêtes effectuées via un proxy.
apache_global_vhost_aliases:
- name: /images
dest: /var/www/images
Liste des alias à ajouter au vhost.conf. Ils seront disponibles pour tous les hôtes virtuels. apache_create_vhosts
doit être activé.
apache_global_vhost_custom_errors:
- code: error-code
action: error-action
Personnalisations pour les pages d'erreur Apache. Vous pouvez lire les valeurs d'action
dans la documentation Apache.
apache_vhosts:
- servername: 'local.dev'
serveralias:
- 'alias1.local'
- 'alias2.local'
serveradmin: webmaster@localhost
documentroot: '/var/www/html'
enabled: true
separate_logs: true
separate_logs_proxy_format: true
custom_errors:
- code: error-code
action: error-action
frame_options: SAMEORIGIN
deflate: true
deflate_dont_vary: User-Agent
fileetag: true
aliases:
- name: alias-url
dest: alias-path
setenvif:
- attribute: 'X-Forwarded-For'
pattern: '(.*)'
var: 'ENV_VAR'
value: 'true'
redirect_to_https: false
allowoverride: 'All'
rewritebase: '/'
custom_rewrites:
- pattern: regex
substitution: text
flags: '[R=301,L]'
conditions:
- test_string: '%{HTTP_HOST}'
pattern: '^old\.site\.com$'
flags: '[NC]'
redirect_to_servername: True
exclude_from_redirect:
- 'valid.alias.com'
redirect_to_file: '/index.php'
include_htaccess: False
documentroot_extra_parameters: 'Configuration personnalisée du Document Root'
restricted_access:
- path: '/secret'
regex: false
all: false
ips:
- '127.0.0.1'
- '192.168.0.1'
hosts:
- 'www.site.com'
env_variables:
- 'ENV_VAR'
htpasswd: '/.htpasswd'
extra_parameters: 'Configuration personnalisée de l\'hôte virtuel'
Ajoutez un ensemble de propriétés par hôte virtuel. La seule requise est servername
. S'il n'y a pas de documentroot, il sera généré comme décrit précédemment.
Toutes les requêtes à un ServerAlias seront redirigées vers le ServerName avec un code 301, sauf pour les alias spécifiés dans la propriété exclude_from_redirect
.
Les chemins à l'intérieur de restricted_access
doivent être relatifs au Document Root. Si l'hôte virtuel n'a pas de Document Root explicite, le fichier htpasswd sera dans le répertoire apache_private_subdir.
Le |
désigne un bloc scalaire multiligne en YAML, donc les sauts de ligne sont préservés dans le fichier de configuration résultant.
apache_vhosts_ssl: []
Aucun hôte virtuel SSL n'est configuré par défaut, mais vous pouvez les ajouter en utilisant le même modèle que apache_vhosts
, avec quelques directives supplémentaires :
apache_vhosts_ssl:
- servername: 'local.dev'
certificate_file: '/path/to/certificate.crt'
certificate_key_file: '/path/to/certificate.key'
certificate_chain_file: '/path/to/certificate_chain.crt'
sts: true
sts_max_age: '63072000'
sts_subdomains: true
redirect_to_http: false
Ces trois premières propriétés définissent les chemins des certificats. Les trois suivantes permettent de remplacer la configuration STS globale. La dernière redirige toutes les requêtes vers le host HTTP.
apache_vhosts_ordered: False
Cette propriété oblige Apache à charger les hôtes virtuels dans l'ordre où ils apparaissent dans les listes apache_vhosts
et apache_vhosts_ssl
. Autrement, Apache traite les fichiers de configuration par ordre alphabétique.
D'autres directives SSL peuvent être gérées avec d'autres variables de rôle liées à SSL.
apache_ssl_protocol: 'All -SSLv2 -SSLv3'
apache_ssl_cipher_suite: 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'
Les protocoles SSL et les suites de chiffrement qui sont utilisés/autorisés lorsque des clients établissent des connexions sécurisées à votre serveur. Ce sont des valeurs par défaut sûres, mais pour une sécurité, une performance et/ou une compatibilité maximales, vous devrez peut-être ajuster ces paramètres. Vous pourrez trouver des informations sur Cipherli.st : Ciphers forts pour Apache, nginx et Lighttpd.
apache_frame_options: SAMEORIGIN
Cette propriété définit la politique de sécurité des sites lorsqu'ils sont chargés dans un cadre ou une iframe. Vous pouvez consulter les options valides dans cet article Wikipedia. Vous pouvez également utiliser False
ou no
ici pour ne pas définir l'en-tête du tout. Cette configuration globale peut être remplacée par hôte virtuel.
apache_sts: true
apache_sts_max_age: '63072000'
apache_sts_subdomains: true
La sécurité stricte de transport HTTP est activée par défaut, avec une durée maximale de 1 an et les sous-domaines inclus. Ces configurations globales peuvent être remplacées par hôte virtuel.
apache_mods_enabled:
- rewrite
- ssl
apache_mods_disabled: []
Ces propriétés sont uniquement pour Debian et Ubuntu. Quels modules Apache activer ou désactiver. Consultez le répertoire mods-available
à l'intérieur du répertoire de configuration d'Apache (/etc/apache2/mods-available
par défaut) pour tous les modules disponibles.
apache_packages:
- [spécifique à la plateforme]
La liste des paquets à installer. Cela par défaut à un ensemble de paquets spécifiques à la plateforme pour les systèmes RedHat ou basés sur Debian (voir vars/RedHat.yml
et vars/Debian.yml
pour les valeurs par défaut).
apache_state: started
Définissez l'état initial du démon Apache à appliquer lorsque ce rôle est exécuté. Cela doit généralement rester started
, mais vous pouvez le définir sur stopped
si vous devez corriger la configuration Apache pendant l'exécution d'un playbook ou si vous ne souhaitez pas qu'Apache soit démarré lors de l'exécution de ce rôle.
apache_ignore_missing_ssl_certificate: true
Si vous souhaitez créer des hôtes virtuels SSL uniquement lorsque le certificat de l'hôte virtuel est présent (par exemple, lors de l'utilisation de Let's Encrypt), définissez apache_ignore_missing_ssl_certificate
sur false
. Dans ce cas, vous devrez peut-être exécuter votre playbook plus d'une fois pour que tous les hôtes virtuels soient configurés (si une autre partie du playbook génère les certificats SSL).
Dépendances
Aucune.
Exemple de Playbook
- hosts: webservers
vars_files:
- vars/main.yml
roles:
- gcoop-libre.apache
Dans vars/main.yml
:
apache_listen_port: 8080
apache_vhosts:
- servername: example.com
Licence
GPLv2
Informations sur l'Auteur
Ce rôle a été créé en 2016 par gcoop Cooperativa de Software Libre.
Apache 2.x for RHEL/CentOS, Debian/Ubuntu, SLES and Solaris
ansible-galaxy install gcoop-libre.apache