marvinpinto.docker-nginx

docker-nginx

Statut de Construction

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 server dans le contexte upstream d'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

MIT

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

À propos du projet

Ansible role to manage and run the nginx docker container.

Installer
ansible-galaxy install marvinpinto.docker-nginx
Licence
mit
Téléchargements
375
Propriétaire
Computer nerd.