--- - name: Paquets (python venv/pip, git, nginx) ansible.builtin.apt: name: - python3-venv - python3-pip - git - nginx state: present update_cache: true cache_valid_time: 3600 - name: Utilisateur de service des webapps ansible.builtin.user: name: "{{ web_dorsal_utilisateur }}" system: true home: "{{ web_dorsal_racine }}" shell: /usr/sbin/nologin create_home: false - name: Creer la racine des webapps ansible.builtin.file: path: "{{ web_dorsal_racine }}" state: directory owner: root group: root mode: "0755" - name: Cloner / mettre a jour chaque app (clone superficiel) ansible.builtin.git: repo: "{{ item.depot }}" dest: "{{ web_dorsal_racine }}/{{ item.nom }}" version: "{{ item.branche | default('main') }}" depth: 1 force: true loop: "{{ web_dorsal_apps }}" loop_control: label: "{{ item.nom }}" notify: Redemarrer les webapps - name: Creer le venv + installer les dependances de chaque app ansible.builtin.pip: requirements: "{{ web_dorsal_racine }}/{{ item.nom }}/{{ item.requirements | default('requirements.txt') }}" virtualenv: "{{ web_dorsal_racine }}/{{ item.nom }}/.venv" virtualenv_command: python3 -m venv loop: "{{ web_dorsal_apps }}" loop_control: label: "{{ item.nom }}" notify: Redemarrer les webapps - name: Repertoire d'etat persistant (apps avec data_dir) ansible.builtin.file: path: "{{ item.data_dir }}" state: directory owner: "{{ web_dorsal_utilisateur }}" group: "{{ web_dorsal_utilisateur }}" mode: "0750" loop: "{{ web_dorsal_apps }}" loop_control: label: "{{ item.nom }}" when: item.data_dir is defined - name: Donner le code au user de service ansible.builtin.file: path: "{{ web_dorsal_racine }}/{{ item.nom }}" owner: "{{ web_dorsal_utilisateur }}" group: "{{ web_dorsal_utilisateur }}" recurse: true loop: "{{ web_dorsal_apps }}" loop_control: label: "{{ item.nom }}" - name: Deployer l'unite systemd de chaque app ansible.builtin.template: src: app.service.j2 dest: "/etc/systemd/system/{{ item.nom }}.service" owner: root group: root mode: "0644" loop: "{{ web_dorsal_apps }}" loop_control: label: "{{ item.nom }}" notify: Redemarrer les webapps - name: Deployer le vhost proxy local de chaque app ansible.builtin.template: src: proxy.conf.j2 dest: "/etc/nginx/sites-available/{{ item.nom }}" owner: root group: root mode: "0644" loop: "{{ web_dorsal_apps }}" loop_control: label: "{{ item.nom }}" notify: Recharger nginx web_dorsal - name: Activer le vhost proxy de chaque app ansible.builtin.file: src: "/etc/nginx/sites-available/{{ item.nom }}" dest: "/etc/nginx/sites-enabled/{{ item.nom }}" state: link loop: "{{ web_dorsal_apps }}" loop_control: label: "{{ item.nom }}" notify: Recharger nginx web_dorsal - name: Activer et demarrer chaque webapp ansible.builtin.systemd: name: "{{ item.nom }}" enabled: true state: started daemon_reload: true loop: "{{ web_dorsal_apps }}" loop_control: label: "{{ item.nom }}" when: not ansible_check_mode