geerlingguy.apache
Rôle Ansible : Apache 2.x
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.
ansible-galaxy install geerlingguy.apache