wcm_io_devops.apache

wcm_io_devops.apache

CI

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

Fork wcm.io

wcm.io a commencé à maintenir un fork pour intégrer plus rapidement les modifications dans le dépôt original geerlingguy.apache.

Le fork wcm.io ajoute les fonctionnalités suivantes en plus de la fonctionnalité originale :

Espace de noms

Ce rôle est publié dans l’espace de noms wcm-io-devops.

Versions

Les numéros de version de ce fork suivront les versions du dépôt forké.

Pour conserver la version originale, les versions de wcm.io ajouteront un quatrième numéro de version séparé par un -, qui s'incrémente à chaque version de wcm.io, par exemple 3.0.0-1 et 3.0.0-2.

Exigences

Si vous utilisez SSL/TLS, vous devrez fournir vos propres certificats et clés. 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 bon paquet, 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 (uniquement utilisé sur les systèmes RHEL/CentOS). Si vous souhaitez des versions plus récentes d'Apache que celles disponibles dans les dépôts de base du système d'exploitation, 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 valeurs par défaut.

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

S'il est réglé sur true, un fichier 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 réglé sur false, vous pouvez placer votre propre fichier vhosts dans le dossier de configuration d'Apache et ignorer le fichier pratique (mais plus basique) 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 disposition de vos VirtualHosts. Si apache_create_vhosts est réglé sur false, le fichier vhosts.conf sera supprimé lors de la provision.

apache_remove_default_vhost: false

Sur Debian/Ubuntu et RedHat/CentOS, des virtualhosts par défaut sont inclus dans la configuration d'Apache. Réglez ceci sur true pour supprimer ce fichier de configuration de virtualhost par défaut.

apache_remove_default_vhost_ssl: false

Sur les systèmes basés sur RedHat/CentOS, un virtualhost par défaut est présent dans le ssl.conf. Réglez ceci sur true pour supprimer ce virtualhost du fichier de configuration ssl.conf.

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 vhosts fourni par le rôle (en supposant que apache_create_vhosts soit vrai) en utilisant cette variable. Par défaut, elle ne règle que la configuration DirectoryIndex.

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

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

Voici un exemple utilisant extra_parameters pour ajouter une RewriteRule pour rediriger toutes les requêtes 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 multiligne en YAML, donc les nouvelles lignes sont préservées dans le fichier de configuration résultant.

apache_vhosts_ssl: []

Aucun virtualhost 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, comme 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_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"

Les protocoles et suites de chiffrement SSL qui sont utilisés/autorisés lorsque les clients établissent des connexions sécurisées à votre serveur. Ce sont des valeurs par défaut sécurisées, mais pour une sécurité maximale, des performances et/ou une compatibilité, vous devrez peut-être 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 écraser ces valeurs en spécifiant allow_override ou options.

apache_mods_enabled:
  - rewrite.load
  - ssl.load
apache_mods_disabled: []

(Uniquement pour Debian/Ubuntu) Quels mods Apache activer ou désactiver (ceux-ci seront liés au bon emplacement). Consultez le répertoire mods-available dans le répertoire de configuration d'Apache (/etc/apache2/mods-available par défaut) pour tous les mods 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 basés sur RedHat ou Debian (voir vars/RedHat.yml et vars/Debian.yml pour les valeurs par défaut).

apache_state: started

Définir l'état initial du démon Apache à appliquer lors de l'exécution de ce rôle. Cela doit généralement rester started, mais vous pouvez le régler sur stopped si vous devez corriger la configuration d'Apache pendant l'exécution d'un playbook ou si vous ne souhaitez pas qu'Apache soit démarré au moment où ce rôle est exécuté.

apache_packages_state: present

Si vous avez activé des dépôts supplémentaires comme ondrej/apache2, geerlingguy.repo-epel, ou geerlingguy.repo-remi, vous voudrez peut-être un moyen facile de mettre à jour les versions. Vous pouvez le régler sur latest (combiné avec apache_enablerepo sur RHEL) et mettre à jour directement vers une autre version d'Apache depuis un autre dépôt (au lieu de désinstaller et réinstaller Apache).

apache_ignore_missing_ssl_certificate: true

Si vous souhaitez créer des virtualhosts SSL uniquement lorsque le certificat du virtualhost est présent (par exemple, lors de l'utilisation de Let's Encrypt), réglez apache_ignore_missing_ssl_certificate sur false. En faisant cela, vous devrez peut-être exécuter votre playbook plusieurs fois pour que tous les virtualhosts soient configurés (si une autre partie du playbook génère les certificats SSL).

#apache_rhel_custom_vhosts_path: /etc/httpd/vhosts.d

Sur RHEL/CentOS, dans certaines occasions, vous pourriez vouloir utiliser un répertoire personnalisé pour vos fichiers de virtual host au lieu de /etc/httpd/conf.d. Utilisez donc cette variable.

Autorisation de base basée sur .htaccess

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

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

Pour protéger par mot de passe tout dans une 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 peut y avoir d'autres rôles qui prennent en charge cette fonctionnalité de manière plus intégrée.

Dépendances

Aucune.

Exemple de Playbook

- hosts: serveurs-web
  vars_files:
    - vars/main.yml
  roles:
    - { role: wcm_io_devops.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.

Ce fork est maintenu par wcm.io.

À propos du projet

Apache 2.x for Linux. (fork of geerlingguy.apache)

Installer
ansible-galaxy install wcm_io_devops.apache
Licence
mit
Téléchargements
117.3k
Propriétaire
Tools for Configuration Management and Deployment