# Enterprise Auto-Upgrade Playbook für SLES & RHEL ## Übersicht Dieses Projekt bietet ein modulares, Enterprise-taugliches Ansible-Playbook für automatisierte Upgrades und Patch-Management von SLES (SUSE Linux Enterprise Server) und RHEL (Red Hat Enterprise Linux) Systemen. Es unterstützt: - Automatische OS-Erkennung - Upgrade nach Hersteller-Best-Practice - **VMware-Snapshots für Backup/Rollback** - Logging - Mail-Benachrichtigung (lokal & extern via mailx) - Dynamische Zuweisung von CLM-Channels via SUSE Manager API ## Verzeichnisstruktur ``` playbook/ ├── group_vars/ │ ├── all.yml # Globale Variablen │ └── vault.yml # Verschlüsselte Zugangsdaten (Vault) ├── host_vars/ # (Optional) Host-spezifische Variablen ├── inventories/ # (Optional) Inventare ├── playbook.yml # Haupt-Playbook ├── README.md # Diese Datei └── roles/ ├── common/ # Gemeinsame Tasks (z.B. Logging, mailx) ├── rhel_upgrade/ # RHEL-spezifische Upgrade-Tasks ├── sles_upgrade/ # SLES-spezifische Upgrade-Tasks ├── post_upgrade/ # Reboot etc. ├── suma_api_assign_clm/ # SUSE Manager API Integration └── vmware_snapshot/ # VMware Snapshot Handling ``` ## Voraussetzungen - Ansible >= 2.9 - python3-pyvmomi auf dem Ansible-Host (für VMware) - Zielsysteme: SLES oder RHEL, angebunden an SUSE Manager (ggf. venv-salt-minion) - Zugang zur SUSE Manager API (XML-RPC, meist Port 443) - Zugang zum vCenter (API) - Optional: Ansible Vault für sichere Zugangsdaten ## Nutzung 1. **Zugangsdaten für SUSE Manager & vCenter sicher speichern** - Erstelle eine Datei `vault.yml` in `group_vars`: ```yaml suma_api_url: "https://susemanager.example.com/rpc/api" suma_api_user: "admin" suma_api_pass: "geheim" vcenter_hostname: "vcenter.example.com" vcenter_user: "administrator@vsphere.local" vcenter_password: "dein_passwort" vcenter_datacenter: "DeinDatacenter" vcenter_folder: "/" ``` - Verschlüssele die Datei mit Ansible Vault: ```bash ansible-vault encrypt playbook/group_vars/vault.yml ``` - Passe `group_vars/all.yml` an: ```yaml # ... bestehende Variablen ... suma_api_url: "{{ vault_suma_api_url }}" suma_api_user: "{{ vault_suma_api_user }}" suma_api_pass: "{{ vault_suma_api_pass }}" vcenter_hostname: "{{ vault_vcenter_hostname }}" vcenter_user: "{{ vault_vcenter_user }}" vcenter_password: "{{ vault_vcenter_password }}" vcenter_datacenter: "{{ vault_vcenter_datacenter }}" vcenter_folder: "{{ vault_vcenter_folder }}" ``` - Lade die Vault-Datei im Playbook: ```yaml vars_files: - group_vars/all.yml - group_vars/vault.yml ``` - Playbook-Aufruf mit Vault-Passwort: ```bash ansible-playbook playbook.yml --ask-vault-pass -e "target_clm_version=prod-2024-06" ``` 2. **VMware Snapshot Handling** - Vor jedem Upgrade wird automatisch ein Snapshot erstellt. - Bei aktiviertem Rollback (Variable `rollback: true`) wird die VM auf den Snapshot zurückgesetzt. - Die Snapshot-Tasks laufen auf dem Ansible-Host (`delegate_to: localhost`). 3. **Upgrade auf bestimmte CLM-Version** - Beim Playbook-Aufruf die gewünschte Version angeben: ```bash ansible-playbook playbook.yml -e "target_clm_version=prod-2024-06" ``` - Das System wird per SUSE Manager API dem passenden Channel zugewiesen. 4. **Rollback aktivieren (optional)** - In `group_vars/all.yml`: ```yaml rollback: true ``` - Das Playbook setzt die VM dann auf den Snapshot zurück. 5. **Mail-Benachrichtigung konfigurieren** - Lokale Mail: `mail_to: "root@localhost"` - Externer SMTP: ```yaml mail_smtp_host: "smtp.example.com" mail_smtp_port: 587 mail_smtp_user: "user@example.com" mail_smtp_pass: "dein_passwort" ``` ## Wichtige Variablen (group_vars/all.yml) - `upgrade_dry_run`: true/false (Simulation) - `reboot_after_upgrade`: true/false - `log_dir`: Logverzeichnis - `rollback`: true/false - `mail_to`: Empfängeradresse - `mail_smtp_*`: SMTP-Parameter (optional) - `target_clm_version`: Ziel-CLM-Channel (z.B. prod-2024-06) - `suma_api_url`, `suma_api_user`, `suma_api_pass`: SUSE Manager API (empfohlen: Vault) - `vcenter_hostname`, `vcenter_user`, `vcenter_password`, `vcenter_datacenter`, `vcenter_folder`: VMware/vCenter (empfohlen: Vault) ## Sicherheitshinweis **Lege Zugangsdaten (API, Mail, vCenter) niemals im Klartext ab!** Nutze immer Ansible Vault für sensible Daten. ## Erweiterungsideen - Integration mit Monitoring/Alerting - Approval-Workflows - Reporting - Zusätzliche OS-Unterstützung ## Support & Doku - [SUSE Manager API Doku](https://documentation.suse.com/suma/) - [Red Hat Upgrade Guide](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/) - [SLES Upgrade Guide](https://documentation.suse.com/sles/) - [Ansible VMware Doku](https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_guest_snapshot_module.html) --- **Fragen oder Wünsche? Einfach melden!**