geerlingguy.apache

Rôle Ansible : Apache 2.x

CI

Un rôle Ansible qui installe Apache 2.x sur RHEL/CentOS, Debian/Ubuntu, SLES et Solaris.

Exigences

Si vous utilisez SSL/TLS, vous devez fournir vos propres fichiers de certificat et de clé. Vous pouvez générer un certificat auto-signé avec une commande comme openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt.

Si vous utilisez Apache avec PHP, je recommande d'utiliser le rôle geerlingguy.php pour installer PHP, et vous pouvez soit utiliser mod_php (en ajoutant le paquet approprié, par exemple libapache2-mod-php5 pour Ubuntu, à php_packages), soit utiliser également geerlingguy.apache-php-fpm pour connecter Apache à PHP via FPM. Consultez le README de ce rôle pour plus d'informations.

Variables du rôle

Les variables disponibles sont listées ci-dessous, avec les valeurs par défaut (voir defaults/main.yml) :

apache_enablerepo: ""

Le dépôt à utiliser lors de l'installation d'Apache (utilisé uniquement sur les systèmes RHEL/CentOS). Si vous souhaitez des versions plus récentes d'Apache que celles disponibles dans les dépôts principaux de l'OS, utilisez un dépôt comme EPEL (qui peut être installé avec le rôle geerlingguy.repo-epel).

apache_listen_ip: "*"
apache_listen_port: 80
apache_listen_port_ssl: 443

L'adresse IP et les ports sur lesquels Apache doit écouter. Utile si vous avez un autre service (comme un proxy inverse) écoutant sur le port 80 ou 443 et que vous devez changer les paramètres par défaut.

apache_create_vhosts: true
apache_vhosts_filename: "vhosts.conf"
apache_vhosts_template: "vhosts.conf.j2"

S'il est défini sur true, un fichier de vhosts, géré par les variables de ce rôle (voir ci-dessous), sera créé et placé dans le dossier de configuration d'Apache. S'il est défini sur false, vous pouvez placer votre propre fichier de vhosts dans le dossier de configuration d'Apache et ignorer celui ajouté par ce rôle. Vous pouvez également remplacer le modèle utilisé et définir un chemin vers votre propre modèle, si vous devez personnaliser davantage la mise en page de vos VirtualHosts.

apache_remove_default_vhost: false

Sur Debian/Ubuntu, un virtualhost par défaut est inclus dans la configuration d'Apache. Mettez ceci sur true pour supprimer ce fichier de configuration de virtualhost 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 remplacer des paramètres de configuration Apache globaux dans le fichier de vhosts fourni par le rôle (supposant que apache_create_vhosts est vrai) à l'aide de cette variable. Par défaut, elle ne définit que la configuration DirectoryIndex.

apache_vhosts:
  # Propriétés supplémentaires optionnelles : 'serveradmin, serveralias, extra_parameters'.
  - servername: "local.dev"
    documentroot: "/var/www/html"

Ajoutez un ensemble de propriétés par virtualhost, y compris servername (obligatoire), documentroot (obligatoire), allow_override (optionnel : par défaut à la valeur de apache_allow_override), options (optionnel : par défaut à la valeur de apache_options), serveradmin (optionnel), serveralias (optionnel) et extra_parameters (optionnel : vous pouvez ajouter toutes les lignes de configuration supplémentaires que vous souhaitez ici).

Voici un exemple utilisant extra_parameters pour ajouter une RewriteRule afin de rediriger toutes les demandes vers le site www. :

- servername: "www.local.dev"
  serveralias: "local.dev"
  documentroot: "/var/www/html"
  extra_parameters: |
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Le | indique un bloc scalaire multilignes en YAML, donc les sauts de ligne sont préservés dans le fichier de configuration résultant.

apache_vhosts_ssl: []

Aucun vhost SSL n'est configuré par défaut, mais vous pouvez les ajouter en utilisant le même modèle que pour apache_vhosts, avec quelques directives supplémentaires, comme dans l'exemple suivant :

apache_vhosts_ssl:
  - servername: "local.dev"
    documentroot: "/var/www/html"
    certificate_file: "/home/vagrant/example.crt"
    certificate_key_file: "/home/vagrant/example.key"
    certificate_chain_file: "/path/to/certificate_chain.crt"
    extra_parameters: |
      RewriteCond %{HTTP_HOST} !^www\. [NC]
      RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

D'autres directives SSL peuvent être gérées avec d'autres variables de rôle liées à SSL.

apache_ssl_no_log: true

Si les sorties de tâches liées à SSL doivent être affichées dans la console lors de l'exécution du playbook.

apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"

Les protocoles SSL et les suites de chiffrement qui sont utilisés/acceptés lorsque des clients se connectent de manière sécurisée à votre serveur. Ce sont des valeurs par défaut sécurisées, mais pour une sécurité, des performances, et/ou une compatibilité maximales, vous pourriez avoir besoin d'ajuster ces paramètres.

apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"

Les valeurs par défaut pour les directives AllowOverride et Options pour le répertoire documentroot de chaque vhost. Un vhost peut remplacer ces valeurs en spécifiant allow_override ou options.

apache_mods_enabled:
  - rewrite
  - ssl
apache_mods_disabled: []

Les modules Apache à activer ou désactiver (ceux-ci seront liés symboliquement dans l'emplacement approprié). Consultez le répertoire mods-available dans le répertoire de configuration d'apache (/etc/apache2/mods-available sur Debian/Ubuntu) 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 RedHat ou les systèmes 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 devrait généralement rester started, mais vous pouvez le définir sur stopped si vous devez corriger la configuration d'Apache lors d'une exécution de playbook ou si vous ne souhaitez pas qu'Apache démarre au moment de l'exécution de ce rôle.

apache_enabled: yes

Définissez l'état au démarrage du service Apache. Cela devrait généralement rester yes, mais vous pouvez le définir sur no si vous devez exécuter Ansible tout en désactivant le service.

apache_packages_state: present

Si vous avez activé d'autres dépôts tels que ondrej/apache2, geerlingguy.repo-epel, ou geerlingguy.repo-remi, vous pourriez vouloir un moyen facile de mettre à jour les versions. Vous pouvez le définir sur latest (combiné avec apache_enablerepo sur RHEL) et pouvez directement mettre à niveau vers une autre version d'Apache à partir d'un autre dépôt (au lieu de désinstaller et réinstaller Apache).

apache_ignore_missing_ssl_certificate: true

Si vous souhaitez ne créer des vhosts SSL que lorsque le certificat vhost 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 plusieurs fois pour que tous les vhosts soient configurés (si une autre partie du playbook génère les certificats SSL).

Autorisation de base basée sur .htaccess

Si vous avez besoin d'un support d'authentification de base, vous pouvez l'ajouter soit via un modèle personnalisé, soit en ajoutant extra_parameters à une configuration de VirtualHost, comme ceci :

    extra_parameters: |
      <Directory "/var/www/directory-protégée-password">
        Require valid-user
        AuthType Basic
        AuthName "Veuillez vous authentifier"
        AuthUserFile /var/www/directory-protégée-password/.htpasswd
      </Directory>

Pour protéger par mot de passe tout ce qui se trouve dans un directive VirtualHost, utilisez le bloc Location au lieu de Directory :

<Location "/">
  Require valid-user
  ....
</Location>

Vous devrez générer/télécharger votre propre fichier .htpasswd dans votre propre playbook. Il existe peut-être d'autres rôles qui prennent en charge cette fonctionnalité de manière plus intégrée.

Dépendances

Aucune.

Exemple de playbook

- hosts: webservers
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.apache }

Dans vars/main.yml :

apache_listen_port: 8080
apache_vhosts:
  - {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}

Licence

MIT / BSD

Informations sur l'auteur

Ce rôle a été créé en 2014 par Jeff Geerling, auteur de Ansible for DevOps.

À propos du projet

Apache 2.x for Linux.

Installer
ansible-galaxy install geerlingguy.apache
Licence
mit
Téléchargements
10.3M
Propriétaire
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns