135 lines
3.3 KiB
YAML
135 lines
3.3 KiB
YAML
- 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
|