{"id":7006,"date":"2020-07-21T14:22:45","date_gmt":"2020-07-21T12:22:45","guid":{"rendered":"https:\/\/whiteduck.de\/?p=7006"},"modified":"2026-07-31T00:16:22","modified_gmt":"2026-07-30T22:16:22","slug":"wie-man-ein-runbook-in-azure-automation-verwendet-um-mit-anderen-diensten-zu-interagieren-beispiel-neustarts-einer-webanwendung-mittels-powershell-runbook","status":"publish","type":"post","link":"https:\/\/whiteduck.de\/wie-man-ein-runbook-in-azure-automation-verwendet-um-mit-anderen-diensten-zu-interagieren-beispiel-neustarts-einer-webanwendung-mittels-powershell-runbook\/","title":{"rendered":"Wie man ein Runbook in Azure Automation verwendet um mit anderen Diensten zu interagieren (Beispiel: Neustarts einer Webanwendung mittels PowerShell-Runbook)"},"content":{"rendered":"<p>Azure Automation ist eine Cloud-basierte Automatisierungsplattform. Sie erm\u00f6glicht Ihnen die einfache Automatisierung von Aufgaben, deren manuelle Durchf\u00fchrung normalerweise viel Zeit in Anspruch nehmen w\u00fcrde. Dies funktioniert mit Hilfe von so genannten Runbooks.<\/p>\n<p>Ein Runbook ist eine M\u00f6glichkeit, das Cloud-Management <a href=\"https:\/\/whiteduck.de\/cloudrichtlinien-mit-azure-policy\/\" target=\"_blank\" rel=\"noreferrer noopener\">mit Azure<\/a> zu automatisieren. Es stehen mehrere Typen zur Auswahl.<\/p>\n<ul>\n<li>Grafische Runbooks<\/li>\n<li>PowerShell und PowerShell Workflow Runbooks<\/li>\n<li>Python Runbooks<\/li>\n<\/ul>\n<p>F\u00fcr weitere Einzelheiten zu Runbooks kann <a aria-label=\"undefined (opens in a new tab)\" href=\"https:\/\/docs.microsoft.com\/en-au\/azure\/automation\/automation-runbook-types\" target=\"_blank\" rel=\"noreferrer noopener\">die offizielle Dokumentation<\/a>, in der die einzelnen Typen mit ihren Vorteilen und Verwendungsmethoden klar aufgef\u00fchrt sind, genutzt werden.<\/p>\n<h2>Erstellen eines Azure Automation Kontos<\/h2>\n<p>Zun\u00e4chst einmal brauchen wir ein Azure Automation-Konto. Das k\u00f6nnen wir \u00fcber ARM oder auch eine Automation-Pipeline bzw. direkt im Azure-Portal anlegen. Um es einfach zu halten, verwenden wir in diesem Beispiel das Portal.<\/p>\n<div>\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-7.png\" data-orig-src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-7.png\" alt=\"\" class=\"lazyload wp-image-7011\" width=\"496\" height=\"219\" title=\"\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27496%27%20height%3D%27219%27%20viewBox%3D%270%200%20496%20219%27%3E%3Crect%20width%3D%27496%27%20height%3D%27219%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-7-200x88.png 200w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-7-300x132.png 300w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-7-400x176.png 400w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-7-600x265.png 600w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-7-768x339.png 768w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-7.png 782w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 496px) 100vw, 496px\" \/><\/figure>\n<\/div>\n<p>Wir k\u00f6nnen alle ben\u00f6tigten Informationen hier direkt ausf\u00fcllen. Der wichtige Schritt ist die Aktivierung der Option &#8220;Create Azure Run As Account&#8221;. Damit wird automatisch ein AAD-Antrag erstellt, der mit den Azure Services interagieren kann und mit dem Automatisierungskonto &#8220;verbunden&#8221; ist.<\/p>\n<p>Dadurch gibt es jetzt auch:<\/p>\n<ul>\n<li>Ein Automatisierungszertifikat namens AzureRunAsCertificate f\u00fcr das Konto mit dem von der AAD-Anwendung verwendeten privaten Schl\u00fcssel gibt.<\/li>\n<li>Eine Automatisierungsverbindung namens AzureRunAsConnection f\u00fcr das Konto, das die ApplicationId, TenantId, SubscriptionId und den Daumenabdruck des Zertifikats enth\u00e4lt.<\/li>\n<li>Die AAD-Anwendung mit einem selbstsignierten Zertifikat (Service Principal Account). Es ist zu beachten, dass die Anwendung standardm\u00e4\u00dfig Zugriff auf das gesamte Abonnement (Subscription) erh\u00e4lt. Es ist also in erster Linie wichtig, dass wir zum Zeitpunkt der Erstellung die notwendigen Rechte haben, um dies Rechte auch delegieren zu k\u00f6nnen. &nbsp;Dar\u00fcber hinaus sollten wir im Nachgang die Zugriffe anpassen, um die M\u00f6glichkeiten einzuschr\u00e4nken, was der Dienst danach tun kann.<\/li>\n<\/ul>\n<p>&nbsp;Gebraucht wird dies sp\u00e4ter, um die so genannte RunAsConnection im Code verwenden zu k\u00f6nnen.<\/p>\n<div>\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"406\" height=\"349\" src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-8.png\" data-orig-src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-8.png\" alt=\"\" class=\"lazyload wp-image-7013\" title=\"\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27406%27%20height%3D%27349%27%20viewBox%3D%270%200%20406%20349%27%3E%3Crect%20width%3D%27406%27%20height%3D%27349%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-8-200x172.png 200w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-8-300x258.png 300w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-8-400x344.png 400w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-8.png 406w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 406px) 100vw, 406px\" \/><\/figure>\n<\/div>\n<h2>Implementierung der Logik<\/h2>\n<p>Es sind im Folgenden drei Reiter im Azure Automation Service relevant (Runbooks, Schedules und Modules)<\/p>\n<div>\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"367\" height=\"503\" src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-9.png\" data-orig-src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-9.png\" alt=\"\" class=\"lazyload wp-image-7015\" title=\"\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27367%27%20height%3D%27503%27%20viewBox%3D%270%200%20367%20503%27%3E%3Crect%20width%3D%27367%27%20height%3D%27503%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-9-200x274.png 200w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-9-219x300.png 219w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-9.png 367w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 367px) 100vw, 367px\" \/><\/figure>\n<\/div>\n<p>Zuerst erstellen wir ein Runbook und dann installieren wir alle ben\u00f6tigten Az. Module, um die neuen PowerShell M\u00f6glichkeiten zu nutzen. Jetzt verbinden wir es noch mit einem \u201cSchedule\u201d um festzulegen wann es loslaufen soll. Um uns an unser Beispiel zu halten, w\u00e4hlen wir als Typ \u201ePowerShell\u201c aus.<\/p>\n<div>\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"330\" height=\"367\" src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-10.png\" data-orig-src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-10.png\" alt=\"\" class=\"lazyload wp-image-7017\" title=\"\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27330%27%20height%3D%27367%27%20viewBox%3D%270%200%20330%20367%27%3E%3Crect%20width%3D%27330%27%20height%3D%27367%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-10-200x222.png 200w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-10-270x300.png 270w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-10.png 330w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 330px) 100vw, 330px\" \/><\/figure>\n<\/div>\n<p>Dann laden wir die ben\u00f6tigten Module (Az.Account, Az.Automation, Az.Resources, Az.Websites und Az.Subscriptions). Dabei ist darauf zu achten, dass Az.Account eine Voraussetzung f\u00fcr die anderen Module ist und zuerst installiert werden muss.<\/p>\n<div>\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"768\" height=\"573\" src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-11.png\" data-orig-src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-11.png\" alt=\"\" class=\"lazyload wp-image-7019\" title=\"\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27768%27%20height%3D%27573%27%20viewBox%3D%270%200%20768%20573%27%3E%3Crect%20width%3D%27768%27%20height%3D%27573%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-11-200x149.png 200w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-11-300x224.png 300w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-11-400x298.png 400w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-11-600x448.png 600w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-11.png 768w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 768px) 100vw, 768px\" \/><\/figure>\n<\/div>\n<p>Jetzt k\u00f6nnen wir unser Runbook mit diesem kleinen Codeschnipsel erstellen.<\/p>\n<pre><code>#Create the Run as connection\r\n$connection = Get-AutomationConnection -Name AzureRunAsConnection #Logging into Azure Account with Service Principal identity$account= Connect-AzAccount `\r\n     -ServicePrincipal `\r\n     -Tenant $connection.TenantID `\r\n     -ApplicationId $connection.ApplicationID `\r\n     -CertificateThumbprint $connection.CertificateThumbprint#Secure that the correct subscription is selected (if there is more than one subscription)Select-AzSubscription -Subscription \"Subscription Name\"#Restart the WebAppRestart-AzWebApp `\r\n    -ResourceGroupName \"Website RG name\" `\r\n    -Name \"App service name\"\r\n<\/code><\/pre>\n<h2>Erstellen eines Schedules und verkn\u00fcpfen mit dem Runbook<\/h2>\n<p>Jetzt noch den Zeitplan:<\/p>\n<div>\n<figure class=\"aligncenter\"><img decoding=\"async\" width=\"353\" height=\"1024\" src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-12-353x1024.png\" data-orig-src=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-12-353x1024.png\" alt=\"\" class=\"lazyload wp-image-7021\" title=\"\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27353%27%20height%3D%271024%27%20viewBox%3D%270%200%20353%201024%27%3E%3Crect%20width%3D%27353%27%20height%3D%271024%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-12-200x580.png 200w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-12-353x1024.png 353w, https:\/\/whiteduck.de\/wp-content\/uploads\/2020\/07\/image-12.png 394w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 353px) 100vw, 353px\" \/><\/figure>\n<\/div>\n<p>Danach ist alles betriebsbereit und unsere Webanwendung wird zu gegebener Zeit und Datum neu gestartet. Wir k\u00f6nnen die Webanwendung durch andere Dienste ersetzen und nur den unteren Teil des Skripts \u00e4ndern und weiter anpassen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Azure Automation ist eine Cloud-basierte Automatisierungsplattform. Sie erm\u00f6glicht Ihnen die  [&#8230;]<\/p>\n","protected":false},"author":12,"featured_media":7030,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_tribe_events_control_status":"","_tribe_events_control_status_canceled_reason":"","_tribe_events_control_status_postponed_reason":"","_tribe_events_control_online":"","_tribe_events_control_online_url":"","footnotes":""},"categories":[143],"tags":[264,226,75,181,308,184,309],"class_list":["post-7006","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","tag-arm","tag-automation","tag-azure","tag-cloud","tag-cloudmanagement","tag-powershell","tag-runbook"],"acf":[],"_links":{"self":[{"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/posts\/7006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/comments?post=7006"}],"version-history":[{"count":5,"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/posts\/7006\/revisions"}],"predecessor-version":[{"id":27981,"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/posts\/7006\/revisions\/27981"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/media\/7030"}],"wp:attachment":[{"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/media?parent=7006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/categories?post=7006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/whiteduck.de\/en\/wp-json\/wp\/v2\/tags?post=7006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}