marvinpinto.docker-nginx

docker-nginx

Estado de Construcción

Rol de Ansible para gestionar y ejecutar el contenedor de nginx en Docker.

Requisitos

Este rol solo ha sido probado en Ubuntu 14.04. Dado que utiliza el módulo docker de Ansible, deberás asegurarte de que tienes instalada una versión reciente de docker-py y docker.

Utilizamos tests/requirements.yml para instalar el rol de dependencia: geerlingguy.docker.

También puedes usar ansible-galaxy install -r tests/requirements.yml o mejor, agregar el mismo contenido a tu propio archivo requirements.yml en tu propio repositorio.

Ejemplos

Instala este módulo desde Ansible Galaxy en el directorio './roles':

ansible-galaxy install marvinpinto.docker-nginx -p ./roles

Úsalo en un playbook como sigue, suponiendo que ya tienes Docker configurado:

- hosts: 'servers'
  roles:
    - role: geerlingguy.docker  # Puedes usar cualquier otro rol para instalar Docker, pero Docker es un requisito (ver arriba)
    - role: 'marvinpinto.docker-nginx'
      become: yes
      nginx_conf: |
        user root;
        worker_processes 1;

        error_log /var/log/nginx/error.log warn;
        pid /var/run/nginx.pid;

        events {
            worker_connections  1024;
        }

        http {
            include       /etc/nginx/mime.types;
            default_type  application/octet-stream;
            log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                              '$status $body_bytes_sent "$http_referer" '
                              '"$http_user_agent" "$http_x_forwarded_for"';
            access_log  /var/log/nginx/access.log  main;
            sendfile        on;
            keepalive_timeout  65;
            include /etc/nginx/conf.d/*.conf;
        }

Consulta el defaults/main.yml para las variables del rol que se pueden sobrescribir. Si necesitas un playbook para configurar Docker en sí, revisa el rol de Galaxy marvinpinto.docker.

Configuración Esperada

  • nginx_reverse_proxy_proxies: lista de configuraciones de proxy inverso; cada configuración necesita las siguientes variables:
    • nginx_reverse_proxy_backend_name: cadena, nombre que utiliza la configuración de nginx para referirse al backend.
    • nginx_reverse_proxy_domains: lista de dominios visibles al público que deben ser proxied.
    • nginx_reverse_proxy_backends: lista de servidores backend, incluyendo puertos y otros parámetros válidos para server en el contexto upstream de un archivo de configuración de nginx.
    • nginx_reverse_proxy_config_name: nombre para usar en el archivo de proxy (no incluyas la extensión '.conf', el rol la agregará).

Ejemplo de Playbook

---
# archivo group_vars/nginx_docker_proxy

nginx_reverse_proxy_proxies:
  - config_name: app1proxy
    backend_name: my-backend-1
    backends:
      - localhost:1880 weight=2
      - localhost:1881
    domains:
      - app1.192.168.88.10.xip.io
    locations:
      - /path/   # En caso de que tu sitio esté alojado en backend-name/path/
    root_redirect_location: /path/  # En caso de que tu sitio esté alojado en backend-name/path/ y deba redirigirse a este sitio por defecto.

  - config_name: app2proxy
    backend_name: my-backend-2
    backends:
      - localhost:1882
      - localhost:1883 backup  # actuará como respaldo, y nginx solo pasará el tráfico cuando el primario no esté disponible.
    domains:
      - app2.192.168.88.10.xip.io
    balancer_config: least_conn; # Importante agregar punto y coma al final ; si no, la configuración fallará.

Licencia

MIT

Información del Autor

  • Marvin Pinto

Colaboradores

  • Pablo Estigarribia (pablodav en gmail)

Más documentación

https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

Notas sobre la configuración de nginx

Al agregar backend, si prefieres agregarlos usando DNS, asegúrate de que el servidor pueda resolver el nombre DNS antes de iniciar nginx. Si nginx no resuelve el nombre DNS, no podrá iniciarse.

Desarrolladores

Ayuda en la prueba automática de este rol: https://github.com/CoffeeITWorks/ansible-generic-help/blob/master/Developers.md

Acerca del proyecto

Ansible role to manage and run the nginx docker container.

Instalar
ansible-galaxy install marvinpinto.docker-nginx
Licencia
mit
Descargas
375
Propietario
Computer nerd.