Teil 6 der Artikelserie über die Automatisierung mit Ansible.
Vorwort
In Teil 6 der Artikelserie über die Automatisierung mit Ansible anhand des Beispiels “Patch Deployment auf Windows” deployen wir patches auf unsere Windows-Server.
Nachtrag zu Teil 5
Unterdessen habe ich herausgefunden, warum der WSUS-Server im Lab keine Patches ausliefert: Ich habe einfach vergessen, den WSUS zu synchronisieren und Patches freizugeben… So sieht es aus, wenn auch tatsächlich patches gefunden werden:
Für die Installation der Patches erstellen wir ein neues Playbook. Erstelle bitte im Arbeitsverzeichnis eine neue Datei namens “windows-updates-deploy.yml” und editiere diese:
cd ~/git/ansible nano -w windows-updates-deploy.yml
Bitte fülle die Datei mit folgendem Inhalt:
--- - hosts: windows tasks: - name: install windows updates win_updates: category_names: - CriticalUpdates - SecurityUpdates - UpdateRollups reboot: no state: installed register: win_updates - name: reboot if needed win_reboot: connect_timeout: 15 pre_reboot_delay: 60 reboot_timeout: 3600 when: win_updates.reboot_required - name: print installed updates debug: msg: '{{ win_updates.updates }}'
Mit diesem Playbook installieren wir die Patches der Kategorien “CriticalUpdates”, “SecurityUpdates”, “UpdateRollups”, starten den Computer neu, wenn der Rückgabewert “reboot_required” des 1. Tasks, welchen wir in die Variable “win_updates” registriert haben, wahr ist und geben die installierten Updates in der Konsole aus.
Beachte bitte, dass Variablen in einer Entscheidung (when: win_updates.reboot_required) nicht in geschweifte Klammern eingeschlossen werden. Die Parameter der einzelnen Module findest Du wie immer in der Dokumentation. Ich habe die Timeouts explizit teilweise massiv erhöht, da ich im Lab teilweise über 100 Patches pro Maschine installiere und die Neustarts dementsprechend lange dauern.
Lass es uns testen. Setze bitte das folgende Kommando ab:
ansible-playbook -i inventory -u {{ windows_upn }} \ -l windows_wsus -k windows-updates-deploy.yml
Die Parameter dieses Befehls sind:
- -i inventory: Diese Inventar-Datei wird verwendet.
- -u {{ windows_upn }}: Benutze diesen Benutzernamen, muss mit dem Kerberos-Anmeldenahmen übereinstimmen.
- -l windows_wsus: Limitiere die Ausführung auf die Hostgruppe windows_wsus. So kannst Du die Wirkung des Playbooks, welches ja auf die Hostgruppe windows abzielt, weiter einschränken.
- -k: Frage nach dem Kennwort.
- windows-updates-deploy.yml: Führe dieses Playbook aus.
Nun kannst Du die Server, die Du möchtest, via Ansible aktualisieren!
Es ist empfohlen, nach jedem Deployment nochmals nach weiteren Patches suchen zu lassen und diese auch wieder zu deployen. Auch ein Blick in den WSUS kann nicht schaden, da wir ja nur drei Kategorien an Updates für die Installation zugelassen haben.
Wie Du siehst, hatte ich in meinem Lab eine weitere Runde zu machen:
Auf meinem WSUS habe ich noch Patches der Klassifikation “Updates” und “Feature Packs” freigegeben:
Daher habe ich mein Playbook dementsprechend angepasst:
Zufällig habe ich einen Screenshot einer Windows-Büchse erstellen können, welche durch Ansible gleich neu gestartet wird:
Bitte vergiss nicht, die Änderungen am git-repo zu commiten und zu pushen:
git commit -a -m "Created the playbooks for searching and deploying windows patches" git push
Nun fehlt nur noch Teil 7, in welchem wir AWX implementieren und bereitstellen. Ich möchte an dieser Stelle eine Pause einlegen, da es ein paar andere Sachen gibt, über welche ich gerne schreiben würde. Aber Teil 7 wird kommen – versprochen!
Ein super Tutorial!!! Ich bin froh es gefunden zu haben und freue mich auf Teil 7.