From 8d7c5f7cfbea95d3f6a42a1ab4acff48758e2a29 Mon Sep 17 00:00:00 2001 From: Jimmy Chevanne Date: Mon, 5 Feb 2024 16:02:10 +0100 Subject: [PATCH] creation role lb-front-ssl --- roles/lb-front-ssl/README.md | 22 +++++++++++ roles/lb-front-ssl/files/haproxy.cfg | 55 ++++++++++++++++++++++++++++ roles/lb-front-ssl/handlers/main.yml | 3 ++ roles/lb-front-ssl/tasks/main.yml | 34 +++++++++++++++++ 4 files changed, 114 insertions(+) create mode 100644 roles/lb-front-ssl/README.md create mode 100644 roles/lb-front-ssl/files/haproxy.cfg create mode 100644 roles/lb-front-ssl/handlers/main.yml create mode 100644 roles/lb-front-ssl/tasks/main.yml diff --git a/roles/lb-front-ssl/README.md b/roles/lb-front-ssl/README.md new file mode 100644 index 0000000..7091451 --- /dev/null +++ b/roles/lb-front-ssl/README.md @@ -0,0 +1,22 @@ +# Rôle lb-front +*** +Rôle lb-front pour la répartition de charge des serveurs web sur WordPress avec HAProxy + +## Tables des matières + 1. Que fait le rôle lb-front ? + 2. Ordre d'installation des serveurs. + + +## Que fait le rôle lb-front ? + +Le rôle lb-front va installer `haproxy` pour le load balancing/la répartition de charge et va configurer le fichier `/etc/haproxy/haproxy.cfg`. + +le fichier va faire du Round-Robin, un algoritme qui va équilibrer le nombre de requêtes entre s-lb-web1 et s-lb-web2. + +le site web est accessibe à l'adresse . + +## Ordre d'installation des serveurs. + 1. Le serveur s-lb avec haproxy qui va "initialiser" les sous-réseaux dans la DMZ. + 2. Le serveur s-lb-bd qui va contenir la base de données WordPress utilisée par les serveurs web. + 3. Le serveur s-nas qui va stocker la configuration WordPress et la partager aux serveurs web en NFS. Il va aussi utiliser la base de données sur stockée s-lb-bd. + 4. Les serveurs s-web1 et s-web2 qui vont installer Apache2, PHP et afficher le serveur WordPress. diff --git a/roles/lb-front-ssl/files/haproxy.cfg b/roles/lb-front-ssl/files/haproxy.cfg new file mode 100644 index 0000000..f33d8ff --- /dev/null +++ b/roles/lb-front-ssl/files/haproxy.cfg @@ -0,0 +1,55 @@ +global + log /dev/log local0 + log /dev/log local1 notice + chroot /var/lib/haproxy + stats socket /run/haproxy/admin.sock mode 660 level admin + stats timeout 30s + user haproxy + group haproxy + daemon + + # Default SSL material locations + ca-base /etc/ssl/certs + crt-base /etc/ssl/private + + # Default ciphers to use on SSL-enabled listening sockets. + # For more information, see ciphers(1SSL). This list is from: + # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ + ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS + ssl-default-bind-options no-sslv3 + +defaults + log global + mode http + option httplog + option dontlognull + timeout connect 5000 + timeout client 50000 + timeout server 50000 + errorfile 400 /etc/haproxy/errors/400.http + errorfile 403 /etc/haproxy/errors/403.http + errorfile 408 /etc/haproxy/errors/408.http + errorfile 500 /etc/haproxy/errors/500.http + errorfile 502 /etc/haproxy/errors/502.http + errorfile 503 /etc/haproxy/errors/503.http + errorfile 504 /etc/haproxy/errors/504.http + +frontend proxypublic + bind 192.168.100.10:80 + default_backend fermeweb + +backend fermeweb + balance roundrobin + option httpclose + option httpchk HEAD / HTTP/1.0 + server s-lb-web1 192.168.101.1:80 check + server s-lb-web2 192.168.101.2:80 check + + +listen stats + bind *:8080 + stats enable + stats uri /haproxy + stats auth admin:admin + + diff --git a/roles/lb-front-ssl/handlers/main.yml b/roles/lb-front-ssl/handlers/main.yml new file mode 100644 index 0000000..27f130b --- /dev/null +++ b/roles/lb-front-ssl/handlers/main.yml @@ -0,0 +1,3 @@ +--- + - name: restart haproxy + service: name=haproxy state=restarted diff --git a/roles/lb-front-ssl/tasks/main.yml b/roles/lb-front-ssl/tasks/main.yml new file mode 100644 index 0000000..6d0bab7 --- /dev/null +++ b/roles/lb-front-ssl/tasks/main.yml @@ -0,0 +1,34 @@ +- name: install haproxy + apt: + name: haproxy + state: present + +- name: creer un certificat auto-signé + openssl_certificate: + path: /etc/haproxy/crt/haproxy.crt + privatekey_path: /etc/haproxy/crt/private/haproxy.pem + csr_path: /etc/haproxy/crt/csr/haproxy.csr + provider: selfsigned + +- name: parametre backend et fontend + blockinfile: + path: /etc/haproxy/haproxy.cfg + block: | + frontend proxypublic + bind 192.168.100.10:80 + bind 192.168.100.10:443 ssl crt /etc/haproxy/crt/pritvate/haproxy.pem + http-request redirect scheme https unless { ssl_fc } + default_backend fermeweb + + backend fermeweb + balance roundrobin + option httpclose + option httpchk HEAD / HTTP/1.0 + server s-lb-web1 192.168.101.1:80 check + server s-lb-web2 192.168.101.2:80 check + +- name: redemarre haproxy + service: + name: haproxy +# state: restarted + enabled: yes