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 denginxpara tu distribución basada en Debian). En distribuciones basadas en RedHat, esto puede sergalaxy(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 yfulles un seguro predeterminado para el futuro.nginx_servers: Una lista de plantillasserver {}(host virtual) (relativa atemplates/nginx/, se añade automáticamente la extensión.j2a las entradas de la lista al buscar).nginx_ssl_servers: Similar anginx_servers, pero solo se instala si SSL está configurado.nginx_conf_http: Establecer opciones arbitrarias en la secciónhttp {}denginx.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ónssl_ciphersennginx.conf, esto es una lista.nginx_conf_ssl_protocols: La opciónssl_protocolsennginx.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énnginx_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 connginx_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_rootestá establecido, se actualizará para permitir permisos de tipohttpd_sys_content_ten 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
ansible-galaxy install galaxyproject.nginx