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:
- Popis REST rozhraní pro operace nad Azure VM (anglicky)
- Dokumentace cmdletu New-AzureSchedulerHttpJob (anglicky)
- Dokumentace Azure Scheduleru
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:
- Vygenerování certifikátu
- Vložení certifikátu do Azure subscription
- Export privátní části certifikátu
- Registrace Azure subscription v PowerShellu
- 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}>-