Cvičení – náhled změn pomocí příkazu what-if
Poznámka:
Při prvním aktivaci sandboxu a přijetí podmínek je váš účet Microsoft přidružený k novému adresáři Azure s názvem Microsoft Learn Sandbox. Také jste přidáni do speciálního předplatného s názvem Concierge Subscription.
Návrhový tým ve vaší společnosti toy vás požádal o aktualizaci šablony, která konfiguruje virtuální síť. V této lekci použijete citlivostní analýza k ověření účinků nasazení aktualizované šablony.
Během tohoto procesu:
- Vytvořte a nasaďte počáteční šablonu.
- Připravte se na nasazení šablony, která se mírně liší, a pomocí operace citlivostní analýza zkontrolujte očekávané změny.
- Pomocí úplného nasazení nasaďte prázdnou šablonu a pomocí operace citlivostní analýza zkontrolujte očekávané změny.
Toto cvičení využívá rozšíření Azure Resource Manager Tools pro Visual Studio Code. Nezapomeňte toto rozšíření do Visual Studio Codu nainstalovat.
V tomto cvičení se používá rozšíření Bicep pro Visual Studio Code. Nezapomeňte toto rozšíření do Visual Studio Codu nainstalovat.
Vytvoření počáteční šablony
Začnete s existující šablonou, kterou váš tým používá. Šablona vytvoří virtuální síť.
Otevřete Visual Studio Code.
Vytvořte nový soubor s názvem azuredeploy.json.
Uložte prázdný soubor tak, aby Visual Studio Code načítal nástroje šablony ARM.
Můžete vybrat možnost Uložit jako soubor>nebo vybrat Kombinaci kláves Ctrl+S ve Windows (⌘+S v systému macOS). Nezapomeňte si zapamatovat, kam jste soubor uložili. Můžete například chtít vytvořit složku skriptů , do které ji chcete uložit.
Do azuredeploy.json zkopírujte následující kód.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "apiVersion": "2024-01-01", "type": "Microsoft.Network/virtualNetworks", "name": "vnet-001", "location": "[resourceGroup().location]", "tags": { "CostCenter": "12345", "Owner": "Team A" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Uložte šablonu.
Otevřete Visual Studio Code.
Vytvořte nový soubor s názvem main.bicep.
Uložte prázdný soubor tak, aby Visual Studio Code načítal nástroje Bicep.
Můžete vybrat možnost Uložit jako soubor>nebo vybrat Kombinaci kláves Ctrl+S ve Windows (⌘+S v systému macOS). Nezapomeňte si zapamatovat, kam jste soubor uložili. Můžete například chtít vytvořit složku skriptů , do které ji chcete uložit.
Zkopírujte následující kód do main.bicep.
resource vnet 'Microsoft.Network/virtualNetworks@2024-01-01' = { name: 'vnet-001' location: resourceGroup().location tags: { 'CostCenter': '12345' 'Owner': 'Team A' } properties: { addressSpace: { addressPrefixes: [ '10.0.0.0/16' ] } enableVmProtection: false enableDdosProtection: false subnets: [ { name: 'subnet001' properties: { addressPrefix: '10.0.0.0/24' } } { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ] } }
Uložte šablonu.
Nasazení šablony do Azure
Pokud chcete tuto šablonu nasadit do Azure, přihlaste se ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali Azure PowerShell, a přihlaste se ke stejnému účtu, který aktivoval sandbox.
V nabídce Terminal (Terminál) vyberte New Terminal (Nový terminál). Okno terminálu se obvykle otevře v dolní polovině obrazovky.
Pokud je prostředí zobrazené na pravé straně okna terminálu powershell nebo pwsh, otevře se správné prostředí a můžete přejít k další části.
Pokud se zobrazí jiné prostředí než PowerShell nebo pwsh, vyberte šipku rozevíracího seznamu prostředí a pak vyberte PowerShell.
V seznamu terminálových prostředí vyberte PowerShell nebo pwsh.
V terminálu přejděte do adresáře, do kterého jste šablonu uložili. Pokud jste například šablonu uložili do složky templates , můžete použít tento příkaz:
Set-Location -Path templates
Instalace rozhraní příkazového řádku Bicep
Pokud chcete použít Bicep z Azure PowerShellu, nainstalujte rozhraní příkazového řádku Bicep.
Přihlášení k Azure přes Azure PowerShell
V terminálu editoru Visual Studio Code spusťte následující příkaz:
Connect-AzAccount
Otevře se prohlížeč, abyste se mohli přihlásit ke svému účtu Azure.
Po přihlášení k Azure se v terminálu zobrazí seznam předplatných přidružených k tomuto účtu.
Pokud jste aktivovali sandbox, zobrazí se předplatné s názvem Concierge Subscription . Použijte ho pro zbytek cvičení.
Nastavte výchozí předplatné pro všechny příkazy Azure PowerShellu, které spustíte v této relaci.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Poznámka:
Pokud jste nedávno použili více než jeden sandbox, může se v terminálu zobrazit více než jedna instance předplatného Concierge. V tomto případě použijte následující dva kroky k nastavení jednoho jako výchozího předplatného. Pokud předchozí příkaz proběhl úspěšně a zobrazí se jenom jedno předplatné Concierge, přeskočte následující dva kroky.
Zjistěte ID předplatného. Spuštěním následujícího příkazu zobrazíte seznam vašich předplatných a jejich ID.
Concierge Subscription
Vyhledejte a zkopírujte ID z druhého sloupce. Vypadá to jakoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Změňte své aktivní předplatné na Concierge Subscription. Nezapomeňte nahradit {ID vašeho předplatného} za id, které jste zkopírovali.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Nastavení výchozí skupiny prostředků
Výchozí skupinu prostředků můžete nastavit a vynechat parametr ze zbývajících příkazů Azure PowerShellu v tomto cvičení. Nastavte tuto výchozí hodnotu na skupinu prostředků vytvořenou pro vás v sandboxovém prostředí.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Pokud chcete tuto šablonu nasadit do Azure, musíte se přihlásit ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali Azure CLI, a nezapomeňte se přihlásit pomocí stejného účtu, který jste použili k aktivaci sandboxu.
V nabídce Terminal (Terminál) vyberte New Terminal (Nový terminál). Okno terminálu se obvykle otevře v dolní polovině obrazovky.
Pokud je prostředí zobrazené na pravé straně okna terminálu Bash, je otevřené správné prostředí a můžete přejít k další části.
Pokud se zobrazí jiné prostředí než Bash, vyberte šipku rozevíracího seznamu prostředí a pak vyberte Azure Cloud Shell (Bash).
V seznamu terminálových prostředí vyberte Bash.
V terminálu přejděte do adresáře, do kterého jste šablonu uložili. Pokud jste například šablonu uložili do složky templates , můžete použít tento příkaz:
cd templates
Instalace Bicep
Spuštěním následujícího příkazu se ujistěte, že máte nejnovější verzi Bicep:
az bicep install && az bicep upgrade
Přihlášení k Azure
V terminálu editoru Visual Studio Code se přihlaste k Azure spuštěním následujícího příkazu:
az login
V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.
V terminálu editoru Visual Studio Code se zobrazí seznam předplatných přidružených k tomuto účtu.
Nastavte výchozí předplatné pro všechny příkazy Azure CLI, které spustíte v této relaci.
az account set --subscription "Concierge Subscription"
Poznámka:
Pokud jste nedávno použili více než jeden sandbox, může se v terminálu zobrazit více než jedna instance předplatného Concierge. V tomto případě použijte následující dva kroky k nastavení jednoho jako výchozího předplatného. Pokud předchozí příkaz proběhl úspěšně a zobrazí se jenom jedno předplatné Concierge, přeskočte následující dva kroky.
Získejte ID předplatného Concierge Subscription.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Nastavte výchozí předplatné pomocí ID předplatného. Nahraďte {ID vašeho předplatného} za ID nejnovějšího předplatného Concierge Subscription.
az account set --subscription {your subscription ID}
Nastavení výchozí skupiny prostředků
Když použijete Azure CLI, můžete v tomto cvičení nastavit výchozí skupinu prostředků a vynechat parametr ze zbývajících příkazů Azure CLI. Nastavte výchozí hodnotu na skupinu prostředků, která je pro vás vytvořená v prostředí sandboxu.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Pokud chcete tuto šablonu nasadit do Azure, přihlaste se ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali Azure PowerShell, a přihlaste se ke stejnému účtu, který aktivoval sandbox.
V nabídce Terminal (Terminál) vyberte New Terminal (Nový terminál). Okno terminálu se obvykle otevře v dolní polovině obrazovky.
Pokud je prostředí zobrazené na pravé straně okna terminálu powershell nebo pwsh, otevře se správné prostředí a můžete přejít k další části.
Pokud se zobrazí jiné prostředí než PowerShell nebo pwsh, vyberte šipku rozevíracího seznamu prostředí a pak vyberte PowerShell.
V seznamu terminálových prostředí vyberte PowerShell nebo pwsh.
V terminálu přejděte do adresáře, do kterého jste šablonu uložili. Pokud jste například šablonu uložili do složky templates , můžete použít tento příkaz:
Set-Location -Path templates
Přihlášení k Azure přes Azure PowerShell
V terminálu editoru Visual Studio Code spusťte následující příkaz:
Connect-AzAccount
Otevře se prohlížeč, abyste se mohli přihlásit ke svému účtu Azure.
Po přihlášení k Azure se v terminálu zobrazí seznam předplatných přidružených k tomuto účtu.
Pokud jste aktivovali sandbox, zobrazí se předplatné s názvem Concierge Subscription . Použijte ho pro zbytek cvičení.
Nastavte výchozí předplatné pro všechny příkazy Azure PowerShellu, které spustíte v této relaci.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Poznámka:
Pokud jste nedávno použili více než jeden sandbox, může se v terminálu zobrazit více než jedna instance předplatného Concierge. V tomto případě použijte následující dva kroky k nastavení jednoho jako výchozího předplatného. Pokud předchozí příkaz proběhl úspěšně a zobrazí se jenom jedno předplatné Concierge, přeskočte následující dva kroky.
Zjistěte ID předplatného. Spuštěním následujícího příkazu zobrazíte seznam vašich předplatných a jejich ID.
Concierge Subscription
Vyhledejte a zkopírujte ID z druhého sloupce. Vypadá to jakoaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Změňte své aktivní předplatné na Concierge Subscription. Nezapomeňte nahradit {ID vašeho předplatného} za id, které jste zkopírovali.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Nastavení výchozí skupiny prostředků
Výchozí skupinu prostředků můžete nastavit a vynechat parametr ze zbývajících příkazů Azure PowerShellu v tomto cvičení. Nastavte tuto výchozí hodnotu na skupinu prostředků vytvořenou pro vás v sandboxovém prostředí.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Pokud chcete tuto šablonu nasadit do Azure, musíte se přihlásit ke svému účtu Azure z terminálu editoru Visual Studio Code. Ujistěte se, že jste nainstalovali Azure CLI, a nezapomeňte se přihlásit pomocí stejného účtu, který jste použili k aktivaci sandboxu.
V nabídce Terminal (Terminál) vyberte New Terminal (Nový terminál). Okno terminálu se obvykle otevře v dolní polovině obrazovky.
Pokud je prostředí zobrazené na pravé straně okna terminálu Bash, je otevřené správné prostředí a můžete přejít k další části.
Pokud se zobrazí jiné prostředí než Bash, vyberte šipku rozevíracího seznamu prostředí a pak vyberte Azure Cloud Shell (Bash).
V seznamu terminálových prostředí vyberte Bash.
V terminálu přejděte do adresáře, do kterého jste šablonu uložili. Pokud jste například šablonu uložili do složky templates , můžete použít tento příkaz:
cd templates
Přihlášení k Azure
V terminálu editoru Visual Studio Code se přihlaste k Azure spuštěním následujícího příkazu:
az login
V prohlížeči, který se otevře, se přihlaste ke svému účtu Azure.
V terminálu editoru Visual Studio Code se zobrazí seznam předplatných přidružených k tomuto účtu.
Nastavte výchozí předplatné pro všechny příkazy Azure CLI, které spustíte v této relaci.
az account set --subscription "Concierge Subscription"
Poznámka:
Pokud jste nedávno použili více než jeden sandbox, může se v terminálu zobrazit více než jedna instance předplatného Concierge. V tomto případě použijte následující dva kroky k nastavení jednoho jako výchozího předplatného. Pokud předchozí příkaz proběhl úspěšně a zobrazí se jenom jedno předplatné Concierge, přeskočte následující dva kroky.
Získejte ID předplatného Concierge Subscription.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Nastavte výchozí předplatné pomocí ID předplatného. Nahraďte {ID vašeho předplatného} za ID nejnovějšího předplatného Concierge Subscription.
az account set --subscription {your subscription ID}
Nastavení výchozí skupiny prostředků
Když použijete Azure CLI, můžete v tomto cvičení nastavit výchozí skupinu prostředků a vynechat parametr ze zbývajících příkazů Azure CLI. Nastavte výchozí hodnotu na skupinu prostředků, která je pro vás vytvořená v prostředí sandboxu.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Nasazení šablony pomocí Azure PowerShellu
Nasaďte šablonu spuštěním příkazu New-AzResourceGroupDeployment
.
New-AzResourceGroupDeployment -TemplateFile main.bicep
Text Spuštěno... se zobrazí v terminálu. Dokončení nasazení trvá minutu nebo dvě.
Nasazení šablony pomocí Azure PowerShellu
Nasaďte šablonu spuštěním příkazu New-AzResourceGroupDeployment
.
New-AzResourceGroupDeployment -TemplateFile azuredeploy.json
Text Spuštěno... se zobrazí v terminálu. Dokončení nasazení trvá minutu nebo dvě.
Nasazení šablony pomocí rozhraní příkazového řádku Azure
Nasaďte šablonu spuštěním příkazu az deployment group create
.
az deployment group create --template-file main.bicep
Dokončení nasazení trvá minutu nebo dvě.
Nasazení šablony pomocí rozhraní příkazového řádku Azure
Nasaďte šablonu spuštěním příkazu az deployment group create
.
az deployment group create --template-file azuredeploy.json
Dokončení nasazení trvá minutu nebo dvě.
Ověření nasazení
Pokud chcete ověřit, že se vaše nasazení vytvořilo a odeslalo do Azure, přejděte na web Azure Portal a ujistěte se, že jste v předplatném sandboxu:
V horním rohu stránky vyberte svůj avatar.
Vyberte Přepnout adresář. V seznamu vyberte adresář Microsoft Learn Sandbox.
Vyberte Skupiny prostředků.
Vyberte
[název skupiny prostředků sandboxu] .V přehledu vidíte, že jedno nasazení bylo úspěšné.
Pokud chcete zobrazit podrobnosti o nasazení, vyberte možnost označující 1 úspěšné nasazení.
Výběrem hlavního nasazení zobrazíte, jaké prostředky byly nasazeny. V tomto případě se nasadila jedna virtuální síť (adresní prostor 10.0.0.0/16) se dvěma podsítěmi.
Nechte stránku otevřenou v prohlížeči, abyste později mohli znovu zkontrolovat nasazení.
Úprava šablony
V souboru azuredeploy.json v editoru Visual Studio Code odstraňte značku s názvem
Owner
a její hodnotou. Po dokončenítags
by vlastnost virtuální sítě měla vypadat takto:"tags": { "CostCenter": "12345" },
addressPrefixes
Aktualizujte změnu/16
na/15
. Po dokončeníaddressSpace
by vlastnost virtuální sítě měla vypadat takto:"addressSpace": { "addressPrefixes": [ "10.0.0.0/15" ] },
Odstraňte podsíť s názvem
subnet001
. Nezapomeňte odstranit celý objekt podsítě. Po dokončenísubnets
by vlastnost virtuální sítě měla vypadat takto:"subnets": [ { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ]
Uložte šablonu.
V souboru main.bicep v editoru Visual Studio Code odstraňte značku s názvem
Owner
a její hodnotou. Po dokončenítags
by vlastnost virtuální sítě měla vypadat takto:tags: { 'CostCenter': '12345' }
addressPrefixes
Aktualizujte nastavení na/16
/15
. Po dokončeníaddressSpace
by vlastnost virtuální sítě měla vypadat takto:addressSpace: { addressPrefixes: [ '10.0.0.0/15' ] }
Odstraňte podsíť s názvem
subnet001
. Nezapomeňte odstranit celý objekt podsítě. Po dokončenísubnets
by vlastnost virtuální sítě měla vypadat takto:subnets: [ { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ]
Uložte šablonu.
Spuštění příkazu citlivostní analýza s upravenou šablonou
Spusťte příkaz New-AzResourceGroupDeployment
s příznakem -WhatIf
, který provede operaci what-if (citlivostní analýza).
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile main.bicep
Spusťte příkaz New-AzResourceGroupDeployment
s příznakem -WhatIf
, který provede operaci what-if (citlivostní analýza).
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile azuredeploy.json
Spusťte az deployment group what-if
operaci citlivostní analýza:
az deployment group what-if \
--template-file main.bicep
Spusťte az deployment group what-if
operaci citlivostní analýza:
az deployment group what-if \
--template-file azuredeploy.json
Výstup citlivostní analýza je podobný následujícímu:
Všimněte si, že výsledek je kromě předpony barevně zakódovaný:
- Fialová a ~ značí jakékoli úpravy.
- Zelená a + značí vytvoření nových prostředků.
- Oranžová a - značí odstranění.
Odebrání prostředků v šabloně
Aktualizujte soubor azuredeploy.json v editoru Visual Studio Code a odeberte veškerý obsah
resources
pole. Po dokončení by vaše šablona měla vypadat takto:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ ] }
Uložte šablonu.
V souboru main.bicep v editoru Visual Studio Code odstraňte veškerý obsah souboru, ale neodstraňovat samotný soubor.
Uložte šablonu.
Nasazení pomocí úplného režimu a možnosti potvrzení
V následujících krocích nasadíte v rámci svého stávajícího prostředí prázdnou šablonu.
Upozorňující
V reálných situacích se touto akcí odebere veškerý obsah cloudu. Následující kód je zajímavý jako myšlenkový experiment, při práci s tímto režimem ale buďte opatrní. Používejte alespoň příznak -Confirm
, abyste měli možnost operaci zastavit, pokud vám navržené změny nebudou vyhovovat.
Upozorňující
V reálných situacích se touto akcí odebere veškerý obsah cloudu. Následující kód je zajímavý jako myšlenkový experiment, při práci s tímto režimem ale buďte opatrní. Používejte alespoň příznak --confirm-with-what-if
, abyste měli možnost operaci zastavit, pokud vám navržené změny nebudou vyhovovat.
Spuštěním příznaku
-Mode Complete
spusťteNew-AzResourceGroupDeployment
nasazení v úplném režimu:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile main.bicep
Výstup bude vypadat nějak takto:
Všimněte si, že poslední řádek výstupu je potvrzení. Žádá vás, abyste před dalším pokračováním vybrali y (Ano), nebo n (Ne).
Do pole [A] Ano všem zadejte A , aby se spustilo nasazení a vyčistilo se vaše prostředí.
Spuštěním příznaku
-Mode Complete
spusťteNew-AzResourceGroupDeployment
nasazení v úplném režimu:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile azuredeploy.json
Výstup bude vypadat nějak takto:
Všimněte si, že poslední řádek výstupu je potvrzení. Žádá vás, abyste před dalším pokračováním vybrali y (Ano), nebo n (Ne).
Do pole [A] Ano všem zadejte A , aby se spustilo nasazení a vyčistilo se vaše prostředí.
Spusťte
az deployment group create
s příznakem--mode Complete
, čímž vytvoříte nasazení v úplném režimu:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file main.bicep
Výstup bude vypadat nějak takto:
Všimněte si, že poslední řádek výstupu je potvrzení. Žádá vás, abyste před dalším pokračováním vybrali y (Ano), nebo n (Ne).
Zadáním y (ano) spusťte nasazení a vyčistíte prostředí.
Spusťte
az deployment group create
s příznakem--mode Complete
, čímž vytvoříte nasazení v úplném režimu:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file azuredeploy.json
Výstup bude vypadat nějak takto:
Všimněte si, že poslední řádek výstupu je potvrzení. Žádá vás, abyste před dalším pokračováním vybrali y (Ano), nebo n (Ne).
Zadáním y (ano) spusťte nasazení a vyčistíte prostředí.
Ověření nasazení
Vraťte se do otevřeného prohlížeče, který jste použili dříve. Ověřte, že virtuální síť už neexistuje, jak je znázorněno na tomto snímku obrazovky: