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:
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'
|
||||
Reference in new issue
Block a user