97 lines
3.0 KiB
Markdown
97 lines
3.0 KiB
Markdown
# 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:
|
|
|
|
```bash
|
|
git submodule add https://servicios.unl.edu.ar/gitlab/administradores/ansible-role-nginx-docker.git roles/nginx-docker
|
|
```
|
|
|
|
En el playbook, incluir el rol:
|
|
|
|
```yaml
|
|
# ...
|
|
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:
|
|
|
|
```yaml
|
|
- copy:
|
|
content: |
|
|
location / {
|
|
proxy_pass http://NOMBRE-DE-CONTAINER:PUERTO-DE-CONTAINER;
|
|
}
|
|
dest: "{{ nginx_config_mountpoint }}/locations/MI-APLICACION.conf"
|
|
notify: "restart nginx container"
|
|
|
|
```
|