- name: Zielverzeichnis erstellen file: path: "{{ deploy_root }}" state: directory owner: "{{ deploy_user }}" group: "{{ deploy_user }}" mode: '0755' - name: SSL-Verzeichnis sicherstellen file: path: "{{ deploy_root }}/ssl" state: directory owner: "{{ deploy_user }}" group: "{{ deploy_user }}" mode: '0755' - name: SSL-Zertifikate prüfen stat: path: "/etc/letsencrypt/live/{{ app_domain }}/fullchain.pem" register: ssl_certs - name: SSL-Zertifikate kopieren (falls vorhanden) copy: src: "{{ item.src }}" dest: "{{ item.dest }}" remote_src: yes owner: "{{ deploy_user }}" group: "{{ deploy_user }}" mode: '0644' loop: - { src: "/etc/letsencrypt/live/{{ app_domain }}/fullchain.pem", dest: "{{ deploy_root }}/ssl/fullchain.pem" } - { src: "/etc/letsencrypt/live/{{ app_domain }}/privkey.pem", dest: "{{ deploy_root }}/ssl/privkey.pem" } when: ssl_certs.stat.exists - name: public-Verzeichnis synchronisieren synchronize: src: "{{ playbook_dir }}/../../public/" dest: "{{ deploy_public }}/" delete: yes recursive: yes - name: Projekt-Stammdaten kopieren copy: src: "{{ playbook_dir }}/../../docker-compose.yml" dest: "{{ deploy_root }}/docker-compose.yml" owner: "{{ deploy_user }}" group: "{{ deploy_user }}" mode: '0644' - name: .env-Datei prüfen stat: path: "{{ project_root }}/.env" register: env_file - name: .env kopieren (falls vorhanden) copy: src: "{{ project_root }}/.env" dest: "{{ deploy_root }}/.env" mode: '0644' when: env_file.stat.exists - name: Quellcode synchronisieren synchronize: src: "{{ playbook_dir }}/../../src/" dest: "{{ deploy_root }}/src/" delete: yes recursive: yes - name: Docker-Verzeichnis prüfen stat: path: "{{ project_root }}/docker" register: docker_dir delegate_to: localhost become: false - name: Docker-Configs synchronisieren (falls vorhanden) synchronize: src: "{{ project_root }}/docker/" dest: "{{ deploy_root }}/docker/" delete: yes recursive: yes when: docker_dir.stat.exists - name: Rechte im Zielverzeichnis korrigieren file: path: "{{ deploy_root }}" state: directory owner: "{{ deploy_user }}" group: "{{ deploy_user }}" mode: '0755' recurse: yes # Cache-Verzeichnis für UID/GID 1000 (z.B. appuser im Container) - name: Stelle Schreibrechte für Cache-Verzeichnis her file: path: "{{ deploy_root }}/cache" state: directory owner: 1000 group: 1000 mode: '0775' recurse: yes - name: Docker Compose neu bauen und starten shell: | docker compose down docker compose up -d --build args: chdir: "{{ deploy_root }}" - name: PHP-Container für Composer starten shell: docker compose up -d php args: chdir: "{{ deploy_root }}" - name: Kurze Wartezeit bis PHP-Container bereit wait_for: timeout: 5 - name: Composer Abhängigkeiten installieren shell: docker compose exec -T php composer install --no-interaction args: chdir: "{{ deploy_root }}" register: composer_result ignore_errors: yes - name: Composer-Ergebnis anzeigen debug: var: composer_result.stdout_lines when: composer_result.stdout is defined - name: Composer-Fehler anzeigen debug: var: composer_result.stderr_lines when: composer_result.stderr is defined