• 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

Novinka v Microsoft Entra ID: Passkeys přichází už na jaře 2026. Jste připraveni?
Novinka v Microsoft Entra ID: Passkeys přichází už na jaře 2026. Jste připraveni?

Microsoft od března 2026 spouští jednu z nejvýznamnějších změn v oblasti zabezpečení přístupu za poslední roky. Do Microsoft Entra ID přicházejí passkeys, moderní způsob přihlašování bez hesla a spolu s nimi i nový systém řízení s názvem Passkey Profiles. Protože se tato změna dotkne všech organizací, je dobré vědět, co přesně přináší a jak se na ni připravit.

20. března 2026
Secure Boot 2026: Proč váš počítač v červnu možná nenastartuje a jak tomu předejít
Secure Boot 2026: Proč váš počítač v červnu možná nenastartuje a jak tomu předejít

Už v červnu vyprší platnost digitálních certifikátů, které střeží start vašeho počítače s Windows. Pokud máte starší zařízení nebo zanedbáváte aktualizace, může se stát, že váš počítač jednoho dne prostě nenaběhne.

20. března 2026
Microsoft 365 E7: Evoluce od asistence k autonomii. Vše, co potřebujete vědět o nové „AI-first“ licenci
Microsoft 365 E7: Evoluce od asistence k autonomii. Vše, co potřebujete vědět o nové „AI-first“ licenci

Včerejší oznámení společnosti Microsoft (9. března 2026) přineslo největší změnu v licencování cloudových služeb za poslední dekádu. Uvedení úrovně Microsoft 365 E7 není pouhým rozšířením stávajícího balíčku E5 o Copilota. Jde o fundamentální posun v tom, jak Microsoft vnímá roli umělé inteligence v podniku: z pasivního našeptávače se stává autonomní agent.

10. března 2026
Kontakt