os-upgrade-automation/docs/README.md

136 lines
5.2 KiB
Markdown

# 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!**