Files
michaelschiemer/x_ansible/setup.yml

135 lines
3.6 KiB
YAML

---
# 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]