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ón http) 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ón server para HTTPS.

    • locations-http: directorio con locations (o cualquier directiva válida) a incluir en la sección server 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 directiva listen que escucha en el puerto 443. Ver valores posibles en la documentación oficial. No especificar la opción ssl, 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 directiva listen 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"

Description
Nginx on a Docker container with self-signed TLS certs.
Readme 288 KiB
Languages
Nginx 73%
Dockerfile 27%