[PYTHON] Créer un serveur proxy avec nginx sur plusieurs serveurs distants à l'aide d'Ansible

Objectif

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.

Chose que tu veux faire

--Construisez un serveur sur plusieurs instances EC2 avec une seule commande.

Choses à faire

Que faire lors de l'exécution de la commande ansible.

  1. Installez nginx.
  2. Décrivez le fichier de configuration nginx.
  3. Démarrez nginx.
  4. Exécutez de 1. à 3. avec une seule commande pour plusieurs instances.

Installation

Installé dans l'environnement local pour fonctionner. Vous pouvez maintenant utiliser la commande ʻansible-playbook`.

$ pip install ansible

Ecrire un fichier de configuration

Structure du répertoire

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

fichier de configuration nginx

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.

fichier de configuration ansible

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

Décrivez l'hôte cible

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

Courir

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

Essayez d'utiliser Ansible

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

Créer un serveur proxy avec nginx sur plusieurs serveurs distants à l'aide d'Ansible
Créez un environnement python avec ansible sur centos6
SSL-active plusieurs sites sur un serveur avec nginx et Let's Encrypt
Construire un serveur de cache Pypi sur QNAP
Créez facilement un serveur DNS en utilisant Twisted
Construisez un serveur WebDAV simple sur Linux
Construire un serveur Samba sur Arch Linux
Construire un notebook jupyter sur un serveur distant (CentOS)
Configurons un serveur WEB avec Chromebook
Exécuter le notebook Jupyter sur un serveur distant
Créer un serveur local avec une commande sur une seule ligne [Mac]
Activer Jupyter Notebook avec conda sur un serveur distant
Monter le répertoire d'un autre serveur avec sshfs
Créez des serveurs sur Linux et des réseaux locaux avec Raspberry Pi NextCloud et le partage de bureau
Créer un environnement de développement Django à l'aide de pyenv-virtualenv sur Mac
Configurer un serveur de fichiers sur Ubuntu 20.04 à l'aide de Samba
[Partie 2] Construisons un serveur Web avec EC2 Linux
Créez un environnement Python sur votre Mac en utilisant pyenv
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Serveur proxy avec Docker
Créez un environnement de développement Django avec Docker! (Docker-compose / Django / postgreSQL / nginx)
Connexion SSH à un serveur privé à l'aide d'un serveur de plateforme dans EC2
Créez un environnement de développement Go avec les conteneurs distants de VS Code
Créez un serveur Web API à une vitesse explosive en utilisant HUG
Créez un environnement de développement confortable avec VSCode x Remote Development x Pipenv
Créez un serveur API Web ultra-rapide avec Falcon
Déployer l'application Django sur EC2 avec Nginx + Gunicorn + Supervisor
Créez un environnement python sur CentOS 7.7 pour votre serveur domestique
Créez rapidement un environnement d'exécution d'application Web Python3.4 + Nginx + uWSGI + Flask en utilisant pyenv sur Ubuntu 12.04
Utiliser une imprimante avec Debian 10
Créer un environnement Chainer à l'aide de CUDA et cuDNN sur une instance p2
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
Créez un environnement Python 2.7 64 bits avec TDM-GCC et MinGW-w64 sous Windows 7
Créez un environnement Python sur votre Mac avec Anaconda et PyCharm
Comment créer un environnement Python à l'aide de Virtualenv sur Ubuntu 18.04 LTS
Comment développer des conteneurs sur des serveurs distants avec VS Code Remote-Containers
Créez un environnement d'exécution Python à l'aide de GPU avec GCP Compute Engine
J'ai créé un chat-holdem de serveur de jeu de poker en utilisant websocket avec python
Ce sur quoi je suis tombé lors de l'utilisation de CodeIgniter sur un serveur Linux