• Microsoft CSP
    Microsoft CSP

    S Microsoft CSP transformujeme  business pro dosažení obchodních a technologických cílů.

  • Managed Microsoft 365
    Managed Microsoft 365

    Zajistíme bezpečnost, produktivitu a optimalizaci. Vy se soustředíte na podnikání, my na IT.

  • Dozvědet se víc

    Získejte více informací o produktech Microsoft solution partner

  • Chci vědět víc

    Získejte více informací o produktech Kybernetická bezpečnost

  • Copilot M365
    Copilot M365

    Copilot pro Microsoft 365 nabízí pokročilé AI funkce integrované do byznysových nástrojů.

  • Copilot Osobní trenér
    Copilot Osobní trenér

    Žádné teorie, jen praktické rady a tipy, které vám ušetří čas a energii při vaši každodenní práci.

  • Dozvědet se víc

    Získejte více informací o produktech Umělá inteligence

  • Chci vědět víc

    Získejte více informací o produktech Cloudová infrastruktura

    • KPCS řeší technologické výzvy efektivně a v čas. Tím podporujeme růst vašeho podnikání.

      • Dozvědet se víc

        Získejte více informací o produktech Microsoft solution partner

      • Microsoft CSP
        Microsoft CSP

        S Microsoft CSP transformujeme  business pro dosažení obchodních a technologických cílů.

      • Managed Microsoft 365
        Managed Microsoft 365

        Zajistíme bezpečnost, produktivitu a optimalizaci. Vy se soustředíte na podnikání, my na IT.

    • Kybernetická bezpečnost je klíčová. S našimi službami jsou vaše data a systémy chráněny.

      • Chci vědět víc

        Získejte více informací o produktech Kybernetická bezpečnost

    • Zmapujte svůj potenciál AI a najděte nejlepší řešení. AI bude vaším důvěryhodným kolegou.

      • Dozvědet se víc

        Získejte více informací o produktech Umělá inteligence

      • Copilot M365
        Copilot M365

        Copilot pro Microsoft 365 nabízí pokročilé AI funkce integrované do byznysových nástrojů.

      • Copilot Osobní trenér
        Copilot Osobní trenér

        Žádné teorie, jen praktické rady a tipy, které vám ušetří čas a energii při vaši každodenní práci.

    • Azure je flexibilní a škálovatelná platforma, která poskytuje moderní produkty, služby a provoz.

      • Chci vědět víc

        Získejte více informací o produktech Cloudová infrastruktura

  • Reference
  • Proč KPCS
  • Kariéra
  • Novinky
  • Kontakt
Zpět na novinky

Azure ARM šablony v PowerShellu

Blog
12. srpna 2021 Vukašin Terzić
Azure ARM šablony v PowerShellu

Myslím si, že pracovat se šablonami Azure Resource Manager (ARM), které jsou postavené na syntaxí JSON, může být poněkud těžké a nepřehledné. Jde o jinou logiku a syntaxi, než jakou používáme pro správu prostředí za pomocí skriptovacích nástrojů jako jsou PowerShell nebo CLI. Řekl bych, že to je právě ten důvod, proč firmy nevyužívají výhod ARM šablon a snaží se vytvářet nebo spravovat Azure prostředí jinak. Například pomocí jiných Infrastructure as a Code nástrojů nebo manuální konfigurací.

Předělat ARM šablony, nebo vymyslet nový jazyk, by pravděpodobně znamenalo provádět velké změny v Azure Resource Manager a adopce na nový jazyk by naopak trvala velmi dlouho. Proto Microsoft přichází s již druhou iterací Domain Specific Language, který nám umožní jednodušší způsob psaní ARM šablon. Nejdříve byl představen Azure Bicep a nedávno byl oznámen PowerShell modul PSArm, o kterém dnes budu psát.

Tento nový modul PowerShell je navržen tak, abychom mohli pomocí příkazů a syntaxe PowerShellu vytvářet šablony ARM. Znalosti nativních příkazů a logiky PowerShellu by nám k vytváření šablon ARM mělo vystačit.

Co to je PSArm?

PSArm využívá silné stránky prostředí PowerShell k vylepšení procesu a postupu tvorby ARM šablon.

Je nutné podotknout, že PSArm je aktuálně experimentální modul, v takzvaném Public Preview. Dokud nepřejde do Generally Available, tak s ním není spojená žádná podpora a Microsoft může kdykoli zavést nejnovější změny. Jinými slovy, vyzkoušejte to, otestujte, ale momentálně se na to nespoléhejte v produkčním prostředí. Všiml jsem si, že tato novinka získala velmi dobrý ohlas ze strany uživatelů, a myslím si, že je jen otázka času kdy to začne být podporovaná.

Na rozdíl od Azure Bicep, PSArm není samostatný nový jazyk, který se musíme učit. PSArm syntaxi vkládáme do klasického PowerShell skriptu. Je to jen nový modul, který přináší nové cmdlety, ale vše ostatní zůstává. Oba projekty, Bicep a PSArm, však ke generování šablon ARM používají stejný back-end prostředí.

Instalace PSArm PowerShell modulu

PSArm modul je k dispozici pro instalaci prostřednictvím PowerShell Gallery a vyžaduje minimální verzi PowerShell 5.1.

Nainstalujete jej stejně jako jakýkoli jiný modul Galerie prostředí PowerShell pomocí příkazu Install-Module. Protože je však modul v alfa verzi, přidáte parametr -AllowPrelease.

Install-Module -Name PSArm -AllowPrelease

Struktura a Syntaxe

ARM šablony píšeme jako jakýkoli jiný PowerShell skript. ARM šablony mají příponu .psarm.ps1.

V rámci souboru PowerShell definujeme prostředky Azure uvnitř bloku ARM pomocí složených závorek.

Arm {}

Dále pak v rámci tohoto bloku definujeme zdroje pomoci klíčového slova Resource. Následují pak atributy, které chceme definovat.

Název

Namespace, například: ‘Microsoft.Storage’ nebo ‘Microsoft.Network’)

Druh zdroje, například ‘storageAccounts’ nebo ‘virtualNetworks’

Verze Api

Lokalita

Podle mě je taková syntaxe výrazně jednodušší než ARM JSON. Zde je příklad pro vytvoření jednoduchého Storage Accountu:

Resource '<name>' -Namespace Microsoft.Storage -Type storageAccounts -ApiVersion '<version>' -Kind '<type>' -Location '<region>' {}

Vidíte, že způsob psaní tohoto příkazu, se neliší od běžného PowerShell skriptu, který všichni známe a používáme.

Pro porovnání, zde je definice vlastností stejného typu zdroje pomocí ARM template:

{
 "name": "<name>",
 "type": "Microsoft.Storage/storageAccounts",
 "apiVersion": "<version>",
 "kind": "<type>",
 "location": "<region>"
}

Vidíte, že v PSArm definujeme stejné vlastnosti jako v ARM Templates, jen je pak celková konstrukce výrazně přehlednější.

Již u prvního příkladu ale narazíme na omezení, že ne všechny properties definujeme přímo v části Resources. Myslím si, že tpoužití modulu se tím trochu komplikuje, ale vzhledem k velkému množství různých druhů Azure Resources to nešlo udělat jinak. Ostatní nedefinované vlastností pak definujeme uvnitř závorek. Zde je příklad plná definice Storage Accountu:

Arm {
  Resource 'armdemo' -Namespace Microsoft.Storage -Type storageAccounts -ApiVersion 2021-01-01 -Kind StorageV2 -Location 'westus2' {
​    ArmSku Standard_LRS
​    properties {
​      accessTier 'Hot'
​      supportsHttpsTrafficOnly $true
​      allowBlobPublicAccess $false
​      minimumTlsVersion 'TLS1_2'
​    }
  }
}

Vidíte, že PSArm přínáší jednodušší a přehlednější syntaxi pro deklarativní definici Azure Resources. Z mého pohledu je další obrovskou výhodou možnost psaní jakéhokoli jiného PowerShell skriptu ve stejném souboru. V našem případě, můžeme na začátek souboru přidat Get-Random příkaz pro generaci unikátního názvu pro Storage Account, nebo provést validaci, jestli tento název již existuje.

$randint = Get-Random -Minimum 1000 -Maximum 9999
$StorageAccountName = ‘armdemo’+$randint

Jako název v Resource části pak použijeme hodnotu proměnné místo psaní konkrétního jména.

Dále můžeme pracovat i s parametry, ale to si ukážeme za chvíli.

Kompilace z PSArm PowerShellu na ARM šablonu

Pro kompilaci nepotřebujeme instalovat žádné další nástroje. PSArm modul již obsahuje cmdlet Publish-PSArmTemplate, který použijeme pro převod souboru .psarm.ps1 na šablonu ARM ve formátu .json. Obsahuje také parametr -Path který rekurzivně shromažďuje všechny soubory ve formátu .psarm.ps1 v uvedené složce a použije je k vytvoření ARM šablon.

Ve výchozím nastavení vytvoří příkaz Publish-PSArmTemplate nový soubor ARM šablony pod názvem template.json. Název výstupního souboru můžete určit pomocí parametru -OutFile. Pokud výstupní soubor již existuje, přepište soubor pomocí parametru -Force.

A protože se jedná o PowerShell, můžeme v tomto našemu kroku.psarm.ps1 souboru podstrčit i parametry.

Zde je příklad:

Publish-PSArmTemplate -Path .\newStorageAccount.psarm.ps1 -Parameters @{
  storageAccountName = 'storageName'
  location = 'location'
}

Rád bych ještě zmínil, že vytvořením souboru ve formátu ARM šablony nedochází k automatickému nasazení do Azure. Získáme tímto pouze ARM šablonu, kterou do Azure deployujeme stejným způsobem jako je tomu do teď.

Například nasazením v Azure Portálu, nebo příkazem New-AzResourceGroupDeployment.

New-AzResourceGroupDeployment -ResourceGroupName myRG -TemplateFile .\template.json

Využití PSArm v praxi

Vytváření nových resources v Azure manuálně může mít negativní dopad na konzistenci a zabezpečení zdrojů často to může negativně ovlivnit i náklady na provoz. Je snadné udělat chybu při pojmenování, nebo při výběru správné velikosti a regionu. Řešením může být právě vytváření prostředků pomocí nástrojů Infrastructure as a Code.

PSArm nám zjednodušuje a přibližuje využívání Azure Resource Manager Templates, a nemusíme se učit složitou syntaxi nebo nový jazyk.

Myslím si, že se PSArm má velký potenciál, protože je postaven na jazyce PowerShell, který nesmí chybět žádnému IT správci. Ale vzhledem k tomu, že se stale jedná o experimentalní nepodporovanou verzi, ještě není připraven pro nasazování v produkčním prostředi.

Novinky v KPCS

KPCS CZ získala specializaci Build AI Apps on Microsoft Azure
KPCS CZ získala specializaci Build AI Apps on Microsoft Azure

V době, kdy umělá inteligence mění způsob, jakým firmy inovují a komunikují se zákazníky, je důležité být připraven a mít potřebné znalosti i zkušenosti. Získání této specializace od společnosti Microsoft potvrzuje naši odbornost v oblasti návrhu, vývoje a nasazení moderních AI aplikací na platformě Azure.

24. dubna 2025
„AI – Kdy zapnout, kdy vypnout a kdy se usmívat!“
„AI – Kdy zapnout, kdy vypnout a kdy se usmívat!“

Chcete si usnadnit práci? Může být AI vaším nepostradatelným pomocníkem? Převezme AI monotónní úkoly a uvolní čas na strategické myšlení místo administrativy? Zvýšíte efektivitu s AI asistenty a agenty? Tyto a další otázky budou zodpovězeny na našem workshopu, kde se dozvíte, proč je pro vás důležité porozumět AI a jak vám může pomoci v každodenním fungování.

26. února 2025 KPCS
CES 2025 – Technologická inspirace a budoucnost pod taktovkou inovací
CES 2025 – Technologická inspirace a budoucnost pod taktovkou inovací

Každoroční technologický veletrh CES 2025 v Las Vegas znovu překonal očekávání a představil řadu revolučních, ale někdy i velmi podivných produktů a trendů, které formují budoucnost technologického průmyslu.

15. ledna 2025
Kontakt