geerlingguy.apache

Rol de Ansible: Apache 2.x

CI

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

Requisitos

Si estás usando SSL/TLS, necesitarás proporcionar tus propios archivos de certificado y clave. Puedes generar un certificado autofirmado con un comando como openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.key -out example.crt.

Si estás utilizando Apache con PHP, recomiendo usar la rol geerlingguy.php para instalar PHP, y puedes usar mod_php (agregando el paquete adecuado, por ejemplo, libapache2-mod-php5 para Ubuntu, en php_packages), o también puedes usar geerlingguy.apache-php-fpm para conectar Apache a PHP a través de FPM. Consulta el README de esa rol para más información.

Variables de Rol

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

apache_enablerepo: ""

El repositorio que se usará al instalar Apache (solo usado en sistemas RHEL/CentOS). Si deseas versiones más recientes de Apache que las disponibles en los repositorios centrales del sistema operativo, usa un repositorio como EPEL (que se puede instalar con la rol geerlingguy.repo-epel).

apache_listen_ip: "*"
apache_listen_port: 80
apache_listen_port_ssl: 443

La dirección IP y los puertos en los que Apache escuchará. Es útil si tienes otro servicio (como un proxy inverso) escuchando en el puerto 80 o 443 y necesitas cambiar los valores predeterminados.

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

Si se establece en verdadero, se creará un archivo de vhosts, gestionado por las variables de esta rol (ver más abajo), y se colocará en la carpeta de configuración de Apache. Si se establece en falso, puedes colocar tu propio archivo de vhosts en la carpeta de configuración de Apache y omitir el más básico que agrega esta rol. También puedes sobrescribir la plantilla utilizada y establecer una ruta a tu propia plantilla, si necesitas personalizar más el diseño de tus VirtualHosts.

apache_remove_default_vhost: false

En Debian/Ubuntu, hay un virtualhost predeterminado incluido en la configuración de Apache. Establece esto en true para eliminar ese archivo de configuración de virtualhost predeterminado.

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

Puedes agregar o sobrescribir configuraciones globales de Apache en el archivo de vhosts proporcionado por la rol (asumiendo que apache_create_vhosts es verdadero) utilizando esta variable. Por defecto, solo establece la configuración de DirectoryIndex.

apache_vhosts:
  # Propiedades adicionales opcionales: 'serveradmin, serveralias, extra_parameters'.
  - servername: "local.dev"
    documentroot: "/var/www/html"

Agrega un conjunto de propiedades por virtualhost, incluyendo servername (requerido), documentroot (requerido), allow_override (opcional: predeterminado al valor de apache_allow_override), options (opcional: predeterminado al valor de apache_options), serveradmin (opcional), serveralias (opcional) y extra_parameters (opcional: puedes agregar cualquier línea de configuración adicional que desees aquí).

Aquí hay un ejemplo usando extra_parameters para agregar una RewriteRule para redirigir todas las solicitudes al sitio 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]

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

apache_vhosts_ssl: []

No hay vhosts SSL configurados por defecto, pero puedes agregarlos usando el mismo patrón que apache_vhosts, con algunas directivas adicionales, como en el siguiente ejemplo:

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]

Otras directivas SSL pueden ser gestionadas con otras variables de rol relacionadas con SSL.

apache_ssl_no_log: true

Si imprimir la salida de las tareas relacionadas con SSL en la consola al ejecutar el playbook.

apache_ssl_protocol: "All -SSLv2 -SSLv3"
apache_ssl_cipher_suite: "AES256+EECDH:AES256+EDH"

Los protocolos SSL y los conjuntos de cifrado que se usan/permiten cuando los clientes hacen conexiones seguras a tu servidor. Estos son valores predeterminados seguros, pero para máxima seguridad, rendimiento y/o compatibilidad, es posible que debas ajustar estas configuraciones.

apache_allow_override: "All"
apache_options: "-Indexes +FollowSymLinks"

Los valores predeterminados para las directivas AllowOverride y Options para el directorio documentroot de cada vhost. Un vhost puede sobrescribir estos valores especificando allow_override u options.

apache_mods_enabled:
  - rewrite
  - ssl
apache_mods_disabled: []

Qué módulos de Apache habilitar o deshabilitar (se vincularán simbólicamente en la ubicación apropiada). Consulta el directorio mods-available en el directorio de configuración de Apache (/etc/apache2/mods-available en Debian/Ubuntu) para ver todos los módulos disponibles.

apache_packages:
  - [específico de la plataforma]

La lista de paquetes que se instalarán. Esto tiene como valor predeterminado 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 demonio de Apache que se aplicará cuando se ejecute esta rol. Esto debería permanecer generalmente started, pero puedes establecerlo en stopped si necesitas corregir la configuración de Apache durante la ejecución del playbook o si no deseas que Apache comience en el momento en que se ejecuta esta rol.

apache_enabled: yes

Establece el estado de inicio del servicio Apache. Esto generalmente debería permanecer yes, pero puedes cambiarlo a no si necesitas ejecutar Ansible mientras mantienes el servicio deshabilitado.

apache_packages_state: present

Si has habilitado repositorios adicionales como ondrej/apache2, geerlingguy.repo-epel, o geerlingguy.repo-remi, puedes querer una manera fácil de actualizar versiones. Puedes establecer esto en latest (combinado con apache_enablerepo en RHEL) y puedes actualizar directamente a una versión diferente de Apache desde otro repositorio (en lugar de desinstalar y reinstalar Apache).

apache_ignore_missing_ssl_certificate: true

Si solo deseas crear vhosts SSL cuando el certificado del vhost 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 vhosts estén configurados (si otra parte del playbook genera los certificados SSL).

Autorización Básica basada en .htaccess

Si requieres soporte de Autenticación Básica, puedes agregarlo a través de una plantilla personalizada o agregando extra_parameters a una configuración de VirtualHost, así:

    extra_parameters: |
      <Directory "/var/www/directory-con-contraseña">
        Require valid-user
        AuthType Basic
        AuthName "Por favor autentica"
        AuthUserFile /var/www/directory-con-contraseña/.htpasswd
      </Directory>

Para proteger con contraseña todo dentro de una directiva de VirtualHost, usa el bloque Location en lugar de Directory:

<Location "/">
  Require valid-user
  ....
</Location>

Necesitarías generar/subir tu propio archivo .htpasswd en tu propio playbook. Puede haber otras roles que soporten esta funcionalidad de una manera más integrada.

Dependencias

Ninguna.

Ejemplo de Playbook

- hosts: webservers
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.apache }

Dentro de vars/main.yml:

apache_listen_port: 8080
apache_vhosts:
  - {servername: "example.com", documentroot: "/var/www/vhosts/example_com"}

Licencia

MIT / BSD

Información del Autor

Esta rol fue creada en 2014 por Jeff Geerling, autor de Ansible for DevOps.

Acerca del proyecto

Apache 2.x for Linux.

Instalar
ansible-galaxy install geerlingguy.apache
Licencia
mit
Descargas
10.3M
Propietario
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns