Dela via


Snabbstart: Använda Bicep för att distribuera en Azure Managed Application-definition

Den här snabbstarten beskriver hur du använder Bicep för att distribuera en Azure Managed Application-definition från tjänstkatalogen. Definitionen i tjänstkatalogen är tillgänglig för medlemmar i organisationen.

Utför följande uppgifter för att distribuera en definition av hanterat program från tjänstkatalogen:

  • Använd Bicep för att utveckla en mall som distribuerar en definition för ett hanterat program.
  • Skapa en parameterfil för distributionen.
  • Distribuera definitionen av det hanterade programmet från tjänstkatalogen.

Förutsättningar

För att slutföra uppgifterna i den här artikeln behöver du följande:

Hämta definition av hanterat program

Kör följande kommandon för att hämta det hanterade programmets definition med Azure PowerShell.

Öppna en ny PowerShell-terminal i Visual Studio Code och logga in på din Azure-prenumeration.

Connect-AzAccount

Kommandot öppnar din standardwebbläsare och uppmanar dig att logga in på Azure. Mer information finns i Logga in med Azure PowerShell.

Hämta definitionen för ditt hanterade program från Azure PowerShell. I det här exemplet använder du resursgruppens namn bicepDefinitionGroup som skapades när du distribuerade definitionen för det hanterade programmet.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionGroup

Get-AzManagedApplicationDefinition visar en lista över alla tillgängliga definitioner i den angivna resursgruppen, till exempel sampleBicepManagedApplication.

Följande kommando parsar utdata för att endast visa definitionsnamnet och resursgruppens namn. Du använder namnen när du distribuerar det hanterade programmet.

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

Skapa Bicep-filen

Öppna Visual Studio Code och skapa ett filnamn deployServiceCatalog.bicep. Kopiera och klistra in följande kod i filen och spara den.

@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
      }
    }
  }
}

Mer information om resurstypen finns i Microsoft.Solutions/applications.

Skapa parameterfilen

Öppna Visual Studio Code och skapa en parameterfil med namnet deployServiceCatalog-parameters.bicepparam. Kopiera och klistra in följande kod i filen och spara den.

using './deployServiceCatalog.bicep'

param definitionName = 'sampleBicepManagedApplication'
param definitionRG = 'bicepDefinitionGroup'
param managedAppName = 'sampleBicepManagedApp'
param mrgName = 'placeholder for managed resource group name'
param appServicePlanName = 'demoAppServicePlan'
param appServiceNamePrefix = 'demoApp'
param storageAccountNamePrefix = 'demostg1234'
param storageAccountType = 'Standard_LRS'

Du måste ange flera parametrar för att distribuera det hanterade programmet:

Parameter Värde
definitionName Namnet på tjänstkatalogdefinitionen. I det här exemplet används sampleBicepManagedApplication.
definitionRG Namn på resursgrupp där definitionen lagras. I det här exemplet används bicepDefinitionGroup.
managedAppName Namn på det distribuerade hanterade programmet. I det här exemplet används sampleBicepManagedApp.
mrgName Unikt namn för den hanterade resursgrupp som innehåller programmets distribuerade resurser. Resursgruppen skapas när du distribuerar det hanterade programmet. Om du vill skapa ett namn på en hanterad resursgrupp kör du kommandona som följer den här parameterlistan och använder $mrgname värdet för att ersätta platshållaren i parameterfilen.
appServicePlanName Skapa ett plannamn. Högst 40 alfanumeriska tecken och bindestreck. Till exempel demoAppServicePlan. App Service-plannamn måste vara unika i en resursgrupp i din prenumeration.
appServiceNamePrefix Skapa ett prefix för plannamnet. Högst 47 alfanumeriska tecken eller bindestreck. Till exempel demoApp. Under distributionen sammanfogas prefixet med en unik sträng för att skapa ett namn som är globalt unikt i Hela Azure.
storageAccountNamePrefix Använd endast gemener och siffror och högst 11 tecken. Till exempel demostg1234. Under distributionen sammanfogas prefixet med en unik sträng för att skapa ett globalt unikt namn i Azure.
storageAccountType Alternativen är Premium_LRS, Standard_LRS och Standard_GRS.

Du kan köra följande kommandon för att skapa ett namn för den hanterade resursgruppen.

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

Variablerna $mrgprefix och $mrgtimestamp sammanfogas och lagras i variabeln $mrgname . Variabelns värde är i formatet mrg-sampleBicepManagedApplication-20230512103059. Du använder $mrgname variabelns värde när du distribuerar det hanterade programmet.

Distribuera det hanterade programmet

Använd Azure PowerShell eller Azure CLI för att skapa en resursgrupp och distribuera det hanterade programmet.

New-AzResourceGroup -Name bicepApplicationGroup -Location westus

$deployparms = @{
  ResourceGroupName = "bicepApplicationGroup"
  TemplateFile = "deployServiceCatalog.bicep"
  TemplateParameterFile = "deployServiceCatalog-parameters.bicepparam"
  Name = "deployServiceCatalogApp"
}

New-AzResourceGroupDeployment @deployparms

Variabeln $deployparms använder PowerShell-splatting för att förbättra läsbarheten för parametervärdena.

Distributionen kan visa en Bicep-lintervarning om att egenskapen managedResourceGroupId förväntar sig ett resurs-ID. Eftersom den hanterade resursgruppen skapas under distributionen finns det inget resurs-ID tillgängligt för egenskapen.

Visa resultat

När det hanterade tjänstkatalogprogrammet har distribuerats har du två nya resursgrupper. En resursgrupp innehåller det hanterade programmet. Den andra resursgruppen innehåller de hanterade resurser som har distribuerats. I det här exemplet ett App Service-, App Service-plan- och lagringskonto.

Hanterat program

När distributionen är klar kan du kontrollera statusen för det hanterade programmet.

Kör följande kommando för att kontrollera statusen för det hanterade programmet.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepApplicationGroup

Expandera egenskaperna för att göra det enklare att läsa informationen Properties .

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

Hanterade resurser

Du kan visa de resurser som distribuerats till den hanterade resursgruppen.

Kör följande kommando för att visa den hanterade resursgruppens resurser. Du skapade variabeln $mrgname när du skapade parametrarna.

Get-AzResource -ResourceGroupName $mrgname

Så här visar du alla rolltilldelningar för den hanterade resursgruppen.

Get-AzRoleAssignment -ResourceGroupName $mrgname

Den definition av hanterade program som du skapade i snabbstartsartiklarna använde en grupp med rolltilldelningen Ägare. Du kan visa gruppen med följande kommando.

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

Du kan också lista neka tilldelningar för den hanterade resursgruppen.

Get-AzDenyAssignment -ResourceGroupName $mrgname

Rensa resurser

När du är klar med det hanterade programmet kan du ta bort resursgrupperna och ta bort alla resurser som du har skapat. Du har till exempel skapat resursgrupperna bicepApplicationGroup och en hanterad resursgrupp med prefixet mrg-bicepManagedApplication.

När du tar bort resursgruppen bicepApplicationGroup tas det hanterade programmet, den hanterade resursgruppen och alla Azure-resurser bort.

Kommandot uppmanar dig att bekräfta att du vill ta bort resursgruppen.

Remove-AzResourceGroup -Name bicepApplicationGroup

Om du vill ta bort definitionen för det hanterade programmet tar du bort de resursgrupper som du skapade med namnet packageStorageGroup och bicepDefinitionGroup.

Nästa steg