Comme le titre l'indique, utilisez Ansible pour créer un serveur proxy avec nginx sur plusieurs serveurs distants. Cette fois, j'utilise une instance AWS EC2 comme serveur distant.
--Construisez un serveur sur plusieurs instances EC2 avec une seule commande.
Que faire lors de l'exécution de la commande ansible.
Installé dans l'environnement local pour fonctionner. Vous pouvez maintenant utiliser la commande ʻansible-playbook`.
$ pip install ansible
.
|-- webapp.yml
|-- hosts
|-- nginx.conf
`-- myapp.j2
myapp.j2
server {
listen 80;
server_name 0.0.0.0;
location / {
proxy_pass {{ proxy_pass }};
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache zone1;
proxy_cache_key $proxy_host$uri$args;
proxy_cache_valid 600s;
}
}
Préparez nginx.conf
dans le même répertoire.
webapp.yml
- hosts: web-servers
user: ec2-user
sudo: True
vars:
proxy_pass: '<URL d'origine>'
tasks:
#Installez nginx.
- name: Install nginx
yum: name=nginx state=latest
#Créez un répertoire de cache.
- name: Create Cache
action: file dest=/var/cache/nginx/cache state=directory owner=nginx group=nginx
#Nginx local.Copiez la conf à distance.
- name: Copy the default nginx config file
action: copy src=./nginx.conf dest=/etc/nginx/nginx.conf
#Myapp local.j2 à myapp.Compilez pour conf et copiez à distance.
- name: Write the original nginx config file
action: template src=./myapp.j2 dest=/etc/nginx/conf.d/myapp.conf
#Démarrez nginx.
notify:
- Start nginx
handlers:
- name: Start nginx
action: service name=nginx state=restarted
[web-servers]
54.64.xxx.xxx
54.64.yyy.yyy
54.64.zzz.zzz
$ ansible-playbook ./webapp.yml --private-key ~/.ssh/mykey.pem -i ./hosts
Si la configuration est aussi simple que de démarrer un serveur Web, Ansible peut être écrit simplement, et lors de l'ajout du serveur distant cible, il n'est ajouté qu'au fichier hosts, j'ai donc pu faire exactement ce que je voulais faire :) C'est une bibliothèque Python, mais il est également intéressant d'écrire uniquement des fichiers hôtes de type yaml et ini. Je le recommande car j'ai pu le faire en environ 3 heures en regardant le tutoriel etc.: D
Recommended Posts