Basis aus 2nd-brain für LPIC-Prüfungsvorbereitung übernommen

Regeln, Standards, Kontextstruktur und Werkzeuge übernommen; 2nd-brain-
Inhalte (Stacks, Ansible-Inventar, Architektur, Knowledge) entfernt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Björn RundenandClaude Opus 5.5 committed 2026-10-29 21:56:53 +01:00
commit 7f6b8ebe07
70 files changed
+2816

No files matched your search

@@ -0,0 +1,10 @@
---
## @brief Defaults der Rolle example – alle Variablen mit Präfix example_
example_packages: [example] # zu installierende Pakete
example_service: example # systemd-Unit
example_config_file: /etc/example/example.conf # Ziel der eigenen Konfiguration
example_config_check_cmd: "example --check-config" # Prüfbefehl vor jedem Restart
example_smoke_test: true # verify.yml ausführen
example_secrets_source: vault # vault | vars (Test)
example_test_secrets: {} # nur mit secrets_source=vars, Datei außerhalb des Repos
@@ -0,0 +1,13 @@
---
## @brief Handler-Kette: erst Konfiguration prüfen, dann neu starten
- name: Konfiguration prüfen
ansible.builtin.command: "{{ example_config_check_cmd }}"
changed_when: false
listen: example config changed
- name: Dienst neu starten
ansible.builtin.service:
name: "{{ example_service }}"
state: restarted
listen: example config changed
@@ -0,0 +1,11 @@
---
galaxy_info:
role_name: example
author: "<AUTOR – aus ai/context/responsible.md>"
description: "<Dienst> installieren und konfigurieren"
license: proprietary
min_ansible_version: "2.15"
platforms:
- name: Debian
versions: [trixie]
dependencies: []
@@ -0,0 +1,13 @@
---
## @brief Eigene Konfigurationsdateien schreiben (Templates aus files/example/)
- name: Konfiguration schreiben
ansible.builtin.template:
src: "{{ ans_files }}/example/example.conf.j2"
dest: "{{ example_config_file }}"
owner: root
group: root
mode: "0640"
backup: true
diff: false # Template enthält Geheimnisse – nicht entfernen
notify: example config changed
@@ -0,0 +1,9 @@
---
## @brief Pakete installieren
- name: Pakete installieren
ansible.builtin.apt:
name: "{{ example_packages }}"
state: present
update_cache: true
cache_valid_time: 3600
@@ -0,0 +1,39 @@
---
## @brief Rolle example – Ablauf: prüfen → Geheimnisse → installieren → konfigurieren → testen
- name: Plattform prüfen (Debian >= 13 erwartet)
ansible.builtin.assert:
that:
- ansible_facts['os_family'] == 'Debian'
- ansible_facts['distribution_major_version'] | int >= 13
fail_msg: "{{ inventory_hostname }}: {{ ansible_facts['distribution'] }} {{ ansible_facts['distribution_version'] }} – Rolle ist für Debian >= 13 gebaut."
quiet: true
tags: [always]
- name: Geheimnisse laden
ansible.builtin.import_tasks: secrets.yml
tags: [always]
- name: Installieren
ansible.builtin.import_tasks: install.yml
tags: [install]
- name: Konfigurieren
ansible.builtin.import_tasks: config.yml
tags: [config]
- name: Handler jetzt ausführen (Config-Check vor Restart)
ansible.builtin.meta: flush_handlers
tags: [always]
- name: Dienst aktiv und gestartet
ansible.builtin.service:
name: "{{ example_service }}"
state: started
enabled: true
tags: [install, config]
- name: Smoke-Test
ansible.builtin.import_tasks: verify.yml
when: example_smoke_test | bool
tags: [verify]
@@ -0,0 +1,14 @@
---
## @brief Geheimnisse aus dem Secret-Store (Default) oder aus Testvariablen laden
- name: Geheimnisse aus dem Secret-Store lesen
ansible.builtin.set_fact:
example_secrets: "{{ lookup('community.hashi_vault.vault_kv2_get', ans_vault_kv_path ~ '/example', engine_mount_point=ans_vault_kv_mount).secret }}"
when: example_secrets_source == 'vault'
no_log: true
- name: Geheimnisse aus Testvariablen übernehmen
ansible.builtin.set_fact:
example_secrets: "{{ example_test_secrets }}"
when: example_secrets_source == 'vars'
no_log: true
@@ -0,0 +1,9 @@
---
## @brief Smoke-Test: Dienst läuft und antwortet
- name: Dienststatus abfragen
ansible.builtin.command: systemctl is-active {{ example_service }}
register: example_active
check_mode: false
changed_when: false
failed_when: example_active.stdout != 'active'