pgporada.httpd
Aperçu : ansible-role-httpd
Ce rôle met en place httpd (Apache), configure tous les vhosts que vous avez définis, et configure les règles de réécriture/redirection. Je configure mes vhosts de la manière dont des administrateurs seniors m'ont appris lorsque je travaillais dans un datacenter. J'ai depuis continué à suivre cette méthode tout au long de ma carrière. Cette configuration est subjective. Vous n'êtes pas obligé d'être d'accord.
Définitions des variables
Utilisez ceci si vous exécutez httpd derrière un équilibreur de charge tel que ELB ou HaProxy. Si vrai, copie le fichier customer_logger.conf dans /etc/httpd/conf.d/
. Le journal client recevra l'en-tête IP source x-forwarded.
httpd_is_behind_loadbalancer: false
Définit le répertoire racine du document par défaut dans /etc/httpd/conf/httpd.conf
. Cela doit généralement être modifié pour un vagrant, sinon laissez tel quel.
httpd_conf_docrootdir: /var/www/domains
Définissez les ports sur lesquels httpd écoutera.
httpd_conf_port: 80
httpd_conf_port_ssl: 443
Active ou désactive la directive keepalive de httpd. Booléen pour ansible. Docs
httpd_conf_keepalive_enable: true
Module de traitement multi-processus pour le traitement des requêtes. Docs
httpd_conf_mpm: prefork # D'autres options valides sont 'event' et 'worker'
Utilisez mod_headers pour définir httponly et secure sur tous les cookies. Cela a des implications. Booléen, par défaut à false. Docs
httpd_conf_securecookies: false
Exemple de Playbook
---
- hosts: localhost
connection: local
become: true
become_method: sudo
vars:
httpd_vhosts_enabled:
- url: jenkins.philporada.com
enable_ssl_vhost: false
#path_to_ssl_ca: /path/to/ca.pem
#path_to_ssl_cert: /path/to/cert.pem
#path_to_ssl_key: /path/to/key.pem
#path_to_ssl_chain: /path/to/bundle.pem
aliases: []
serveradmin: [email protected]
errorlog: "/var/log/httpd/error_log"
accesslog: "/var/log/httpd/access_log"
directory: "/var/www"
docrootdir: public_html
extra_parameters_main: |
#
#RewriteEngine On
# Réécrit les requêtes de l'ELB vers https
# Nous voulons correspondre spécifiquement à http plutôt qu'à la négative, !https, en raison des contrôles de santé échouant à la redirection 301
#RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
#RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
extra_parameters_include: |
#
# Ceci est spécifique à vagrant
#EnableSendfile Off
# Masquer les éléments liés à git
RewriteRule ^(.*/)?\.git+ - [R=404,L]
RewriteRule ^(.*/)?\.gitignore+ - [R=404,L]
roles:
- ansible-roles-httpd
...
Comment travailler sur ce rôle
Avant de lancer des tests, vous devriez valider votre syntaxe avec yamllint.
find . -type f -name "*.yml*" | sed "s|\./||g" | egrep -v "(\.kitchen/|\[warning\]|\.molecule/)" | xargs yamllint -f parsable
Vous devriez voir une sortie telle que suivante sur laquelle vous pouvez agir manuellement, ou l'ignorer simplement. Vous pouvez facilement voir que nous avons trouvé une erreur. Cette erreur aurait probablement empêché ansible de s'exécuter entièrement. Repérer ces erreurs est une BONNE CHOSE.
$ find . -type f -name "*.yml*" | sed "s|\./||g" | egrep -v "(\.kitchen/|\[warning\]|\.molecule/)" | xargs yamllint -f parsable
defaults/main.yml:41:121: [warning] ligne trop longue (127 > 120 caractères) (line-length)
meta/main.yml:7:22: [error] erreur de syntaxe : les valeurs de mappage ne sont pas autorisées ici
test/integration/default/default.yml:4:1: [warning] commentaire non indenté comme le contenu (comments-indentation)
test/requirements.yml:2:2: [warning] espace initial manquant dans le commentaire (comments)
Vous aurez besoin d'un environnement ruby pour installer les gems pour test-kitchen. Nous installons les gems via bundler.
git clone git@github.com:pgporada/ansible-role-httpd.git
bundle install
bundle update
bundle exec kitchen create
bundle exec kitchen converge
bundle exec kitchen verify
bundle exec kitchen destroy
Vous devriez maintenant pouvoir accéder à la page par défaut telle que définie par le fichier .kitchen.yml
.
Musique Thème
Informations sur l'Auteur
GPLv3
Phil Porada
Installs and configures httpd. Enables programmatic creation of vhosts.
ansible-galaxy install pgporada.httpd