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 suivantesnginx_reverse_proxy_backend_name:
chaîne, nom utilisé dans la configuration nginx pour se référer au backendnginx_reverse_proxy_domains
: liste des domaines accessibles au public à proxifiernginx_reverse_proxy_backends
: liste des serveurs backend, y compris les ports et autres paramètres valides pourserver
dans le contexteupstream
d'un fichier de configuration nginxnginx_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