--- - 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/{{ intranet.nginx.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 {{ intranet.nginx.htpasswd_file }} {{ intranet.nginx.users[0].username }} {{ intranet.nginx.users[0].password }} args: creates: "{{ intranet.nginx.htpasswd_file }}" # Ne recrée pas le fichier s'il existe déjà - name: Ajouter les utilisateurs suivants au fichier htpasswd command: > htpasswd -b {{ intranet.nginx.htpasswd_file }} {{ item.username }} {{ item.password }} loop: "{{ intranet.nginx.users[1:] }}" # Ignore le premier utilisateur déjà ajouté when: intranet.nginx.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/{{ intranet.nginx.domain_name }}" owner: root group: root mode: '0644' - name: Activer le site Nginx file: src: "/etc/nginx/sites-available/{{ intranet.nginx.domain_name }}" dest: "/etc/nginx/sites-enabled/{{ intranet.nginx.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 {{ intranet.nginx.domain_name }} --non-interactive --agree-tos --email {{ intranet.nginx.email }} --redirect notify: Redémarrer Nginx handlers: - name: Redémarrer Nginx service: name: nginx state: restarted