[PYTHON] Erstellen Sie mit Ansible einen Proxyserver mit nginx auf mehreren Remote-Servern

Zweck

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 du machen willst

Dinge die zu tun sind

Was ist zu tun, wenn der Befehl ansible ausgeführt wird?

  1. Installieren Sie nginx.
  2. Beschreiben Sie die Nginx-Konfigurationsdatei.
  3. Starten Sie nginx.
  4. Führen Sie 1. bis 3. mit einem Befehl für mehrere Instanzen aus.

Installation

Zum Ausführen in der lokalen Umgebung installiert. Jetzt können Sie den Befehl ansible-playbook verwenden.

$ pip install ansible

Schreiben Sie eine Konfigurationsdatei

Verzeichnisaufbau

.
|-- webapp.yml
|-- hosts
|-- nginx.conf
`-- myapp.j2

Nginx-Konfigurationsdatei

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.

ansible Konfigurationsdatei

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

Beschreiben Sie den Zielhost

[web-servers]
54.64.xxx.xxx
54.64.yyy.yyy
54.64.zzz.zzz

Lauf

$ ansible-playbook ./webapp.yml --private-key ~/.ssh/mykey.pem -i ./hosts

Versuchen Sie es mit Ansible

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

Erstellen Sie mit Ansible einen Proxyserver mit nginx auf mehreren Remote-Servern
Erstellen Sie eine Python-Umgebung mit ansible auf centos6
SSL-fähige mehrere Sites auf einem Server mit nginx und Let's Encrypt
Erstellen Sie einen Pypi-Cache-Server auf QNAP
Erstellen Sie einfach einen DNS-Server mit Twisted
Erstellen Sie einen einfachen WebDAV-Server unter Linux
Erstellen Sie einen Samba-Server unter Arch Linux
Erstellen Sie ein Jupyter-Notebook auf einem Remote-Server (CentOS).
Lassen Sie uns einen WEB-Server mit Chromebook einrichten
Führen Sie Jupyter Notebook auf einem Remote-Server aus
Erstellen Sie einen lokalen Server mit einem einzeiligen Befehl [Mac]
Aktivieren Sie Jupyter Notebook mit conda auf dem Remote-Server
Hängen Sie das Verzeichnis eines anderen Servers mit sshfs ein
Erstellen Sie Server in Linux und lokalen Netzwerken mit Raspberry Pi NextCloud und Desktop-Sharing
Erstellen einer Django-Entwicklungsumgebung mit pyenv-virtualenv auf einem Mac
Richten Sie mit Samba einen Dateiserver unter Ubuntu 20.04 ein
[Teil 2] Erstellen wir einen Webserver mit EC2 Linux
Erstellen Sie mit pyenv eine Python-Umgebung auf Ihrem Mac
Erstellen Sie eine Python-Entwicklungsumgebung mit pyenv unter MacOS
Proxyserver mit Docker
Erstellen Sie mit Docker eine Django-Entwicklungsumgebung! (Docker-compose / Django / postgreSQL / nginx)
SSH-Verbindung zu einem privaten Server über einen Plattformserver in EC2
Erstellen Sie eine Go-Entwicklungsumgebung mit den Remote-Containern von VS Code
Erstellen Sie mit hug einen Web-API-Server mit explosiver Geschwindigkeit
Erstellen Sie mit VSCode x Remote Development x Pipenv eine komfortable Entwicklungsumgebung
Erstellen Sie mit Falcon einen Light-Speed-Web-API-Server
Stellen Sie die Django-Anwendung auf EC2 mit Nginx + Gunicorn + Supervisor bereit
Erstellen Sie unter CentOS 7.7 eine Python-Umgebung für Ihren Heimserver
Erstellen Sie mit pyenv unter Ubuntu 12.04 schnell eine Ausführungsumgebung für Python3.4 + Nginx + uWSGI + Flask-Webanwendungen
Verwenden eines Druckers mit Debian 10
Erstellen Sie eine Chainer-Umgebung mit CUDA und cuDNN auf einer p2-Instanz
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Erstellen Sie eine 64-Bit-Python 2.7-Umgebung mit TDM-GCC und MinGW-w64 unter Windows 7
Erstellen Sie mit Anaconda und PyCharm eine Python-Umgebung auf Ihrem Mac
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
So entwickeln Sie Container auf Remote-Servern mit VS Code Remote-Containern
Erstellen Sie eine Python-Ausführungsumgebung mithilfe der GPU mit der GCP Compute Engine
Ich habe einen Pokerspielserver Chat-Holdem mit Websocket mit Python erstellt
Worauf ich bei der Verwendung von CodeIgniter auf einem Linux-Server gestoßen bin