--- - name: Configurer Nginx avec authentification htpasswd et HTTPS via Certbot hosts: all become: yes tasks: - name: Mettre à jour la liste des paquets apt: update_cache: yes - name: Upgrader tous les paquets apt: upgrade: dist - name: Installer Nginx apt: name: nginx state: present update_cache: yes - name: Démarrer et activer Nginx service: name: nginx state: started enabled: yes - name: Créer le répertoire pour le site web file: path: "/var/www/{{ domain_name }}" state: directory owner: www-data group: www-data mode: '0755' # - name: Créer une page d'accueil simple # copy: # content: | # # Bienvenue sur {{ domain_name }} #

Bienvenue sur {{ domain_name }}

# # dest: "/var/www/{{ domain_name }}/index.html" # owner: www-data # group: www-data # mode: '0644' - name: Installer le paquet apache2-utils pour htpasswd apt: name: apache2-utils state: present update_cache: yes - name: Créer le fichier htpasswd avec le premier utilisateur command: > htpasswd -bc {{ htpasswd_file }} {{ users[0].username }} {{ users[0].password }} args: creates: "{{ htpasswd_file }}" # Ne recrée pas le fichier s'il existe déjà - name: Ajouter les utilisateurs suivants au fichier htpasswd command: > htpasswd -b {{ htpasswd_file }} {{ item.username }} {{ item.password }} loop: "{{ users[1:] }}" # Ignore le premier utilisateur déjà ajouté when: users | length > 1 # Exécute uniquement s'il y a plus d'un utilisateur - name: Configurer le site Nginx avec authentification (HTTP) template: src: nginx_site_http.conf.j2 dest: "/etc/nginx/sites-available/{{ domain_name }}" owner: root group: root mode: '0644' - name: Activer le site Nginx file: src: "/etc/nginx/sites-available/{{ domain_name }}" dest: "/etc/nginx/sites-enabled/{{ domain_name }}" state: link - name: Tester la configuration Nginx command: nginx -t register: nginx_test changed_when: false notify: Redémarrer Nginx - name: Redémarrer Nginx pour appliquer les changements service: name: nginx state: restarted - name: Installer Certbot et le plugin Nginx apt: name: - certbot - python3-certbot-nginx state: present update_cache: yes - name: Obtenir un certificat SSL avec Certbot command: > certbot --nginx -d {{ domain_name }} --non-interactive --agree-tos --email {{ email }} --redirect notify: Redémarrer Nginx handlers: - name: Redémarrer Nginx service: name: nginx state: restarted