|
|
||
|---|---|---|
| .github | ||
| docs | ||
| playbook | ||
| scripts | ||
| .ansible-lint | ||
| .github-workflows-ci.yml | ||
| .gitlab-ci.yml | ||
| .pre-commit-config.yaml | ||
| CONTRIBUTING.md | ||
| Makefile | ||
| ansible.cfg | ||
docs/README.md
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
-
Zugangsdaten für SUSE Manager & vCenter sicher speichern
- Erstelle eine Datei
vault.ymlingroup_vars: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:
ansible-vault encrypt playbook/group_vars/vault.yml - Passe
group_vars/all.ymlan:# ... 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:
vars_files: - group_vars/all.yml - group_vars/vault.yml - Playbook-Aufruf mit Vault-Passwort:
ansible-playbook playbook.yml --ask-vault-pass -e "target_clm_version=prod-2024-06"
- Erstelle eine Datei
-
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).
-
Upgrade auf bestimmte CLM-Version
- Beim Playbook-Aufruf die gewünschte Version angeben:
ansible-playbook playbook.yml -e "target_clm_version=prod-2024-06" - Das System wird per SUSE Manager API dem passenden Channel zugewiesen.
- Beim Playbook-Aufruf die gewünschte Version angeben:
-
Rollback aktivieren (optional)
- In
group_vars/all.yml:rollback: true - Das Playbook setzt die VM dann auf den Snapshot zurück.
- In
-
Mail-Benachrichtigung konfigurieren
- Lokale Mail:
mail_to: "root@localhost" - Externer SMTP:
mail_smtp_host: "smtp.example.com" mail_smtp_port: 587 mail_smtp_user: "user@example.com" mail_smtp_pass: "dein_passwort"
- Lokale Mail:
Wichtige Variablen (group_vars/all.yml)
upgrade_dry_run: true/false (Simulation)reboot_after_upgrade: true/falselog_dir: Logverzeichnisrollback: true/falsemail_to: Empfängeradressemail_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
Fragen oder Wünsche? Einfach melden!