Azure scheduler jako management Azure VM

Dnes si ukážem postup jak využít Azure Scheduler pro automatizaci mamagementu Azure VMs.

Několik odkazů na dílčí dokumentaci:

Azure scheduler je služba pomocí které se dají naplánovat (podobně jako např. schůzky v Outlooku) akce: HTTP/HTTPS request a vložení zprávy do Storage Queue. Pro náš případ využijeme právě HTTP, neb celý Azure má REST API pomocí kterého jde ovládat.

Postup:

  1. Vygenerování certifikátu
  2. Vložení certifikátu do Azure subscription
  3. Export privátní části certifikátu
  4. Registrace Azure subscription v PowerShellu
  5. Vytvoření scheduled tasku

Vygenerování certifikátu:

Nejprve si potřebujeme vygenerovat certifikát, pomocí kterého se budou autorizovat požadavky na Azure API.  Certifikát vygenerujeme příkazem:

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

Příkaz spusťte v příkazové řádce Visual Studia:

Výsledkem bude soubor s koncovkou .cer V našem konkrétním případe Azure Automation.cer

Vložení certifikátu do Azure subscription

Certifikát je nutné zasociovat s Azure Subscription, kterou chceme ovládat. To uděláme přes management portál Azure v sekci Settings záložce Management certificates.

Export privátní části certifikátu

Pro vytvoření naplánované úlohy budeme potřebovat privátní část certifikátu ve formátu pfx. Ten získáme exportem pomocí mmc

Registrace Azure subscription v PowerShellu

Pro vytvoření scheduled tasku pomocí PowerShellu je nutné, aby PowerShell viděl naší Azure Subscription. Postup je následující:

$certName = "<Jméno certifikátu>"
$SubscriptionID = "<Subscription ID>"
$SubscriptionName = "<Uživatelské jméno subscripce>"
$Cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where { $_.Subject -like "CN=$certName" }
Set-AzureSubscription -SubscriptionName
$SubscriptionName -SubscriptionId $SubscriptionID -Certificate $Cert

Vytvoření scheduled tasku

Posledním krokem je pak samotné vytvoření scheduled tasku pomocí cmdletu New-AzureSchedulerHttpJob. Jelikož dokumentace je v odkazech, stejně tak jako popis jednotlivých operací, dávám zde jen ukázku jak naplánovat pravidelné restartování po 5ti minutách.

New-AzureSchedulerHttpJob `
-JobName <Jméno jobu> `
-Location "<Azure datacentrum>" `
-JobCollection "<Job collection>" `
-Interval 5 `
-Frequency Minute `
-Method POST `
-URI "https://management.core.windows.net/<Subscription ID>/services/hostedservices/<VM name>/deployments/<VM name>/roleinstances/<VM name>/Operations" `
-HttpAuthenticationType ClientCertificate `
-ClientCertificatePfx "<Cesta k pfx>" `
-ClientCertificatePassword <Heslo pfx> `
-Headers @{ "Content-Type" = "application/xml"; "x-ms-version"="2013-03-01" } `
-RequestBody "<RestartRoleOperation xmlns=`https://schemas.microsoft.com/windowsazure` xmlns:i=`"https://www.w3.org/2001/XMLSchema-instance`"><OperationType>RestartRoleOperation</OperationType></RestartRoleOperation>"

Tímto jsme právě nastavili náš první scheduled task. :-) Pokud je popis v některých bodech nejasný, nebo máte dotazy, prosím v komentářích. Děkuji

-<{Pospa}>-