---
# Basis-Setup für Server
# Dieses Playbook richtet grundlegende Komponenten auf den Zielsystemen ein

- name: Basis-Setup für alle Zielsysteme
  hosts: all
  become: true
  gather_facts: true

  pre_tasks:
    - name: Aktualisiere den Paket-Cache
      apt:
        update_cache: yes
        cache_valid_time: 3600
      when: ansible_os_family == "Debian"
      tags: [system, update]
---
# Basis-Setup für Server
# Dieses Playbook richtet grundlegende Komponenten auf den Zielsystemen ein

- name: Basis-Setup für alle Zielsysteme
  hosts: all
  become: true
  gather_facts: true

  pre_tasks:
    - name: Debug Variablen
      debug:
        msg:
          - "Host: {{ inventory_hostname }}"
          - "Umgebung: {{ environment | default('undefiniert') }}"
          - "deploy_root: {{ deploy_root | default('undefiniert') }}"
          - "deploy_user: {{ deploy_user | default('undefiniert') }}"
      tags: [always, debug]

  roles:
    - common
    - docker
    - webserver

  post_tasks:
    - name: Zeige Erfolgsmeldung
      debug:
        msg: "Basiseinrichtung auf {{ inventory_hostname }} abgeschlossen"
      tags: [always]
    - name: Installiere grundlegende Pakete
      apt:
        name:
          - curl
          - wget
          - vim
          - htop
          - git
          - zip
          - unzip
          - python3-pip
        state: present
      when: ansible_os_family == "Debian"
      tags: [system, packages]

  roles:
    - common
    - docker
    - webserver
---
- name: Basis-Setup für alle Zielsysteme
  hosts: web
  become: true
  gather_facts: true

  pre_tasks:
    - name: Überprüfe Serververbindung
      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

  post_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: [setup, folders]

    - name: Erstelle Test-HTML-Datei
      copy:
        dest: "{{ deploy_root }}/public/index.html"
        content: |
          <!DOCTYPE html>
          <html>
          <head>
              <title>Server Setup erfolgreich</title>
              <style>
                  body { font-family: Arial, sans-serif; margin: 40px; }
                  h1 { color: #3273dc; }
                  .container { max-width: 800px; margin: 0 auto; padding: 20px; border: 1px solid #eee; border-radius: 5px; }
              </style>
          </head>
          <body>
              <div class="container">
                  <h1>Server-Setup erfolgreich!</h1>
                  <p>Diese Seite bestätigt, dass die grundlegende Servereinrichtung abgeschlossen ist.</p>
                  <p>Als nächstes können Sie das Deployment ausführen mit:</p>
                  <pre>./ansible/deploy.sh {{ environment | default('staging') }}</pre>
              </div>
          </body>
          </html>
        mode: '0644'
        owner: "{{ deploy_user }}"
        group: "{{ deploy_user }}"
      tags: [setup, test]
  post_tasks:
    - name: Zeige Erfolgsmeldung
      debug:
        msg: "Basiseinrichtung auf {{ inventory_hostname }} abgeschlossen"
      tags: [always]
