wcm_io_devops.apache

wcm_io_devops.apache

CI

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

fork de wcm.io

wcm.io comenzó a mantener su propio fork para integrar cambios en el repositorio original geerlingguy.apache más rápidamente.

El fork de wcm.io añade las siguientes características a la funcionalidad original:

Namespace

Este rol se publica dentro del namespace wcm-io-devops.

Versionado

Los números de versión de este fork seguirán las versiones del repositorio forked.

Para mantener la versión original, las publicaciones de wcm.io añadirán un cuarto número de versión dividido por un -, que se incrementa con cada publicación de wcm.io, por ejemplo, 3.0.0-1 y 3.0.0-2.

Requisitos

Si está utilizando SSL/TLS, deberá proporcionar sus propios archivos de certificado y clave. Puede 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á utilizando Apache con PHP, recomiendo usar el rol geerlingguy.php para instalar PHP, y puede usar mod_php (agregando el paquete adecuado, por ejemplo, libapache2-mod-php5 para Ubuntu, a php_packages), o también usando geerlingguy.apache-php-fpm para conectar Apache a PHP a través de FPM. Consulte el README de ese rol para más información.

Variables del Rol

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

apache_enablerepo: ""

El repositorio a utilizar al instalar Apache (solo se usa en sistemas RHEL/CentOS). Si desea versiones posteriores de Apache que no están disponibles en los repositorios principales del sistema, use un repositorio como EPEL (que se puede instalar con el 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 debe estar escuchando. Útil si tiene otro servicio (como un proxy inverso) escuchando en el puerto 80 o 443 y necesita cambiar los valores predeterminados.

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

Si se establece en true, se creará un archivo vhosts, gestionado por las variables de este rol (ver abajo), y se colocará en la carpeta de configuración de Apache. Si se establece en false, puede colocar su propio archivo de vhosts en la carpeta de configuración de Apache y omitir el que añade este rol. También puede sobrescribir la plantilla utilizada y establecer una ruta a su propia plantilla, si necesita personalizar aún más el diseño de sus VirtualHosts. Si apache_create_vhosts se establece en false, el vhosts.conf se eliminará durante la provisión.

apache_remove_default_vhost: false

En Debian/Ubuntu y RedHat/CentOS, los virtualhosts predeterminados están incluidos en la configuración de Apache. Establezca esto en true para eliminar ese archivo de configuración de virtualhost predeterminado.

apache_remove_default_vhost_ssl: false

En sistemas basados en RedHat/CentOS, hay un virtualhost predeterminado presente en el ssl.conf. Establezca esto en true para remover ese virtualhost del archivo de configuración ssl.conf.

apache_global_vhost_settings: |
  DirectoryIndex index.php index.html
  # Agregue otras configuraciones globales en líneas sucesivas.

Puede agregar 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. 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"

Agregue 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: puede agregar cualquier línea de configuración adicional 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 de escalar multilínea en YAML, por lo que se preservan los saltos de línea en el archivo de configuración resultante.

apache_vhosts_ssl: []

No se configuran vhosts SSL de manera predeterminada, pero puede agregar los utilizando el mismo patrón que apache_vhosts, con algunas directivas adicionales, como 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 se pueden gestionar con otras variables de rol relacionadas con SSL.

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

Los protocolos SSL y suites de cifrado que se utilizan/permiten cuando los clientes establecen conexiones seguras a su servidor. Estos son valores predeterminados seguros, pero para máxima seguridad, rendimiento y/o compatibilidad, puede que necesite ajustar estas configuraciones.

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

Los valores predeterminados para los 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.load
  - ssl.load
apache_mods_disabled: []

(SOLO Debian/Ubuntu) Qué mods de Apache habilitar o deshabilitar (se vincularán en la ubicación apropiada). Consulte el directorio mods-available dentro del directorio de configuración de Apache (/etc/apache2/mods-available por defecto) para ver todos los mods disponibles.

apache_packages:
  - [específico de la plataforma]

La lista de paquetes a instalar. Esto se establece por defecto en un conjunto de paquetes específicos de la plataforma para sistemas basados en RedHat o Debian (consulte vars/RedHat.yml y vars/Debian.yml para los valores predeterminados).

apache_state: started

Establezca el estado inicial del demonio Apache que se debe imponer cuando se ejecute este rol. Esto generalmente debe permanecer como started, pero puede establecerlo en stopped si necesita corregir la configuración de Apache durante una ejecución del playbook o de otro modo no desea que Apache se inicie en el momento en que se ejecute este rol.

apache_packages_state: present

Si ha habilitado algún repositorio adicional como ondrej/apache2, geerlingguy.repo-epel o geerlingguy.repo-remi, puede que desee una manera fácil de actualizar versiones. Puede establecer esto en latest (combinado con apache_enablerepo en RHEL) y puede actualizar directamente a una versión diferente de Apache desde un repositorio diferente (en lugar de desinstalar e instalar Apache de nuevo).

apache_ignore_missing_ssl_certificate: true

Si desea crear vhosts SSL solo cuando el certificado del vhost está presente (por ejemplo, al usar Let's Encrypt), establezca apache_ignore_missing_ssl_certificate en false. Al hacer esto, puede que necesite ejecutar su playbook más de una vez para que se configuren todos los vhosts (si otra parte del playbook genera los certificados SSL).

#apache_rhel_custom_vhosts_path: /etc/httpd/vhosts.d

En RHEL/CentOS, en algunas ocasiones es posible que desee usar un directorio personalizado para sus archivos de host virtual en lugar de /etc/httpd/conf.d. Use esta variable en ese caso.

Autorización Básica basada en .htaccess

Si necesita soporte para autenticación básica, puede agregarlo a través de una plantilla personalizada, o añadiendo extra_parameters a una configuración de VirtualHost, así:

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

Para proteger con contraseña todo dentro de un bloque de VirtualHost, use el bloque Location en lugar de Directory:

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

Debería generar/subir su propio archivo .htpasswd en su propio playbook. Puede haber otros 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: wcm_io_devops.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

Este rol fue creado en 2014 por Jeff Geerling, autor de Ansible for DevOps.

Este fork es mantenido por wcm.io.

Acerca del proyecto

Apache 2.x for Linux. (fork of geerlingguy.apache)

Instalar
ansible-galaxy install wcm_io_devops.apache
Licencia
mit
Descargas
117.3k
Propietario
Tools for Configuration Management and Deployment