Files
michaelschiemer/x_ansible/playbooks/deploy.yml

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]