bbatsche.nginx
Rol de Ansible Nginx Passenger
Este rol instalará el servidor Nginx junto con los enlaces de Phusion Passenger para servir Node, Python o Ruby. También puede configurar un sitio para un dominio dado.
Requisitos
Este rol utiliza ACL de sistema de archivos de Linux y un grupo llamado "web-admin" para otorgar acceso a los directorios de configuración. Puedes configurar estos pasos manualmente o instalar el rol bbatsche.Base.
Variables del Rol
env_name— Si este servidor está en un entorno de "desarrollo", "producción" u otro tipo. El valor por defecto es "dev".http_root— Dónde se deben crear los directorios del sitio. El valor por defecto es "/srv/http".public_directory— Directorio visible al público para el sitio, por ejemplo, "public" o "htdocs". El valor por defecto es "public".max_upload_size— Tamaño máximo de carga en MB. El valor por defecto es "10".domain— Nombre de dominio para crear el sitio. No está definido por defecto.content_security_policy— Política de seguridad de contenido para añadir al dominio, formateada como un diccionario de listas o booleanos. Los valores apropiados tendrán automáticamente comillas simples ('). Por defecto: ver defaults/main.yml.nginx_configs— Archivos de configuración adicionales para añadir al final del bloqueserverdel dominio. Estos archivos deben ser copiados a/etc/nginx/conf.d. Añade configuraciones para tu tipo de servidor de aplicaciones aquí. El valor por defecto es un arreglo vacío.passenger_app— ¿Es el dominio actual una aplicación Passenger (es decir, Node, Ruby, Python)? Útil si la aplicación necesita reiniciarse después de actualizar configuraciones. Por defecto es no.copy_index— Copia un índice básico de index.html al sitio. Por defecto es no.use_ssl— Si se debe servir contenido a través de SSL (realmente TLS). Por defecto es no.use_letsencrypt— Si se debe utilizar Let's Encrypt para generar un certificado para un sitio. De lo contrario, se utilizará un certificado autofirmado a nivel de servidor. Por defecto es no.privatekey_bits— Número de bits a utilizar al generar una clave privada autofirmada. El valor por defecto es 4096.dhparam_bits— Número de bits a utilizar al generar un certificado DH estático. El valor por defecto es 2048. Utilizar valores mucho más altos puede llevar mucho tiempo.cert_valid_days— Número de días que el certificado autofirmado será válido. El valor por defecto es 3650 (aproximadamente 1 año).email_address— Dirección de correo electrónico para usar en el certificado autofirmado y Let's Encrypt. No está definida por defecto.country_name— Abreviatura de dos letras del país para usar al generar el certificado autofirmado. No está definida por defecto.state_name— Nombre del estado o provincia para usar al generar el certificado autofirmado. No está definida por defecto.locality_name— Nombre de la ciudad o localidad para usar al generar el certificado autofirmado. No está definida por defecto.org_name— Nombre de la organización para usar al generar el certificado autofirmado. No está definida por defecto.h5bp_commit— Hash de git o número de versión para usar al obtener archivos de HTML5 Boilerplate Server Configs. El valor por defecto es "3.1.0".setuptools_version— Versión desetuptoolsa instalar a través de Pip. El valor por defecto es 40.6.2.
SSL y Let's Encrypt
Let's Encrypt requiere que tu servidor web sea accesible externamente, por lo que no debes usarlo al generar sitios de desarrollo en Vagrant o Docker. Además, debes asegurarte de que tu DNS esté configurado correctamente antes de crear tu certificado. Una vez hecho esto, se emitirá un certificado completamente soportado y firmado para tu dominio, así como un trabajo cron para asegurarse de que se renueve automáticamente en el futuro. El servidor y el certificado han sido optimizados para la mejor seguridad posible, obteniendo una calificación de "A+" de SSL Labs desde octubre de 2017.

Ejemplo de Playbook
- hosts: servers
roles:
- { role: bbatsche.Nginx, domain: my-test-domain.test }
Licencia
MIT
Pruebas
Incluido con este rol hay un conjunto de especificaciones para probar cada tarea individualmente o en conjunto. Para ejecutar estas pruebas, primero debes tener Vagrant y VirtualBox instalados. Los archivos de especificaciones están escritos usando Serverspec, por lo que necesitarás Ruby y Bundler.
Para ejecutar el conjunto completo de especificaciones:
$ gem install bundler
$ bundle install
$ rake
El conjunto de especificaciones se dirigirá a Ubuntu Trusty Tahr (14.04), Xenial Xerus (16.04) y Bionic Beaver (18.04).
Para ver las tareas disponibles de rake (y especificaciones):
$ rake -T
Estas especificaciones no están destinadas a probar la idempotencia. Están diseñadas para verificar que las tareas especificadas realicen sus pasos esperados. La idempotencia se prueba independientemente a través de pruebas de integración.
Install and configure Nginx and Phusion Passenger along with any number of server blocks (aka vhosts).
ansible-galaxy install bbatsche.nginx