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.

À propos du projet

Apache 2.x for RHEL/CentOS, Debian/Ubuntu, SLES and Solaris

Installer
ansible-galaxy install gcoop-libre.apache
Licence
gpl-2.0
Téléchargements
320