In diesem Blog nehmen wir ein einfaches Ansible-Server-Update-Skript und verwandeln es in ein Risikobasiertes Update-System. Hier werden die Server mit dem geringsten Risiko zuerst gepatcht, was uns die Möglichkeit gibt, gründlich zu testen, bevor wir zu Systemen mit höherer Priorität übergehen.
Die geheime Soße? Richten Sie klar definierte Gruppen ein, um einen reibungslosen Ablauf zu gewährleisten. Aber die eigentliche Frage ist: Können wir das ohne größere Änderungen an unserem Ansible-Skript vom letzten Mal hinbekommen? Finden wir es heraus!
Die Hostdatei ist das Herzstück dieser Änderung. Im letzten Beitrag haben wir eine statische Datei verwendet, die nach Servertypen gruppiert ist. Jetzt fügen wir eine zweite Ebene der Gruppierung nach Risikostufe hinzu – was die Hostdatei etwas komplexer macht.
Aber hier ist die Wendung: Was wäre, wenn unsere Hostdatei dynamisch aus einer allgemeineren Quelle generiert werden könnte? Das würde die Dinge flexibel halten und uns die endlose Dateibearbeitung ersparen!
Ansible kann mit dynamisch erstellten Hostdateien arbeiten, was uns eine flexiblere Möglichkeit bietet, den Überblick über Server zu behalten. In diesem Beispiel verwenden wir eine Excel-Datei, um unsere Hosts zu organisieren.
Beispiel hosts_data.xlsx-Struktur:
Host Name | Server Environment | Ansible User | Server Type | DNS | Notes |
---|---|---|---|---|---|
mint | dev | richard | desktop | desktop.sebostech.LOCAL | Mint desk top |
ansible_node | dev | ansible_admin | Ansible | ansible_node.sebostech.local | Development server; Only updates monthly |
clone_master | dev | ansible_admin | clone | clone.dev.sebostech.local | Development server; Only updates monthly |
mele | staging | richard | nas | nas.stage.sebostech.local | Testing server; Used for application testing |
pbs | production | root | backup server | pbs.prod.sebostech.local | Testing server; Used for application testing |
pve | production | root | hypervisor | api.stage.sebostech.local | Testing server; Used for application testing |
samba | production | richard | nas | nas.prod.sebostech.local | Critical server; Requires daily backup |
firewall | production | richard | firewall | firewall.sebostech.local | Critical server; Requires daily backup |
Die meisten IT-Abteilungen haben bereits eine Liste der Server in einer Excel-Datei gespeichert. Warum also nicht diese sinnvoll nutzen? Dieser Ansatz macht es einfach, unsere Ansible-Hosts ohne ständige manuelle Updates organisiert und auf dem neuesten Stand zu halten.
Aber wie nutzt Ansible die Excel-Datei? Lassen Sie uns untersuchen, wie wir diese Daten in ein nutzbares dynamisches Inventar umwandeln können!
## This will run agains all host ansible-playbook -i dynamic_inventory.py playbook.yml
Sie können auch die Option Umgebungsvariablen verwenden, um bestimmte Gruppen anzusprechen, basierend auf Serverumgebung, Servertyp oder sogar einer Kombination aus beidem:
## Just production SERVER_ENVIRONMENT="production" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web" ## Just nas SERVER_TYPE="nas" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web" ## production nas SERVER_ENVIRONMENT="production" SERVER_TYPE="nas" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web"
Brauchen Sie neue Gruppen? Aktualisieren Sie einfach die Excel-Datei und passen Sie das Python-Skript entsprechend an – ganz einfach!
Einen Blick auf den Python-Code finden Sie hier.
Als ich Ansible zum ersten Mal verwendete, war die Hosts-Datei meine erste Wahl. Aber als ich weitere Server hinzufügte, insbesondere solche mit Doppelrollen, wurde diese Datei immer komplexer.
Könnten Sie dazu eine herkömmliche Hosts-Datei verwenden? Sicher – aber es gibt ein paar Nachteile.
Bei einer Hosts-Datei würden Sie wahrscheinlich mit doppelten Einträgen oder zusätzlichen Variablen enden, um die gesamte Struktur zu erfassen, die Sie benötigen. Eine Excel-Datei hingegen bietet eine saubere, leicht zu pflegende Struktur, die für Ordnung sorgt.
In einer Unternehmensumgebung besteht eine gute Chance, dass bereits mindestens eine Excel-Datei mit einer Serverliste vorhanden ist. Warum also nicht davon profitieren?
Wenn Sie möchten, dass ich tiefer in den Python-Code eintauche, lassen Sie es mich einfach wissen!
Das obige ist der detaillierte Inhalt vonDynamische risikobasierte Updates mit Python und Excel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!