
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ónserver
para HTTPS. -
locations-http
: directorio con locations (o cualquier directiva válida) a incluir en la secciónserver
para 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 directivalisten
que 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 directivalisten
que 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"