Quickstart: Bicep gebruiken om een definitie van een beheerde Azure-toepassing te implementeren

In deze quickstart wordt beschreven hoe u Bicep gebruikt om een definitie van een beheerde Azure-toepassing te implementeren vanuit uw servicecatalogus. De definities in uw servicecatalogus zijn beschikbaar voor leden van uw organisatie.

Voer de volgende taken uit om een definitie van een beheerde toepassing te implementeren vanuit uw servicecatalogus:

  • Gebruik Bicep om een sjabloon te ontwikkelen waarmee een definitie van een beheerde toepassing wordt geïmplementeerd.
  • Maak een parameterbestand voor de implementatie.
  • Implementeer de definitie van de beheerde toepassing vanuit uw servicecatalogus.

Vereisten

Als u de taken in dit artikel wilt voltooien, hebt u het volgende nodig:

Definitie van beheerde toepassing ophalen

Voer de volgende opdrachten uit om de definitie van de beheerde toepassing op te halen met Azure PowerShell.

Open in Visual Studio Code een nieuwe PowerShell-terminal en meld u aan bij uw Azure-abonnement.

Connect-AzAccount

Met de opdracht wordt uw standaardbrowser geopend en wordt u gevraagd u aan te melden bij Azure. Ga naar Aanmelden met Azure PowerShell voor meer informatie.

Haal in Azure PowerShell de definitie van uw beheerde toepassing op. Gebruik in dit voorbeeld de naam van de resourcegroep bicepDefinitionRG die is gemaakt toen u de definitie van de beheerde toepassing hebt geïmplementeerd.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionRG

Get-AzManagedApplicationDefinition een lijst met alle beschikbare definities in de opgegeven resourcegroep, zoals sampleBicepManagedApplication.

Met de volgende opdracht parseert u de uitvoer om alleen de naam van de definitie en de naam van de resourcegroep weer te geven. U gebruikt de namen wanneer u de beheerde toepassing implementeert.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionRG | Select-Object -Property Name, ResourceGroupName

Het Bicep-bestand maken

Open Visual Studio Code en maak een bestandsnaam deployServiceCatalog.bicep. Kopieer en plak de volgende code in het bestand en sla deze op.

@description('Region where the resources are deployed.')
param location string = resourceGroup().location

@description('Resource group name where the definition is stored.')
param definitionRG string

@description('Name of the service catalog definition.')
param definitionName string

// Parameters for the managed application's resource deployment
@description('Name of the managed application.')
param managedAppName string

@description('Name for the managed resource group.')
param mrgName string

@maxLength(40)
@description('Service plan name with maximum 40 alphanumeric characters and hyphens. Must be unique within a resource group in your subscription.')
param appServicePlanName string

@maxLength(47)
@description('Globally unique across Azure. Maximum of 47 alphanumeric characters or hyphens.')
param appServiceNamePrefix string

@maxLength(11)
@description('Use only lowercase letters and numbers and a maximum of 11 characters.')
param storageAccountNamePrefix string

@allowed([
  'Premium_LRS'
  'Standard_LRS'
  'Standard_GRS'
])
@description('The options are Premium_LRS, Standard_LRS, or Standard_GRS')
param storageAccountType string

@description('Resource ID for the managed application definition.')
var appResourceId = resourceId('${definitionRG}', 'Microsoft.Solutions/applicationdefinitions', '${definitionName}')

@description('Creates the path for the managed resource group. The resource group is created during deployment.')
var mrgId = '${subscription().id}/resourceGroups/${mrgName}'

resource bicepServiceCatalogApp 'Microsoft.Solutions/applications@2021-07-01' = {
  name: managedAppName
  kind: 'ServiceCatalog'
  location: location
  properties: {
    applicationDefinitionId: appResourceId
    managedResourceGroupId: mrgId
    parameters: {
      appServicePlanName: {
        value: appServicePlanName
      }
      appServiceNamePrefix: {
        value: appServiceNamePrefix
      }
      storageAccountNamePrefix: {
        value: storageAccountNamePrefix
      }
      storageAccountType: {
        value: storageAccountType
      }
    }
  }
}

Ga naar Microsoft.Solutions/applications voor meer informatie over het resourcetype.

Het parameterbestand maken

Open Visual Studio Code en maak een parameterbestand met de naam deployServiceCatalog.parameters.json. Kopieer en plak de volgende code in het bestand en sla deze op.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "definitionName": {
      "value": "sampleBicepManagedApplication"
    },
    "definitionRG": {
      "value": "bicepDefinitionRG"
    },
    "managedAppName": {
      "value": "sampleBicepManagedApp"
    },
    "mrgName": {
      "value": "<placeholder for managed resource group name>"
    },
    "appServicePlanName": {
      "value": "demoAppServicePlan"
    },
    "appServiceNamePrefix": {
      "value": "demoApp"
    },
    "storageAccountNamePrefix": {
      "value": "demostg1234"
    },
    "storageAccountType": {
      "value": "Standard_LRS"
    }
  }
}

U moet verschillende parameters opgeven om de beheerde toepassing te implementeren:

Parameter Waarde
definitionName Naam van de definitie van de servicecatalogus. In dit voorbeeld wordt sampleBicepManagedApplication gebruikt.
definitionRG Resourcegroepnaam waarin de definitie is opgeslagen. In dit voorbeeld wordt bicepDefinitionRG gebruikt.
managedAppName Naam voor de geïmplementeerde beheerde toepassing. In dit voorbeeld wordt sampleBicepManagedApp gebruikt.
mrgName Unieke naam voor de beheerde resourcegroep die de geïmplementeerde resources van de toepassing bevat. De resourcegroep wordt gemaakt wanneer u de beheerde toepassing implementeert. Als u een naam voor een beheerde resourcegroep wilt maken, kunt u de opdrachten uitvoeren die volgen op deze parameterlijst.
appServicePlanName Maak een plannaam. Maximaal 40 alfanumerieke tekens en afbreekstreepjes. Bijvoorbeeld demoAppServicePlan. App Service plannamen moeten uniek zijn binnen een resourcegroep in uw abonnement.
appServiceNamePrefix Maak een voorvoegsel voor de plannaam. Maximaal 47 alfanumerieke tekens of afbreekstreepjes. Bijvoorbeeld demoApp. Tijdens de implementatie wordt het voorvoegsel samengevoegd met een unieke tekenreeks om een naam te maken die wereldwijd uniek is in Azure.
storageAccountNamePrefix Gebruik alleen kleine letters en cijfers en maximaal 11 tekens. Bijvoorbeeld demostg1234. Tijdens de implementatie wordt het voorvoegsel samengevoegd met een unieke tekenreeks om een naam te maken die wereldwijd uniek is in Azure.
storageAccountType De opties zijn Premium_LRS, Standard_LRS en Standard_GRS.

U kunt de volgende opdrachten uitvoeren om een naam te maken voor de beheerde resourcegroep.

$mrgprefix = 'mrg-sampleBicepManagedApplication-'
$mrgtimestamp = Get-Date -UFormat "%Y%m%d%H%M%S"
$mrgname = $mrgprefix + $mrgtimestamp
$mrgname

De $mrgprefix variabelen en $mrgtimestamp worden samengevoegd en opgeslagen in de $mrgname variabele. De waarde van de variabele heeft de indeling mrg-sampleBicepManagedApplication-20230512103059. U gebruikt de waarde van de $mrgname variabele wanneer u de beheerde toepassing implementeert.

De beheerde toepassing implementeren

Gebruik Azure PowerShell of Azure CLI om een resourcegroep te maken en de beheerde toepassing te implementeren.

New-AzResourceGroup -Name bicepAppRG -Location westus3

New-AzResourceGroupDeployment `
  -ResourceGroupName bicepAppRG `
  -TemplateFile deployServiceCatalog.bicep `
  -TemplateParameterFile deployServiceCatalog.parameters.json

In uw implementatie wordt mogelijk een Bicep linter-waarschuwing weergegeven dat de managedResourceGroupId eigenschap een resource-id verwacht. Omdat de beheerde resourcegroep wordt gemaakt tijdens de implementatie, is er geen resource-id beschikbaar voor de eigenschap.

Resultaten weergeven

Nadat de beheerde toepassing van de servicecatalogus is geïmplementeerd, hebt u twee nieuwe resourcegroepen. Eén resourcegroep bevat de beheerde toepassing. De andere resourcegroep bevat de beheerde resources die zijn geïmplementeerd. In dit voorbeeld een App Service, App Service-abonnement en opslagaccount.

Beheerde toepassing

Nadat de implementatie is voltooid, kunt u de status van uw beheerde toepassing controleren.

Voer de volgende opdracht uit om de status van de beheerde toepassing te controleren.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepAppRG

Vouw de eigenschappen uit zodat u de Properties informatie gemakkelijker kunt lezen.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepAppRG | Select-Object -ExpandProperty Properties

Beheerde resources

U kunt de resources weergeven die zijn geïmplementeerd in de beheerde resourcegroep.

Voer de volgende opdracht uit om de resources van de beheerde resourcegroep weer te geven. U hebt de $mrgname variabele gemaakt toen u de parameters maakte.

Get-AzResource -ResourceGroupName $mrgname

Alle roltoewijzingen voor de beheerde resourcegroep weergeven.

Get-AzRoleAssignment -ResourceGroupName $mrgname

De definitie van de beheerde toepassing die u in de quickstart-artikelen hebt gemaakt, heeft een groep met de roltoewijzing Eigenaar gebruikt. U kunt de groep weergeven met de volgende opdracht.

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

U kunt ook de weigeringstoewijzingen voor de beheerde resourcegroep weergeven.

Get-AzDenyAssignment -ResourceGroupName $mrgname

Resources opschonen

Wanneer u klaar bent met de beheerde toepassing, kunt u de resourcegroepen verwijderen en worden alle resources die u hebt gemaakt, verwijderd. U hebt bijvoorbeeld de resourcegroepen bicepAppRG gemaakt en een beheerde resourcegroep met het voorvoegsel mrg-bicepManagedApplication.

Wanneer u de resourcegroep bicepAppRG verwijdert, worden de beheerde toepassing, de beheerde resourcegroep en alle Azure-resources verwijderd.

Met de opdracht wordt u gevraagd om te bevestigen dat u de resourcegroep wilt verwijderen.

Remove-AzResourceGroup -Name bicepAppRG

Als u de definitie van de beheerde toepassing wilt verwijderen, verwijdert u de resourcegroepen die u hebt gemaakt met de namen packageStorageRG en bicepDefinitionRG.

Volgende stappen