Kurz: Použití zásobníku nasazení s Bicep

V tomto kurzu se seznámíte s procesem vytváření a správy zásobníku nasazení. Kurz se zaměřuje na vytvoření zásobníku nasazení v oboru skupiny prostředků. Zásobníky nasazení ale můžete vytvořit také v oboru předplatného. Další přehled o vytváření zásobníků nasazení najdete v tématu Vytváření zásobníků nasazení.

Požadavky

Vytvoření souboru Bicep

Vytvořte v editoru Visual Studio Code soubor Bicep, který vytvoří účet úložiště a virtuální síť. Tento soubor slouží k vytvoření zásobníku nasazení.

param resourceGroupLocation string = resourceGroup().location
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param vnetName string = 'vnet${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: resourceGroupLocation
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2022-11-01' = {
  name: vnetName
  location: resourceGroupLocation
  properties: {
    addressSpace: {
      addressPrefixes: [
        '10.0.0.0/16'
      ]
    }
    subnets: [
      {
        name: 'Subnet-1'
        properties: {
          addressPrefix: '10.0.0.0/24'
        }
      }
      {
        name: 'Subnet-2'
        properties: {
          addressPrefix: '10.0.1.0/24'
        }
      }
    ]
  }
}

Uložte soubor Bicep jako main.bicep.

Vytvoření zásobníku nasazení

Pokud chcete vytvořit skupinu prostředků a zásobník nasazení, spusťte následující příkazy a ujistěte se, že zadáte odpovídající cestu k souboru Bicep na základě umístění spuštění.

az group create \
  --name 'demoRg' \
  --location 'centralus'

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

Přepínač deny-settings-mode přiřadí ke spravovaným prostředkům konkrétní typ oprávnění, což brání jejich odstranění neoprávněnými objekty zabezpečení. Další informace naleznete v tématu Ochrana spravovaných prostředků před odstraněním.

Výpis zásobníku nasazení a spravovaných prostředků

Pokud chcete nasazení ověřit, můžete zobrazit seznam zásobníku nasazení a zobrazit seznam spravovaných prostředků zásobníku nasazení.

Seznam nasazeného zásobníku nasazení:

az stack group show \
  --resource-group 'demoRg' \
  --name 'demoStack'

Výstup ukazuje dva spravované prostředky – jeden účet úložiště a jednu virtuální síť:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Resources/deployments/demoStack-2023-06-08-14-58-28-fd6bb",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT30.1685405S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack",
  "location": null,
  "name": "demoStack",
  "outputs": null,
  "parameters": {},
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "demoRg",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Network/virtualNetworks/vnetthmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/demoRg/providers/Microsoft.Storage/storageAccounts/storethmimleef5fwk",
      "resourceGroup": "demoRg",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2023-06-08T14:58:28.377564+00:00",
    "createdBy": "johndole@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-06-08T14:58:28.377564+00:00",
    "lastModifiedBy": "johndole@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Nasazení můžete také ověřit výpisem spravovaných prostředků v zásobníku nasazení:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Výstup je podobný tomuto:

{
  "actionOnUnmanage": {
    "managementGroups": "detach",
    "resourceGroups": "detach",
    "resources": "detach"
  },
  "debugSetting": null,
  "deletedResources": [],
  "denySettings": {
    "applyToChildScopes": false,
    "excludedActions": null,
    "excludedPrincipals": null,
    "mode": "none"
  },
  "deploymentId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deployments/demoStack-2023-06-05-20-55-48-38d09",
  "deploymentScope": null,
  "description": null,
  "detachedResources": [],
  "duration": "PT29.006353S",
  "error": null,
  "failedResources": [],
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Resources/deploymentStacks/demoStack",
  "location": null,
  "name": "demoStack",
  "outputs": null,
  "parameters": {},
  "parametersLink": null,
  "provisioningState": "succeeded",
  "resourceGroup": "demoRg",
  "resources": [
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Network/virtualNetworks/vnetzu6pnx54hqubm",
      "resourceGroup": "demoRg",
      "status": "managed"
    },
    {
      "denyStatus": "none",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/demoRg/providers/Microsoft.Storage/storageAccounts/storezu6pnx54hqubm",
      "resourceGroup": "demoRg",
      "status": "managed"
    }
  ],
  "systemData": {
    "createdAt": "2023-06-05T20:55:48.006789+00:00",
    "createdBy": "johndole@contoso.com",
    "createdByType": "User",
    "lastModifiedAt": "2023-06-05T20:55:48.006789+00:00",
    "lastModifiedBy": "johndole@contoso.com",
    "lastModifiedByType": "User"
  },
  "tags": null,
  "template": null,
  "templateLink": null,
  "type": "Microsoft.Resources/deploymentStacks"
}

Aktualizace zásobníku nasazení

Pokud chcete aktualizovat zásobník nasazení, proveďte potřebné úpravy základního souboru Bicep a pak znovu spusťte příkaz pro vytvoření zásobníku nasazení nebo použijte příkaz set v Azure PowerShellu.

V tomto kurzu provedete následující aktivity:

  • Aktualizace vlastnosti spravovaného prostředku
  • Přidejte prostředek do zásobníku.
  • Odpojení spravovaného prostředku
  • Připojte existující prostředek ke zásobníku.
  • Odstranění spravovaného prostředku

Aktualizace spravovaného prostředku

Na konci předchozího kroku máte jeden zásobník se dvěma spravovanými prostředky. Aktualizujete vlastnost prostředku účtu úložiště.

Upravte soubor main.bicep a změňte název skladové položky z Standard_LRS :Standard_GRS

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_GRS'
  }
}

Aktualizujte spravovaný prostředek spuštěním následujícího příkazu:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

Vlastnost skladové položky můžete ověřit spuštěním následujícího příkazu:

az resource list --resource-group 'demoRg'

Přidání spravovaného prostředku

Na konci předchozího kroku máte jeden zásobník se dvěma spravovanými prostředky. Do zásobníku přidáte jeden další prostředek účtu úložiště.

Upravte soubor main.bicep tak, aby obsahoval jinou definici účtu úložiště:

resource storageAccount1 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: '1${storageAccountName}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Aktualizujte zásobník nasazení spuštěním následujícího příkazu:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

Nasazení můžete ověřit výpisem spravovaných prostředků v zásobníku nasazení:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Kromě dvou existujících prostředků se zobrazí nový účet úložiště.

Odpojení spravovaného prostředku

Na konci předchozího kroku máte jeden zásobník se třemi spravovanými prostředky. Odpojte jeden ze spravovaných prostředků. Po odpojení prostředku zůstane ve skupině prostředků.

Upravte soubor main.bicep a odeberte z předchozího kroku následující definici účtu úložiště:

resource storageAccount1 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: '1${storageAccountName}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Aktualizujte zásobník nasazení spuštěním následujícího příkazu:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

Nasazení můžete ověřit výpisem spravovaných prostředků v zásobníku nasazení:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

V zásobníku se zobrazí dva spravované prostředky. Odpojený prostředek je ale stále uvedený ve skupině prostředků. Prostředky ve skupině prostředků můžete zobrazit spuštěním následujícího příkazu:

az resource list --resource-group 'demoRg'

Připojení existujícího prostředku ke zásobníku

Na konci předchozího kroku máte jeden zásobník se dvěma spravovanými prostředky. Ve stejné skupině prostředků jako spravované prostředky je nespravovaný prostředek. Tento nespravovaný prostředek připojíte ke zásobníku.

Upravte soubor main.bicep tak, aby zahrnoval definici účtu úložiště nespravovaného prostředku:

resource storageAccount1 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: '1${storageAccountName}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Aktualizujte zásobník nasazení spuštěním následujícího příkazu:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

Nasazení můžete ověřit výpisem spravovaných prostředků v zásobníku nasazení:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

Zobrazí se tři spravované prostředky.

Odstranění spravovaného prostředku

Na konci předchozího kroku máte jeden zásobník se třemi spravovanými prostředky. V jednom z předchozích kroků jste odpojili spravovaný prostředek. Někdy můžete chtít odstranit prostředek místo odpojení. K odstranění prostředku použijete přepínač delete-resources pomocí příkazu create/set.

Upravte soubor main.bicep a odeberte následující definici účtu úložiště:

resource storageAccount1 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: '1${storageAccountName}'
  location: location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

Spusťte následující příkaz s přepínačem delete-resources:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none' \
  --delete-resources

Kromě delete-resources přepínače jsou k dispozici dva další přepínače: delete-all a delete-resource-groups. Další informace naleznete v tématu Řízení odpojení a odstranění.

Nasazení můžete ověřit výpisem spravovaných prostředků v zásobníku nasazení:

az stack group show \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --output 'json'

V zásobníku se zobrazí dva spravované prostředky. Prostředek se také odebere ze skupiny prostředků. Skupinu prostředků můžete ověřit spuštěním následujícího příkazu:

az resource list --resource-group 'demoRg'

Konfigurace nastavení zamítnutí

Při vytváření zásobníku nasazení je možné přiřadit ke spravovaným prostředkům konkrétní typ oprávnění, což brání jejich odstranění neoprávněnými objekty zabezpečení. Tato nastavení se označují jako nastavení zamítnutí.

Azure CLI obsahuje tyto parametry pro přizpůsobení přiřazení zamítnutí:

  • deny-settings-mode: Definuje operace, které jsou zakázány na spravovaných prostředcích, aby se chránily před neoprávněnými objekty zabezpečení, které se pokouší odstranit nebo aktualizovat. Toto omezení platí pro všechny uživatele, pokud explicitně nepodělíte přístup. Mezi hodnoty patří: none, denyDeletea denyWriteAndDelete.
  • deny-settings-apply-to-child-scopes: Nastavení zamítnutí se použije u podřízených oborů správy Azure.
  • deny-settings-excluded-actions: Seznam operací správy řízení přístupu na základě role (RBAC) vyloučených z nastavení zamítnutí Je povoleno až 200 akcí.
  • deny-settings-excluded-principals: Seznam ID objektu zabezpečení Microsoft Entra vyloučených z zámku. Je povoleno až pět objektů zabezpečení.

V tomto kurzu nakonfigurujete režim nastavení zamítnutí. Další informace o dalších nastaveních zamítnutí najdete v tématu Ochrana spravovaných prostředků před odstraněním.

Na konci předchozího kroku máte jeden zásobník se dvěma spravovanými prostředky.

Spusťte následující příkaz s přepínačem režimu odepřít nastavení nastavenou na odepřít-delete:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'denyDelete'

Následující příkaz pro odstranění selže, protože režim nastavení zamítnutí je nastavený na odepření odstranění:

az resource delete \
  --resource-group 'demoRg' \
  --name '<storage-account-name>' \
  --resource-type 'Microsoft.Storage/storageAccounts'

Aktualizujte zásobník režimem odepřít nastavení na žádné, abyste mohli dokončit zbytek kurzu:

az stack group create \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --template-file './main.bicep' \
  --deny-settings-mode 'none'

Export šablony ze zásobníku

Exportem zásobníku nasazení můžete vygenerovat soubor Bicep. Tento soubor Bicep slouží jako prostředek pro budoucí vývoj a následná nasazení.

az stack group export \
  --name 'demoStack' \
  --resource-group 'demoRg'

Výstup můžete převést do souboru.

Odstranění zásobníku nasazení

Pokud chcete odstranit zásobník nasazení a spravované prostředky, spusťte následující příkaz:

az stack group delete \
  --name 'demoStack' \
  --resource-group 'demoRg' \
  --delete-all

Pokud příkazy pro odstranění spustíte bez odstranění všech parametrů, spravované prostředky se odpojí, ale neodstraní. Příklad:

az stack group delete \
  --name 'demoStack' \
  --resource-group 'demoRg'

Následující parametry lze použít k řízení mezi odpojením a odstraněním.

  • --delete-all: Odstraňte prostředky i skupiny prostředků.
  • --delete-resources: Odstraňte pouze prostředky.
  • --delete-resource-groups: Odstraňte pouze skupiny prostředků.

Další informace najdete v tématu Odstranění zásobníků nasazení.

Další kroky