blog/content/notebooks/windows-updates-mit-saltstack-verteilen.ipynb

141 lines
7.5 KiB
Plaintext

{
"metadata": {
"name": "",
"signature": "sha256:a05e8318beff369aa10b02fb97e2cc73d8f220c3c0d751ce93d2fd00ee84f7f5"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Und weiter geht die wilde Reise um [SaltStack](http://saltstack.com/) Windows Hosts zu administrieren. Mein ewiges Projekt um um Windows Servern herumzukommen. Mittlerweise installier ich per Salt Software und update diese auch von einem Linux Server aus.\n",
"\n",
"Als Basis setze ich den [WSUS Offline Updater](http://www.wsusoffline.net) ein. Ein ganz tolles St\u00fcck Software, welches der Heise Verlag mal ver\u00f6ffentlicht hat und seitdem weiter entwickelt wird. Es ist eigentlich dazu gedacht Windows Update herunterzuladen und dann auf eine CD zu brennen mit der man dann Turnschuhadmin-m\u00e4\u00dfig durch das B\u00fcro rennen kann und offline die Updates einspielt. Nachdem die Update runtergeladen wurden, wird unter anderem ein Batch-Script erstellt das Massenupdate anschubst. Meine Herangehensweise ist vielleicht noch nicht 100% ausgereift aber erstmal ein Anfang.\n",
"\n",
"Den WSUS Offline Updater auf den Salt-Master runterladen, entpacken und die Pakete laden. In dem Verzeichnis `sh/` liegt das Script `DownloadUpdates.sh`. Dies ist unser Freund. Es wird aufgerufen und abgefragt welche Updates man gerne haben m\u00f6chte. Ist alles auf der Festplatte, legt man sich sein state-file an. Ich habe es einfach als `init.sls` in den entpackten `wsusoffline`-Ordner geschmissen. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"c:/windows/temp/wsusoffline:\n",
" file.recurse:\n",
" - source: salt://win/wsusoffline/client\n",
"\n",
"c:/windows/temp/wsusoffline/cmd/DoUpdate.cmd:\n",
" cmd.run\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Da passiert kein Hexenwerk. Ich kopiere die Windows-Updates, in ein tempor\u00e4res Verzeichnis, auf die Clients. Ganz praktisch das quasi ein Sync stattfindet. Er bringt die beiden Verzeichnisse auf einen Stand. Danach wird lokal das Update-Script ausgef\u00fchrt.\n",
"\n",
"Also los geht es mit `sudo salt 'testwindowsclient' state.sls win/wsusoffline`:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```\n",
"testwindowsclient:\n",
"----------\n",
" ID: c:/windows/temp/wsusoffline\n",
" Function: file.recurse\n",
" Result: True\n",
" Comment: The directory c:/windows/temp/wsusoffline is in the correct state\n",
" Changes: \n",
"----------\n",
" ID: c:/windows/temp/wsusoffline/cmd/DoUpdate.cmd\n",
" Function: cmd.run\n",
" Result: False\n",
" Comment: Command \"c:/windows/temp/wsusoffline/cmd/DoUpdate.cmd\" run\n",
" Changes: \n",
" ----------\n",
" pid:\n",
" 4252\n",
" retcode:\n",
" 3010\n",
" stderr:\n",
" Der Befehl \"chcp\" ist entweder falsch geschrieben oder\n",
" konnte nicht gefunden werden.\n",
" stdout:\n",
" Starting WSUS Offline Update (v. 9.4.2) at 14:33:59,78...\n",
" Checking user's privileges...\n",
" Determining system's properties...\n",
" Determining Windows licensing info...\n",
" Found Microsoft Windows version: 6.1.7601.18700 (w61 x64 deu sp1)\n",
" Found Microsoft Windows Software Licensing Management Tool info...\n",
" Name: Windows(R) 7, Ultimate edition\n",
" Beschreibung: Windows Operating System - Windows(R) 7, OEM_COA_SLP channel\n",
" Teil-Product Key: JX37D\n",
" Lizenzstatus: Lizenziert\n",
" Found Microsoft Office 2007 Word version: 12.0.4518.1014 (o2k7 deu sp0)\n",
" Checking medium content...\n",
" Medium build date: 11.02.2015\n",
" Medium supports Microsoft Windows (w61 x64 glb).\n",
" Medium does not support Microsoft Office (ofc glb).\n",
" Checking Windows Service Pack version...\n",
" Checking Windows Update Agent version...\n",
" Checking Windows Installer version...\n",
" Checking Windows Script Host version...\n",
" Checking Internet Explorer version...\n",
" Checking Windows Defender installation state...\n",
" Checking Office Service Pack versions...\n",
" Warning: Update kb2526086 not found.\n",
" Warning: Office Service Pack installation file(s) not found.\n",
" Checking state of service 'Windows Update'...\n",
" 14:34:02,93 - Listing ids of missing updates (please be patient, this will take a while)...\n",
" 14:37:42,05 - Done.\n",
" Listing ids of installed updates...\n",
" Listing update files...\n",
" Info: Skipping update kb982861 (Internet Explorer 9) due to matching black list entry.\n",
" Warning: Update kb2538243 (id: 729a0dcb-df9e-4d02-b603-ed1aee074428) not found.\n",
" Info: Skipping update kb2526086 (Office 2007 Service Pack 3) due to matching black list entry.\n",
" Info: Skipping update kb2917500 (Revoked Root Certificates) due to matching black list entry.\n",
" Info: Skipping update kb2841134 (Internet Explorer 11) due to matching black list entry.\n",
" Info: Skipping update kb890830 (Malicious Software Removal Tool) due to matching black list entry.\n",
" Installing updates...\n",
" Installing update 1 of 1...\n",
" Installing ..\\w61-x64\\glb\\windows6.1-kb2532531-x64_4625e47e04e8708b66895de5439ec7221cccd41b.cab...\n",
" Checking Microsoft Security Essentials installation state...\n",
" \n",
" Installation successful. Please reboot your system now.\n",
" \n",
" \n",
" Ending WSUS Offline Update at 14:37:49,32...\n",
"\n",
"Summary\n",
"------------\n",
"Succeeded: 1\n",
"Failed: 1\n",
"------------\n",
"Total: 2\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Was auff\u00e4llt:\n",
"* Es meint ein Job w\u00e4re gefailed. Irgendein komischer Fehler mit `chcp`. Danach laufen die Updates trotzdem an.\n",
"* Nat\u00fcrlich laufe ich in die Falle mit den Reboots. Ich muss noch rausfinden ob es nur hei\u00dft das er einen Reboot braucht damit die \u00c4nderungen in Kraft treten oder ob ich nach dem Reboot nochmal das Script anschmei\u00dfen muss.\n",
"\n",
"Es bleibt spannend. Aber es ist ein Anfang..."
]
}
],
"metadata": {}
}
]
}