No description
Find a file
Lucas 11c3af0a5e Home-Sync auf Positivliste files/users.yml einschraenken
Der rsync betrachtet jetzt nur noch die User aus ansible/files/users.yml:
- users.yml = flache Liste (ein Username je Zeile; '#'/Leerzeilen ignoriert,
  optionales '- ' toleriert), per lookup('file') auf dem Control-Node geladen
- gesynct wird je Host die SCHNITTMENGE aus dieser Liste und den vorhandenen
  Home-Verzeichnissen der old_home_base-Basis
- gelistete User ohne Home auf dem Host werden per debug genannt
- leere/fehlende Liste => es wird NICHTS gesynct (strikte Positivliste)
- preFly-Pruefungen bleiben unabhaengig (users.pattern)

README/CLAUDE.md/ansible-README um users.yml ergaenzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-10 12:32:24 +02:00
ansible Home-Sync auf Positivliste files/users.yml einschraenken 2026-08-10 12:32:24 +02:00
.gitignore Rueckbau: sync/ + local/ (Report-Tooling) entfernt; Ansible-Beispieldateien raus 2026-08-10 11:59:55 +02:00
CLAUDE.md Home-Sync auf Positivliste files/users.yml einschraenken 2026-08-10 12:32:24 +02:00
README.md Home-Sync auf Positivliste files/users.yml einschraenken 2026-08-10 12:32:24 +02:00

BMI 26 Migration (Ansible)

Umstellung von lokalen Usern auf Linux-Servern zu LDAP-Usern. Dieses Repo deckt die Vorbereitung ab: einen Bereitschafts-Check und das Umziehen der Home-Verzeichnisse ins neue Ziel umgesetzt als Ansible-Playbook.

Struktur

bmi/
├── ansible/
│   ├── playbook.yml         #   preFly-Checks (nur OK) + Home-Sync (rsync)
│   ├── files/config.yml     #   zentrale Konfiguration (Server-Liste, User, rsync)
│   ├── files/users.yml      #   Positivliste: nur diese User werden gesynct
│   └── README.md            #   Details, Aufruf, Verhalten
└── README.md

Ablauf (Kurzfassung)

Das Playbook läuft pro Host aus dem Inventory und:

  1. lädt ansible/files/config.yml (auf dem Control-Node) und wählt den Eintrag des Hosts aus der server-Liste (kein Eintrag → der Host wird übersprungen);
  2. preFly-Prüfungen (nur OK/Befund, keine Artefakte): Config, Lesbarkeit der old_home_base/new_home_base-Basen, sowie die per users.pattern in /etc/passwd gefundenen User;
  3. Home-Sync: spiegelt je User old_home_basenew_home_base per lokalem rsync (mit %userid%-Ersetzung), sofern sync_files: true. Gesynct wird nur die Schnittmenge aus ansible/files/users.yml (Positivliste, ein Username je Zeile) und den tatsächlich vorhandenen Homes leere Liste = nichts.

Ausführung, Optionen, Voraussetzungen und die genaue Abbildung der Logik stehen in ansible/README.md.

config.yml Hinweise

ansible/files/config.yml wird vom Playbook per include_vars gelesen (Standard-YAML, 2-Leerzeichen-Einrückung):

  • rsync.iconv optionale globale Zeichensatz-Konvertierung der Dateinamen (--iconv=<quelle>,<ziel>, z. B. "utf-8,iso-8859-1"). Behebt rsync-Fehler 23 / „Invalid argument (22)", wenn das Ziel-Dateisystem UTF-8-Sonderzeichen nicht akzeptiert. Nur GNU rsync (mit iconv-Support); sonst wird der Wert ignoriert. Leer = aus.

  • server: Liste je Host (Listeneinträge mit - auf Spalte 0, Felder mit 2 Leerzeichen eingerückt). Felder: hostname, old_home_base, new_home_base (beides Templates mit %userid%; %userid% muss die letzte Komponente von old_home_base sein), sync_files (true/false). Ein Host wird nur bearbeitet, wenn er hier gelistet ist; sync_files: false überspringt den rsync-Teil (die Prüfungen laufen trotzdem).

    server:
    - hostname: "xroulab01"
      old_home_base: "/home/ext/%userid%"
      new_home_base: "/opt/bmi/home/%userid%/xroulab01"
      sync_files: true
    
  • users.pattern Festtext-Muster, mit dem die zu migrierenden User in /etc/passwd gefunden werden (Match gegen die gesamte Zeile), z. B. @firma.de. Es gibt keine feste Userliste die User werden dynamisch ermittelt. Der Home-Sync nutzt das Pattern nicht er scannt die old_home_base-Basis direkt.