Verwenden Sie Ansible, wie der Titel schon sagt, um einen Proxyserver mit nginx auf mehreren Remoteservern zu erstellen. Dieses Mal verwende ich eine AWS EC2-Instanz als Remote-Server.
Was ist zu tun, wenn der Befehl ansible ausgeführt wird?
Zum Ausführen in der lokalen Umgebung installiert.
Jetzt können Sie den Befehl ansible-playbook
verwenden.
$ 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;
}
}
Bereiten Sie nginx.conf
im selben Verzeichnis vor.
webapp.yml
- hosts: web-servers
user: ec2-user
sudo: True
vars:
proxy_pass: '<Ursprungs-URL>'
tasks:
#Installieren Sie nginx.
- name: Install nginx
yum: name=nginx state=latest
#Erstellen Sie ein Cache-Verzeichnis.
- name: Create Cache
action: file dest=/var/cache/nginx/cache state=directory owner=nginx group=nginx
#Lokaler Nginx.Kopieren Sie conf aus der Ferne.
- name: Copy the default nginx config file
action: copy src=./nginx.conf dest=/etc/nginx/nginx.conf
#Lokale myapp.j2 zu myapp.Kompilieren Sie zu conf und kopieren Sie remote.
- name: Write the original nginx config file
action: template src=./myapp.j2 dest=/etc/nginx/conf.d/myapp.conf
#Starten Sie 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
Wenn die Konfiguration so einfach ist wie das Starten eines Webservers, kann Ansible einfach geschrieben werden. Wenn Sie den Remote-Zielserver hinzufügen, wird er nur der Hosts-Datei hinzugefügt, sodass ich genau das tun konnte, was ich tun wollte :) Es ist eine Python-Bibliothek, aber es ist auch attraktiv, dass Sie nur yaml- und ini-dateiähnliche Hosts-Dateien schreiben. Ich empfehle es, weil ich es in ungefähr 3 Stunden geschafft habe, während ich mir das Tutorial angesehen habe usw .: D.
Recommended Posts