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>
|
||
|---|---|---|
| ansible | ||
| .gitignore | ||
| CLAUDE.md | ||
| README.md | ||
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
ansible/files/config.yml– die einzige Konfigurationsquelle.ansible/– das Playbook, das die Migration ausführt. Details sieheansible/README.md.
Ablauf (Kurzfassung)
Das Playbook läuft pro Host aus dem Inventory und:
- lädt
ansible/files/config.yml(auf dem Control-Node) und wählt den Eintrag des Hosts aus derserver-Liste (kein Eintrag → der Host wird übersprungen); - preFly-Prüfungen (nur OK/Befund, keine Artefakte): Config, Lesbarkeit der
old_home_base/new_home_base-Basen, sowie die perusers.patternin/etc/passwdgefundenen User; - Home-Sync: spiegelt je User
old_home_base→new_home_baseper lokalemrsync(mit%userid%-Ersetzung), sofernsync_files: true. Gesynct wird nur die Schnittmenge ausansible/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 vonold_home_basesein),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/passwdgefunden 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 dieold_home_base-Basis direkt.