pgporada.httpd
Resumen: ansible-role-httpd
Este rol configurará httpd (Apache), configurará cualquier vhost que hayas definido y establecerá las reglas de reescritura/redirección. Yo configuro mis vhosts de una manera que los administradores senior me enseñaron cuando trabajaba en un centro de datos. Desde entonces, he seguido este método en mi carrera. Esta configuración es opinativa. Puede que no estés de acuerdo.
Definiciones de variables
Utiliza esto si estás ejecutando httpd detrás de un balanceador de carga como ELB o HaProxy. Si es verdadero, copiará el archivo customer_logger.conf en /etc/httpd/conf.d/
. El registrador de clientes obtendrá la cabecera IP de origen x-forwarded.
httpd_is_behind_loadbalancer: false
Establece el directorio raíz del documento por defecto en /etc/httpd/conf/httpd.conf
. Esto generalmente necesita ser sobrescrito para un vagrant, de lo contrario déjalo como está.
httpd_conf_docrootdir: /var/www/domains
Establece los puertos que httpd escuchará.
httpd_conf_port: 80
httpd_conf_port_ssl: 443
Habilita o deshabilita la directiva keepalive de httpd. Booleano para ansible. Docs
httpd_conf_keepalive_enable: true
Módulo de múltiples procesos para procesar solicitudes. Docs
httpd_conf_mpm: prefork # Otras opciones válidas son 'event' y 'worker'
Usa mod_headers para establecer httponly y seguro en todas las cookies. Hay implicaciones aquí. Booleano, por defecto es falso. Docs
httpd_conf_securecookies: false
Ejemplo 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
# Reescribe solicitudes del ELB a https
# Queremos hacer coincidir específicamente http en lugar de lo negativo, !https, debido a que las verificaciones de salud fallan en la redirección 301
#RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
#RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
extra_parameters_include: |
#
# Esto es específico de vagrant
#EnableSendfile Off
# Ocultar cosas relacionadas con git
RewriteRule ^(.*/)?\.git+ - [R=404,L]
RewriteRule ^(.*/)?\.gitignore+ - [R=404,L]
roles:
- ansible-roles-httpd
...
Cómo trabajar en este rol
Antes de ejecutar cualquier prueba, debes validar tu sintaxis con yamllint.
find . -type f -name "*.yml*" | sed "s|\./||g" | egrep -v "(\.kitchen/|\[warning\]|\.molecule/)" | xargs yamllint -f parsable
Deberías ver una salida como la siguiente que puedes tomar como acción manual, o simplemente ignorar. Puedes ver fácilmente que encontramos un error. Este error probablemente impediría que ansible se ejecutara hasta completarse. Detectar estos es algo BUENO.
$ find . -type f -name "*.yml*" | sed "s|\./||g" | egrep -v "(\.kitchen/|\[warning\]|\.molecule/)" | xargs yamllint -f parsable
defaults/main.yml:41:121: [warning] línea demasiado larga (127 > 120 caracteres) (longitud de línea)
meta/main.yml:7:22: [error] error de sintaxis: no se permiten valores de mapeo aquí
test/integration/default/default.yml:4:1: [warning] comentario no indentado como contenido (indentación de comentarios)
test/requirements.yml:2:2: [warning] falta espacio inicial en el comentario (comentarios)
Necesitarás un entorno de ruby para instalar las gemas para test-kitchen. Instalamos las gemas a través de 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
Ahora deberías poder acceder a la página por defecto según lo definido en el archivo .kitchen.yml
.
Música de fondo
Información del autor
GPLv3
Phil Porada
Installs and configures httpd. Enables programmatic creation of vhosts.
ansible-galaxy install pgporada.httpd