galaxyproject.nginx

nginx

Un rol de Ansible para instalar y gestionar servidores nginx.

Requisitos

Este rol instala nginx desde APT en sistemas Debian, EPEL en sistemas de Enterprise Linux, o pkgin en SmartOS. Otros sistemas y métodos de instalación no son compatibles.

Variables del Rol

Todas las variables son opcionales.

Configuración General

  • nginx_flavor (predeterminado: full): paquete de nginx a instalar (para opciones, consulta el metapaquete de nginx para tu distribución basada en Debian). En distribuciones basadas en RedHat, esto puede ser galaxy (para "Galaxy nginx", que incluye los módulos de carga y pam de nginx), o cualquier otro valor para EPEL nginx. Este valor no se utiliza en instalaciones pkgin/SmartOS. Generalmente, TUS puede ser utilizado y full es un seguro predeterminado para el futuro.
  • nginx_servers: Una lista de plantillas server {} (host virtual) (relativa a templates/nginx/, se añade automáticamente la extensión .j2 a las entradas de la lista al buscar).
  • nginx_ssl_servers: Similar a nginx_servers, pero solo se instala si SSL está configurado.
  • nginx_conf_http: Establecer opciones arbitrarias en la sección http {} de nginx.conf. Esto es un hash (diccionario) donde las claves son opciones de configuración de nginx y los valores son el valor de la opción.
  • nginx_default_redirect_uri: Al usar nginx desde EPEL, se habilita un host virtual predeterminado. Esta opción controla a qué URI debe redirigirse el host virtual predeterminado. Se admiten variables de nginx.
  • nginx_enable_default_server (predeterminado: true): Habilitar/deshabilitar el host virtual predeterminado de EPEL.
  • nginx_supervisor: Ejecutar nginx bajo un supervisor (requiere establecer ciertas variables del supervisor).
  • nginx_conf_dir (predeterminado: /etc/nginx): directorio de configuración de nginx.

Configuración SSL

Las variables nginx_conf_ssl_certificate* controlan el uso de SSL. Si no se establecen, SSL no estará habilitado. Consulta el Ejemplo de Playbook para su uso.

  • nginx_conf_ssl_certificate: Nombre del archivo del certificado SSL en el host remoto.
  • nginx_conf_ssl_certificate_key: Nombre del archivo de la clave privada SSL en el host remoto.
  • nginx_conf_ssl_ciphers: La opción ssl_ciphers en nginx.conf, esto es una lista.
  • nginx_conf_ssl_protocols: La opción ssl_protocols en nginx.conf, esto es una lista.

Configuración Externa de SSL

  • nginx_ssl_role (predeterminado: indefinido): Rol a ejecutar para configurar SSL. Esto permite el uso de (por ejemplo) usegalaxy_eu.certbot, que normalmente debe ejecutarse después de que nginx esté configurado y funcionando en el puerto 80, pero antes de que nginx intente usar SSL (ya que hasta que certbot se ejecute, los certificados que nginx espera no existen todavía). Establecer esto hará que se ejecute el rol de SSL en el momento apropiado dentro de este rol. Consulta también nginx_ssl_servers.
  • nginx_conf_ssl_certificate: Nombre del archivo del certificado SSL.
  • nginx_conf_ssl_certificate_key: Nombre del archivo de la clave privada SSL.

En este modo, las variables nginx_conf_ssl_certificate* deben ser rutas absolutas.

Configuración SSL del Playbook

Si nginx_ssl_role no está establecido, puedes usar este rol para copiar tu certificado y clave desde el playbook.

  • nginx_ssl_conf_dir (predeterminado: <nginx_conf_dir>/ssl): Dónde copiar los certificados SSL y otros archivos relacionados con SSL.
  • nginx_ssl_src_dir (predeterminado: files/ssl): De dónde copiar los certificados SSL.
  • sslkeys: Un hash (diccionario) que contiene claves privadas. Las claves son los nombres de archivo (sin elementos de ruta iniciales) que coinciden con nginx_conf_ssl_certificate_key.
  • nginx_conf_ssl_trusted_certificate: Nombre del archivo de certificados de confianza para la incorporación de OCSP (configurar habilita la incorporación).

En este modo, las variables nginx_conf_ssl_certificate* deben ser rutas relativas. Sin embargo, por razones de compatibilidad, pueden ser rutas absolutas a los archivos en el host remoto. Si este es el caso, los certificados se buscan en nginx_ssl_src_dir con la parte del directorio de la ruta eliminada. Si la ruta no es absoluta, es relativa a nginx_ssl_src_dir para el origen y relativa a nginx_ssl_conf_dir para el destino.

SELinux

Si SELinux está en modo de aplicación, se tomarán varias acciones adicionales:

  • Si certbot_well_known_root está establecido, se actualizará para permitir permisos de tipo httpd_sys_content_t en todos los subdirectorios.
  • nginx_selinux_allow_local_connections (predeterminado: false): Permitir que nginx se conecte a localhost.

Dependencias

Aunque no es un requisito, geerlingguy.repo-epel puede utilizarse para habilitar EPEL con Ansible.

Ejemplo de Playbook

Aquí hay algunos ejemplos de playbooks dependiendo de dónde obtengas tus certificados.

Certificados SSL Locales

Instalar nginx con certificados SSL almacenados en el playbook (certificado en {{ playbook_dir }}/files/ssl/snakeoil_cert.pem):

- name: Instalar y configurar nginx
  hosts: webservers
  vars:
    sslkeys:
      snakeoil_privatekey.pem: |
        -----BEGIN PRIVATE KEY-----
        MIIE...
        -----END PRIVATE KEY-----
    nginx_conf_ssl_certificate: snakeoil_cert.pem
    nginx_conf_ssl_certificate_key: snakeoil_privatekey.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_conf_http:
      client_max_body_size: 1g
  roles:
    - galaxyproject.nginx

Let's Encrypt

Instalar nginx con certificados SSL obtenidos de Let's Encrypt usando Certbot con usegalaxy_eu.certbot:

- name: Instalar y configurar nginx
  hosts: webservers
  vars:
    nginx_conf_ssl_certificate: /etc/ssl/certs/fullchain.pem
    nginx_conf_ssl_certificate_key: /etc/ssl/private/private.pem
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: usegalaxy_eu.certbot
    certbot_auth_method: --webroot
    certbot_domains:
      - vhost1.example.org
      - vhost2.example.org
    certbot_admin_email: [email protected]
    certbot_agree_tos: --agree-tos
    certbot_well_known_root: /var/www/_well-known_root
    certbot_post_renewal: |
      systemctl restart nginx || true
  roles:
    - galaxyproject.nginx

En templates/nginx/vhost1.j2 y templates/nginx/vhost2.j2, asegúrate de añadir algo como:

server {
    location /.well-known/ {
        root {{ certbot_well_known_root }};
    }
}

Certificados Autofirmados

Instalar nginx y usar un certificado SSL autofirmado generado (buena opción para probar servicios seguros detrás de un firewall):

- name: Instalar y configurar nginx
  hosts: webservers
  vars:
    nginx_servers:
      - vhost1
      - vhost2
    nginx_ssl_servers:
      - vhost1_ssl
      - vhost2_ssl
    nginx_conf_http:
      client_max_body_size: 1g
    nginx_ssl_role: galaxyproject.self_signed_certs
    openssl_domains: # Comportamiento idéntico a certbot_domains
      - vhost1.example.org
      - vhost2.example.org
    # Estos pueden configurarse a donde desees que se almacenen tus certificados y PK.
    nginx_conf_ssl_certificate_key: /etc/ssl/private/{{ openssl_domains[0] }}.pem
    nginx_conf_ssl_certificate: /etc/ssl/certs/{{ openssl_domains[0] }}.crt
  roles:
    - galaxyproject.nginx

Licencia

Licencia Académica Libre ("AFL") v. 3.0

Información del Autor

Acerca del proyecto

Install and manage an nginx server.

Instalar
ansible-galaxy install galaxyproject.nginx
Licencia
Unknown
Descargas
28.1k
Propietario
Galaxy is an open, web-based platform for data-intensive research.