Partilhar via


Guia de início rápido: usar o Bicep para implantar uma definição de Aplicativo Gerenciado do Azure

Este guia de início rápido descreve como usar o Bicep para implantar uma definição de Aplicativo Gerenciado do Azure a partir do seu catálogo de serviços. As definições no seu catálogo de serviços estão disponíveis para os membros da sua organização.

Para implantar uma definição de aplicativo gerenciado a partir do seu catálogo de serviços, execute as seguintes tarefas:

  • Use o Bicep para desenvolver um modelo que implante uma definição de aplicativo gerenciado.
  • Crie um arquivo de parâmetro para a implantação.
  • Implante a definição de aplicativo gerenciado a partir do seu catálogo de serviços.

Pré-requisitos

Para concluir as tarefas neste artigo, você precisa dos seguintes itens:

Obter definição de aplicativo gerenciado

Para obter a definição do aplicativo gerenciado com o Azure PowerShell, execute os seguintes comandos.

No Visual Studio Code, abra um novo terminal do PowerShell e entre na sua assinatura do Azure.

Connect-AzAccount

O comando abre seu navegador padrão e solicita que você entre no Azure. Para obter mais informações, vá para Entrar com o Azure PowerShell.

No Azure PowerShell, obtenha a definição do seu aplicativo gerenciado. Neste exemplo, use o nome do grupo de recursos bicepDefinitionGroup que foi criado quando você implantou a definição de aplicativo gerenciado.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionGroup

Get-AzManagedApplicationDefinition lista todas as definições disponíveis no grupo de recursos especificado, como sampleBicepManagedApplication.

O comando a seguir analisa a saída para mostrar apenas o nome da definição e o nome do grupo de recursos. Você usa os nomes quando implanta o aplicativo gerenciado.

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

Criar o arquivo Bicep

Abra o Visual Studio Code e crie um nome de arquivo deployServiceCatalog.bicep. Copie e cole o código a seguir no arquivo e salve-o.

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

Para obter mais informações sobre o tipo de recurso, vá para Microsoft.Solutions/applications.

Criar o ficheiro de parâmetros

Abra o Visual Studio Code e crie um arquivo de parâmetro chamado deployServiceCatalog-parameters.bicepparam. Copie e cole o código a seguir no arquivo e salve-o.

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'

Você precisa fornecer vários parâmetros para implantar o aplicativo gerenciado:

Parâmetro Value
definitionName Nome da definição do catálogo de serviços. Este exemplo usa sampleBicepManagedApplication.
definitionRG Nome do grupo de recursos onde a definição está armazenada. Este exemplo usa bicepDefinitionGroup.
managedAppName Nome do aplicativo gerenciado implantado. Este exemplo usa sampleBicepManagedApp.
mrgName Nome exclusivo para o grupo de recursos gerenciados que contém os recursos implantados do aplicativo. O grupo de recursos é criado quando você implanta o aplicativo gerenciado. Para criar um nome de grupo de recursos gerenciados, execute os comandos que seguem essa lista de parâmetros e use o $mrgname valor para substituir o espaço reservado no arquivo de parâmetros.
appServicePlanName Crie um nome de plano. Máximo de 40 caracteres alfanuméricos e hífenes. Por exemplo, demoAppServicePlan. Os nomes dos planos do Serviço de Aplicativo devem ser exclusivos dentro de um grupo de recursos em sua assinatura.
appServiceNamePrefix Crie um prefixo para o nome do plano. Máximo de 47 caracteres alfanuméricos ou hífenes. Por exemplo, demoApp. Durante a implantação, o prefixo é concatenado com uma cadeia de caracteres exclusiva para criar um nome que seja globalmente exclusivo no Azure.
storageAccountNamePrefix Use apenas letras minúsculas e números e um máximo de 11 caracteres. Por exemplo, demostg1234. Durante a implantação, o prefixo é concatenado com uma cadeia de caracteres exclusiva para criar um nome globalmente exclusivo no Azure.
storageAccountType As opções são Premium_LRS, Standard_LRS e Standard_GRS.

Você pode executar os seguintes comandos para criar um nome para o grupo de recursos gerenciados.

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

As $mrgprefix variáveis e $mrgtimestamp são concatenadas e armazenadas na $mrgname variável. O valor da variável está no formato mrg-sampleBicepManagedApplication-20230512103059. Você usa o $mrgname valor da variável ao implantar o aplicativo gerenciado.

Implementar a aplicação gerida

Use o Azure PowerShell ou a CLI do Azure para criar um grupo de recursos e implantar o aplicativo gerenciado.

New-AzResourceGroup -Name bicepApplicationGroup -Location westus

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

New-AzResourceGroupDeployment @deployparms

A $deployparms variável usa o splatting do PowerShell para melhorar a legibilidade dos valores dos parâmetros.

Sua implantação pode exibir um aviso de linter do Bicep de que a managedResourceGroupId propriedade espera uma ID de recurso. Como o grupo de recursos gerenciados é criado durante a implantação, não há uma ID de recurso disponível para a propriedade.

Ver resultados

Depois que o aplicativo gerenciado do catálogo de serviços for implantado, você terá dois novos grupos de recursos. Um grupo de recursos contém o aplicativo gerenciado. O outro grupo de recursos contém os recursos gerenciados que foram implantados. Neste exemplo, um Serviço de Aplicativo, um plano do Serviço de Aplicativo e uma conta de armazenamento.

Aplicação gerida

Após a conclusão da implantação, você poderá verificar o status do aplicativo gerenciado.

Execute o seguinte comando para verificar o status do aplicativo gerenciado.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepApplicationGroup

Expanda as propriedades para facilitar a leitura das Properties informações.

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

Recursos geridos

Você pode exibir os recursos implantados no grupo de recursos gerenciados.

Para exibir os recursos do grupo de recursos gerenciados, execute o seguinte comando. Você criou a $mrgname variável quando criou os parâmetros.

Get-AzResource -ResourceGroupName $mrgname

Para exibir todas as atribuições de função para o grupo de recursos gerenciados.

Get-AzRoleAssignment -ResourceGroupName $mrgname

A definição de aplicativo gerenciado que você criou nos artigos de início rápido usou um grupo com a atribuição de função Proprietário. Você pode visualizar o grupo com o seguinte comando.

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

Você também pode listar as atribuições de negação para o grupo de recursos gerenciados.

Get-AzDenyAssignment -ResourceGroupName $mrgname

Clean up resources (Limpar recursos)

Quando terminar o aplicativo gerenciado, você poderá excluir os grupos de recursos e isso removerá todos os recursos criados. Por exemplo, você criou os grupos de recursos bicepApplicationGroup e um grupo de recursos gerenciados com o prefixo mrg-bicepManagedApplication.

Quando você exclui o grupo de recursos bicepApplicationGroup , o aplicativo gerenciado, o grupo de recursos gerenciados e todos os recursos do Azure são excluídos.

O comando solicita que você confirme que deseja remover o grupo de recursos.

Remove-AzResourceGroup -Name bicepApplicationGroup

Se desejar excluir a definição de aplicativo gerenciado, exclua os grupos de recursos criados chamados packageStorageGroup e bicepDefinitionGroup.

Próximos passos