136 lines
5.2 KiB
Markdown
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!**
|