marvinpinto.docker-nginx
docker-nginx
Rôle Ansible pour gérer et exécuter le conteneur Docker nginx.
Exigences
Ce rôle a uniquement été testé sur Ubuntu 14.04. Comme il utilise le module Docker d'Ansible, vous devez vous assurer qu'une version relativement récente de docker-py et de docker est installée.
Nous utilisons tests/requirements.yml pour installer le rôle dépendant : geerlingguy.docker
Vous pouvez également utiliser ansible-galaxy install -r tests/requirements.yml ou mieux ajouter le même contenu dans votre propre fichier requirements.yml dans votre propre dépôt.
Exemples
Installez ce module depuis Ansible Galaxy dans le répertoire './roles' :
ansible-galaxy install marvinpinto.docker-nginx -p ./roles
Utilisez-le dans un playbook comme suit, en supposant que vous avez déjà configuré Docker :
- hosts: 'servers'
  roles:
    - role: geerlingguy.docker  # Vous pouvez utiliser n'importe quel autre rôle pour installer Docker, mais Docker est une exigence (voir ci-dessus)
    - 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;
        }
Consultez le defaults/main.yml pour les variables de rôle qui peuvent être remplacées ! Si vous avez besoin d'un playbook pour configurer Docker lui-même, jetez un œil au rôle Galaxy marvinpinto.docker.
À Configurer
- nginx_reverse_proxy_proxies: liste des configurations de proxy inversé ; chaque configuration a besoin des variables suivantes- nginx_reverse_proxy_backend_name:chaîne, nom utilisé dans la configuration nginx pour se référer au backend
- nginx_reverse_proxy_domains: liste des domaines accessibles au public à proxifier
- nginx_reverse_proxy_backends: liste des serveurs backend, y compris les ports et autres paramètres valides pour- serverdans le contexte- upstreamd'un fichier de configuration nginx
- nginx_reverse_proxy_config_name: nom à utiliser pour le fichier proxy (n'incluez pas l'extension '.conf', le rôle l'ajoutera)
 
Exemple de Playbook
---
# fichier 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/   # Au cas où votre site serait hébergé sur backend-name/path/
    root_redirect_location: /path/  # Au cas où votre site serait hébergé sur backend-name/path/ et qu'il faille rediriger vers ce site par défaut
  - config_name: app2proxy
    backend_name: my-backend-2
    backends:
      - localhost:1882
      - localhost:1883 backup  # agira comme sauvegarde, et nginx ne transmet le trafic que lorsque le primaire est indisponible.
    domains:
      - app2.192.168.88.10.xip.io
    balancer_config: least_conn; # Important d'ajouter un point-virgule à la fin ; sinon la configuration échouera
Licence
Informations sur l'Auteur
- Marvin Pinto
Collaborateurs
- Pablo Estigarribia (pablodav at gmail)
Plus de documentation
https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/#taxing-rewrites
http://nginx.org/en/docs/http/ngx_http_upstream_module.html
Remarques sur les paramètres nginx
Lors de l'ajout de backends, si vous préférez les ajouter en utilisant DNS, assurez-vous que le serveur peut résoudre le nom DNS avant de démarrer nginx. Si nginx ne parvient pas à résoudre le nom DNS, il ne démarrera pas.
Développeurs
Aidez à autotester ce rôle : https://github.com/CoffeeITWorks/ansible-generic-help/blob/master/Developers.md
Ansible role to manage and run the nginx docker container.
ansible-galaxy install marvinpinto.docker-nginx