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}>-