gcoop-libre.apache

Apache 2.x

Un rol de Ansible que instala Apache 2.x en RHEL/CentOS, Debian/Ubuntu, SLES y Solaris.

Requisitos

El rol no gestiona los archivos de certificado y clave para los sitios que usan SSL/TLS.

Si necesitas Apache con PHP, puedes añadir los paquetes de PHP a la variable apache_packages. O puedes usar otro rol, como el rol geerlingguy.php o geerlingguy.apache-php-fpm si prefieres usar PHP como FPM en lugar de un módulo de Apache.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con los valores predeterminados (ver defaults/main.yml):

apache_enablerepo: ''

El repositorio a utilizar al instalar Apache (solo utilizado en sistemas RHEL/CentOS). Si deseas versiones más recientes de Apache que las disponibles en los repositorios principales del SO, utiliza un repositorio como EPEL.

apache_listen_ip: '*'
apache_listen_port: 80
apache_listen_port_ssl: 443

La dirección IP y puertos en los que Apache debe estar escuchando. Útil si tienes otro servicio (como un proxy inverso) escuchando en el puerto 80 o 443 y necesitas cambiar las predeterminadas.

apache_keepalive: true
apache_keepalive_requests: 500
apache_keepalive_timeout: 5

Estas propiedades habilitan conexiones HTTP persistentes y su tiempo de espera y solicitudes máximas pueden ser personalizadas.

apache_prefork_server_limit: 256
apache_prefork_start_servers: 5
apache_prefork_min_spare_servers: 5
apache_prefork_max_spare_servers: 10
apache_prefork_max_clients: 256
apache_prefork_max_requests_per_child: 0

La configuración del módulo MPM del servidor. Estas propiedades se aplicarán al módulo MPM Prefork y al módulo MPM Worker. Solo en Apache 2.4 en Debian puedes configurar los modos MPM con diferentes valores, porque tiene archivos separados.

apache_worker_server_limit: 16
apache_worker_start_servers: 3
apache_worker_min_spare_threads: 75
apache_worker_max_spare_threads: 250
apache_worker_max_clients: 400
apache_worker_max_requests_per_child: 0
apache_worker_thread_limit: 64
apache_worker_threads_per_child: 25

La configuración del módulo MPM Worker. Esto solo está disponible para Apache 2.4 en Debian GNU/Linux.

apache_event_server_limit: 16
apache_event_start_servers: 3
apache_event_min_spare_threads: 75
apache_event_max_spare_threads: 250
apache_event_max_clients: 400
apache_event_max_requests_per_child: 0
apache_event_thread_limit: 64
apache_event_threads_per_child: 25

La configuración del módulo MPM Event. Esto solo está disponible para Apache 2.4 en Debian GNU/Linux.

apache_remove_default_aliases: True

Eliminar los alias predeterminados que vienen con la configuración predeterminada de Apache.

apache_base_dir: '/var/www'

El directorio base donde se alojarán los sitios web. Este valor se utiliza con los siguientes tres para generar el Document Root para los Hosts Virtuales que no tienen un Document Root explícito.

apache_web_subdir: 'web'
apache_ssl_subdir: 'ssl'
apache_private_subdir: 'private'

El subdirectorio para los archivos web HTTP, el de archivos web HTTPS y el subdirectorio para los archivos htpasswd. Si un Host Virtual no tiene Document Root, el rol generará tres directorios:

  • apache_base_dir/SITENAME/apache_web_subdir

  • apache_base_dir/SITENAME/apache_ssl_subdir

  • apache_base_dir/SITENAME/apache_private_subdir

    apache_create_vhosts: true apache_vhosts_filename: 'vhosts.conf'

Si se establece en true, se creará un archivo de configuración global de vhosts y un archivo por cada Host Virtual, gestionado por las variables de este rol (ver abajo), que se colocará en la carpeta de configuración de Apache. Si se establece en false, puedes colocar tus propios archivos vhosts en la carpeta de configuración de Apache y omitir los convenientes (pero más básicos) que añade este rol.

apache_remove_default_vhost: false

En Debian/Ubuntu, se incluye un host virtual predeterminado en la configuración de Apache. Establece esto en true para eliminar ese archivo de configuración de host virtual predeterminado.

apache_global_vhost_settings: |
  DirectoryIndex index.php index.html
  # Agrega otras configuraciones globales en las líneas siguientes.

Puedes añadir o sobrescribir configuraciones globales de Apache en el archivo de vhosts proporcionado por el rol (suponiendo que apache_create_vhosts sea true) usando esta variable. De forma predeterminada, solo establece la configuración de DirectoryIndex.

apache_global_vhost_access_log_format_combined: '%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'
apache_global_vhost_access_log_format_proxy: '%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"'

Con estas propiedades puedes personalizar el formato de registro combinado y el formato de registro utilizado para registrar las solicitudes realizadas a través de un proxy.

apache_global_vhost_aliases:
  - name: /images
    dest: /var/www/images

Lista de alias para añadir en vhost.conf. Estarán disponibles para todos los Hosts Virtuales. apache_create_vhosts debería estar habilitado.

apache_global_vhost_custom_errors:
  - code: error-code
    action: error-action

Personalizaciones para las páginas de error de Apache. Puedes leer sobre los valores de action en la documentación de Apache.

apache_vhosts:
  - servername: 'local.dev'
    serveralias:
      - 'alias1.local'
      - 'alias2.local'
    serveradmin: webmaster@localhost
    documentroot: '/var/www/html'
    enabled: true
    separate_logs: true
    separate_logs_proxy_format: true
    custom_errors:
      - code: error-code
        action: error-action
    frame_options: SAMEORIGIN
    deflate: true
    deflate_dont_vary: User-Agent
    fileetag: true
    aliases:
      - name: alias-url
        dest: alias-path
    setenvif:
      - attribute: 'X-Forwarded-For'
        pattern: '(.*)'
        var: 'ENV_VAR'
        value: 'true'
    redirect_to_https: false
    allowoverride: 'All'
    rewritebase: '/'
    custom_rewrites:
      - pattern: regex
        substitution: text
        flags: '[R=301,L]'
        conditions:
          - test_string: '%{HTTP_HOST}'
            pattern: '^old\.site\.com$'
            flags: '[NC]'
    redirect_to_servername: True
    exclude_from_redirect:
      - 'valid.alias.com'
    redirect_to_file: '/index.php'
    include_htaccess: False
    documentroot_extra_parameters: 'Configuración personalizada de Document Root'
    restricted_access:
      - path: '/secret'
        regex: false
        all: false
        ips:
          - '127.0.0.1'
          - '192.168.0.1'
        hosts:
          - 'www.site.com'
        env_variables:
          - 'ENV_VAR'
        htpasswd: '/.htpasswd'
    extra_parameters: 'Configuración personalizada de VHost'

Añade un conjunto de propiedades por host virtual. El único requisito es servername. Si no hay documentroot, se generará como se describió antes.

Todas las solicitudes a un ServerAlias se redirigirán al ServerName con un código 301, excepto aquellos alias especificados en la propiedad exclude_from_redirect.

Las rutas dentro de restricted_access deben ser relativas al Document Root. Si el Host Virtual no tiene un Document Root explícito, el archivo htpasswd estará en el directorio apache_private_subdir.

El | denota un bloque escalar multilínea en YAML, por lo que se conservan los saltos de línea en el archivo de configuración resultante.

apache_vhosts_ssl: []

No se configuran hosts virtuales SSL de forma predeterminada, pero puedes añadirlos utilizando el mismo patrón que apache_vhosts, con algunas directivas adicionales:

apache_vhosts_ssl:
  - servername: 'local.dev',
    certificate_file: '/path/to/certificate.crt'
    certificate_key_file: '/path/to/certificate.key'
    certificate_chain_file: '/path/to/certificate_chain.crt'
    sts: true
    sts_max_age: '63072000'
    sts_subdomains: true
    redirect_to_http: false

Estas tres primeras propiedades establecen la ruta de los certificados. Las siguientes tres permiten la sobrescritura de la configuración global de STS. La última redirige todas las solicitudes al host HTTP.

apache_vhosts_ordered: False

Esta propiedad obliga a Apache a cargar los Hosts Virtuales en el orden en que aparecen en las listas apache_vhosts y apache_vhosts_ssl. De lo contrario, Apache procesa los archivos de configuración alfabéticamente.

Existen otras directivas relacionadas con SSL que se pueden gestionar con otras variables de rol relacionadas con SSL.

apache_ssl_protocol: 'All -SSLv2 -SSLv3'
apache_ssl_cipher_suite: 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'

Los protocolos SSL y los conjuntos de cifrado que se usan/permiten cuando los clientes establecen conexiones seguras con tu servidor. Estos son valores predeterminados seguros, pero para máxima seguridad, rendimiento y/o compatibilidad, es posible que necesites ajustar estas configuraciones. Puedes encontrar algo de información en Cipherli.st: Cifrados Fuertes para Apache, nginx y Lighttpd.

apache_frame_options: SAMEORIGIN

Esta propiedad establece la política de seguridad de los sitios cuando se cargan dentro de un Frame o IFrame. Puedes consultar las opciones válidas en este artículo de Wikipedia. También puedes usar False o no aquí para omitir el ajuste del encabezado por completo. Esta configuración global puede ser sobrescrita por host virtual.

apache_sts: true
apache_sts_max_age: '63072000'
apache_sts_subdomains: true

La seguridad estricta de transporte HTTP está habilitada de forma predeterminada, con una Edad Máxima de 1 año y los subdominios están incluidos. Estas configuraciones globales pueden ser sobrescritas por cada host virtual.

apache_mods_enabled:
  - rewrite
  - ssl
apache_mods_disabled: []

Estas propiedades son SOLO para Debian y Ubuntu. Qué módulos de Apache habilitar o deshabilitar. Consulta el directorio mods-available dentro del directorio de configuración de Apache (/etc/apache2/mods-available por defecto) para ver todos los módulos disponibles.

apache_packages:
  - [específico de la plataforma]

La lista de paquetes que se instalarán. Esto predetermina un conjunto de paquetes específicos de la plataforma para sistemas RedHat o basados en Debian (ver vars/RedHat.yml y vars/Debian.yml para los valores predeterminados).

apache_state: started

Establece el estado inicial del daemon de Apache a aplicar cuando se ejecute este rol. Generalmente debe permanecer en started, pero puedes establecerlo en stopped si necesitas corregir la configuración de Apache durante la ejecución de un playbook o si no deseas que Apache se inicie en el momento en que se ejecuta este rol.

apache_ignore_missing_ssl_certificate: true

Si solo deseas crear hosts virtuales SSL cuando el certificado del host virtual esté presente (por ejemplo, al usar Let's Encrypt), establece apache_ignore_missing_ssl_certificate en false. Al hacer esto, es posible que debas ejecutar tu playbook más de una vez para que todos los hosts virtuales estén configurados (si otra parte del playbook genera los certificados SSL).

Dependencias

Ninguna.

Ejemplo de Playbook

- hosts: webservers
  vars_files:
    - vars/main.yml
  roles:
     - gcoop-libre.apache

Dentro de vars/main.yml:

apache_listen_port: 8080
apache_vhosts:
  - servername: example.com

Licencia

GPLv2

Información del Autor

Este rol fue creado en 2016 por gcoop Cooperativa de Software Libre.

Acerca del proyecto

Apache 2.x for RHEL/CentOS, Debian/Ubuntu, SLES and Solaris

Instalar
ansible-galaxy install gcoop-libre.apache
Licencia
gpl-2.0
Descargas
320