This commit is contained in:
jonnybravo
2026-09-14 11:36:01 +02:00
commit dfb7279a8c
21 changed files with 1464 additions and 0 deletions
@@ -0,0 +1,12 @@
---
# roles/webserver/defaults/main.yml
# Standard-Variablen — NIEDRIGSTE Priorität, leicht überschreibbar.
nginx_port: 80
domain: example.com
web_root: /var/www/html
packages:
- nginx
- git
- curl
@@ -0,0 +1,9 @@
---
# roles/webserver/handlers/main.yml
# Handler — laufen NUR, wenn eine Task sie per "notify" auslöst.
# (Bsp.: erst nach einer Änderung an der Konfiguration neu starten.)
- name: nginx neu starten
ansible.builtin.service:
name: nginx
state: restarted
+13
View File
@@ -0,0 +1,13 @@
---
# roles/webserver/meta/main.yml
# Rollen-Metadaten: Name, Beschreibung, Lizenz, Abhängigkeiten.
galaxy_info:
role_name: webserver
author: Dein Name
description: "Beispiel-Rolle: installiert & konfiguriert nginx (mit Templating)"
license: MIT
min_ansible_version: "2.10"
# Abhängigkeiten zu anderen Rollen (hier: keine)
dependencies: []
+39
View File
@@ -0,0 +1,39 @@
---
# roles/webserver/tasks/main.yml
# Die Aufgaben der Rolle. Jede Task ruft genau ein Modul auf (per FQCN).
- name: Betriebssystem ausgeben (Facts nutzen)
ansible.builtin.debug:
msg: "Läuft auf {{ ansible_distribution }} {{ ansible_distribution_version }}"
- name: Pakete installieren
ansible.builtin.apt:
name: "{{ packages }}"
state: present
update_cache: true
notify: nginx neu starten
- name: Webverzeichnis anlegen
ansible.builtin.file:
path: "{{ web_root }}"
state: directory
mode: '0755'
- name: Konfiguration aus Template rendern
ansible.builtin.template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
mode: '0644'
notify: nginx neu starten
- name: Startseite aus Template rendern (mit Schleife & Filter)
ansible.builtin.template:
src: index.html.j2
dest: "{{ web_root }}/index.html"
mode: '0644'
- name: Dienst aktivieren und starten
ansible.builtin.service:
name: nginx
state: started
enabled: true
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>{{ app_name }}</title>
</head>
<body>
<h1>{{ app_name }}</h1>
<p>Betriebssystem: {{ ansible_distribution }} {{ ansible_distribution_version }}</p>
<p>Installierte Pakete:</p>
<ul>
{% for pkg in packages %}
<li>{{ pkg | upper }}</li>
{% endfor %}
</ul>
<p>Port: {{ nginx_port }}</p>
</body>
</html>
@@ -0,0 +1,21 @@
# {{ ansible_managed }} <- von Ansible erzeugt, nicht manuell ändern!
user {{ nginx_user }};
worker_processes auto;
events {
worker_connections 1024;
}
http {
server {
listen {{ nginx_port }};
server_name {{ domain }};
root {{ web_root }};
index index.html;
# Fact des Zielsystems wird hier aufgelöst:
access_log /var/log/nginx/{{ ansible_hostname }}.access.log;
}
}
+6
View File
@@ -0,0 +1,6 @@
---
# roles/webserver/vars/main.yml
# Rollen-Variablen — HÖHERE Priorität als defaults, nicht leicht überschreibbar.
# Eignet sich für Werte, die fest zur Rolle gehören.
nginx_user: www-data