93 lines
2.6 KiB
YAML
93 lines
2.6 KiB
YAML
---
|
|
- name: Deployment in jeweilige Umgebung
|
|
hosts: web
|
|
become: true
|
|
gather_facts: true
|
|
|
|
vars:
|
|
project_source: "{{ playbook_dir }}/../.."
|
|
docker_compose_project_path: "{{ deploy_root }}"
|
|
|
|
pre_tasks:
|
|
- name: Überprüfe Server-Verbindung
|
|
ping:
|
|
tags: [always, check]
|
|
|
|
- name: Zeige Server-Informationen
|
|
debug:
|
|
msg: "Verbunden mit {{ inventory_hostname }} ({{ ansible_host | default('IP unbekannt') }})"
|
|
tags: [always, check]
|
|
|
|
roles:
|
|
- common
|
|
- docker
|
|
- nginx
|
|
|
|
tasks:
|
|
- name: Stelle sicher, dass Zielverzeichnisse existieren
|
|
file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
owner: "{{ deploy_user }}"
|
|
group: "{{ deploy_user }}"
|
|
mode: '0755'
|
|
loop:
|
|
- "{{ deploy_root }}"
|
|
- "{{ deploy_root }}/public"
|
|
- "{{ deploy_root }}/ssl"
|
|
- "{{ deploy_root }}/src"
|
|
- "{{ deploy_root }}/docker"
|
|
- "{{ deploy_root }}/docker/nginx"
|
|
- "{{ deploy_root }}/docker/php"
|
|
tags: [deploy, folders]
|
|
|
|
- name: Kopiere Docker-Konfigurationen
|
|
copy:
|
|
src: "{{ playbook_dir }}/../docker/"
|
|
dest: "{{ deploy_root }}/docker/"
|
|
mode: '0644'
|
|
owner: "{{ deploy_user }}"
|
|
group: "{{ deploy_user }}"
|
|
tags: [deploy, docker]
|
|
|
|
- name: Kopiere docker-compose.yml
|
|
copy:
|
|
src: "{{ playbook_dir }}/../docker-compose.yml"
|
|
dest: "{{ deploy_root }}/docker-compose.yml"
|
|
mode: '0644'
|
|
owner: "{{ deploy_user }}"
|
|
group: "{{ deploy_user }}"
|
|
tags: [deploy, docker]
|
|
|
|
- name: Container starten oder neustarten
|
|
ansible.builtin.shell: |
|
|
cd "{{ deploy_root }}" && \
|
|
docker-compose -f docker-compose.yml -p michaelschiemer up -d --build
|
|
tags: [deploy, docker]
|
|
|
|
post_tasks:
|
|
- name: Überprüfe Anwendungsstatus
|
|
uri:
|
|
url: "http://{{ ansible_host }}/"
|
|
return_content: no
|
|
status_code: 200, 301, 302, 403, 404
|
|
validate_certs: no
|
|
timeout: 10
|
|
register: app_status
|
|
ignore_errors: yes
|
|
delegate_to: localhost
|
|
become: no
|
|
tags: [check]
|
|
|
|
- name: Zeige Deployment-Ergebnis
|
|
debug:
|
|
msg: |
|
|
Deployment abgeschlossen:
|
|
- Server: {{ inventory_hostname }}
|
|
- Umgebung: {{ environment | default('unbekannt') }}
|
|
- Status: {% if app_status.status is defined and app_status.status == 200 %}Erfolgreich (HTTP 200){% else %}Überprüfung erforderlich{% endif %}
|
|
|
|
Anwendung sollte erreichbar sein unter: http://{{ ansible_host }}/
|
|
tags: [check]
|
|
|