docker-image-nginx/README.md
2019-03-18 08:27:44 -03:00

3.0 KiB

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.

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://servicios.unl.edu.ar/gitlab/administradores/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"