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

The Skatalites - Ska Ska Ska


Información del autor

GPLv3

Phil Porada

Acerca del proyecto

Installs and configures httpd. Enables programmatic creation of vhosts.

Instalar
ansible-galaxy install pgporada.httpd
Licencia
Unknown
Descargas
144
Propietario
Just a guy with a computer. 🌞🔒