Rol nginx-docker
Este rol configura un container nginx en un host con Docker.
Genera la siguiente estructura de directorio para configurar nginx:
-
{{ nginx_config }}: en este directorio se puede sobreescribir la configuración de nginx (secciónhttp) mediante archivos.conf.-
00_ssl.conf(no editar): configura los certificados para HTTPS. -
10_server.conf(no editar): configura los servicios HTTP y HTTPS. -
common: directorio con directivas comunes (locations, logs, headers, etc) a incluir en las secciones server de HTTP y HTTPS. -
locations: directorio con locations (o cualquier directiva válida) a incluir en la secciónserverpara HTTPS. -
locations-http: directorio con locations (o cualquier directiva válida) a incluir en la secciónserverpara HTTP.
-
Variables
-
nginx_image: nombre de la imagen a bajar. Por defecto:nginx. -
nginx_ssl_certificate: path (en el host) al certificado SSL a usar para el servicio HTTPS. Valor por defecto:/etc/ssl/certs/host-rectorado.pem. -
nginx_ssl_private_key: path (en el host) a la clave privada del certificado SSL a usar para el servicio HTTPS. Valor por defecto:/etc/ssl/private/host-rectorado.key. -
nginx_config_volume: nombre (path) del volumen de configuración. Valor por defecto:nginx_conf, lo que significa que el volumen se montará en/var/lib/docker/volumes/nginx_conf/_data. -
nginx_webroot_volume: nombre (path) del volumen raíz (directiva root de nginx). Valor por defecto:nginx_webroot, lo que significa que el volumen se montará en/var/lib/docker/volumes/nginx_webroot/_data. -
nginx_publish_ports: puertos a publicar (sintaxis Docker). Valor por defecto:[ "80:80", "443:443" ] -
nginx_redirect_https: indica si forzar redireccion a https. Valor por defecto:yes. -
nginx_https_listen_args: array con argumentos extra para la directivalistenque escucha en el puerto 443. Ver valores posibles en la documentación oficial. No especificar la opciónssl, esta ya viene implícita. Por ejemplo: para activar http2, usar el valor['http2']. Valor por defecto:[](sin args extra). -
nginx_http_listen_args: array con argumentos extra para la directivalistenque escucha en el puerto 80. Ver valores posibles en la documentación oficial. Por ejemplo: para activar http2, usar el valor['http2']. Valor por defecto:[](sin args extra).
Variables exportadas
-
nginx_config_mountpoint: punto de montaje de la configuración de nginx. Valor por defecto:/var/lib/docker/volumes/nginx_conf/_data. -
nginx_webroot_mountpoint: punto de montaje del webroot de nginx. Valor por defecto:/var/lib/docker/volumes/nginx_webroot/_data.
Handlers
El rol define el siguiente handler, que puede ser usado por los roles subsiguientes:
restart nginx container: reinicia el container. Útil para recargar la configuración.
Ejemplo de uso
En el repositorio sobre el que estamos trabajando, agregar este rol como submódulo:
git submodule add https://git.mau.ro/mauro/ansible-role-nginx-docker.git roles/nginx-docker
En el playbook, incluir el rol:
# ...
roles:
# .. roles basicos ..
- nginx-docker
# .. roles de la aplicacion ..
En los roles de la aplicacion, definir una tarea que configura una
location para ser publicada mediante nginx:
- copy:
content: |
location / {
proxy_pass http://NOMBRE-DE-CONTAINER:PUERTO-DE-CONTAINER;
}
dest: "{{ nginx_config_mountpoint }}/locations/MI-APLICACION.conf"
notify: "restart nginx container"