Início Rápido: Utilizar o Bicep para implementar uma definição da Aplicação Gerida do Azure

Este início rápido descreve como utilizar o Bicep para implementar uma definição de Aplicação Gerida do Azure a partir do catálogo de serviços. A definição no catálogo de serviços está disponível para os membros da sua organização.

Para implementar uma definição de aplicação gerida a partir do catálogo de serviços, efetue as seguintes tarefas:

  • Utilize o Bicep para desenvolver um modelo que implemente uma definição de aplicação gerida.
  • Crie um ficheiro de parâmetros para a implementação.
  • Implemente a definição de aplicação gerida a partir do catálogo de serviços.

Pré-requisitos

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

Obter a definição da aplicação gerida

Para obter a definição da aplicação gerida com Azure PowerShell, execute os seguintes comandos.

No Visual Studio Code, abra um novo terminal do PowerShell e inicie sessão na sua subscrição do Azure.

Connect-AzAccount

O comando abre o browser predefinido e pede-lhe para iniciar sessão no Azure. Para obter mais informações, aceda a Iniciar sessão com Azure PowerShell.

A partir de Azure PowerShell, obtenha a definição da sua aplicação gerida. Neste exemplo, utilize o nome do grupo de recursos bicepDefinitionRG que foi criado quando implementou a definição da aplicação gerida.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionRG

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

O seguinte comando analisa a saída para mostrar apenas o nome da definição e o nome do grupo de recursos. Utiliza os nomes quando implementa a aplicação gerida.

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

Criar o ficheiro Bicep

Abra o Visual Studio Code e crie um nome de ficheiro deployServiceCatalog.bicep. Copie e cole o seguinte código no ficheiro e guarde-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, aceda a Microsoft.Solutions/applications.

Criar o ficheiro de parâmetros

Abra o Visual Studio Code e crie um ficheiro de parâmetro com o nome deployServiceCatalog.parameters.json. Copie e cole o seguinte código no ficheiro e guarde-o.

{
  "$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"
    }
  }
}

Tem de fornecer vários parâmetros para implementar a aplicação gerida:

Parâmetro Valor
definitionName Nome da definição do catálogo de serviços. Este exemplo utiliza sampleBicepManagedApplication.
definitionRG Nome do grupo de recursos onde a definição é armazenada. Este exemplo utiliza bicepDefinitionRG.
managedAppName Nome da aplicação gerida implementada. Este exemplo utiliza sampleBicepManagedApp.
mrgName Nome exclusivo para o grupo de recursos geridos que contém os recursos implementados da aplicação. O grupo de recursos é criado quando implementa a aplicação gerida. Para criar um nome de grupo de recursos gerido, pode executar os comandos que se seguem a esta lista de parâmetros.
appServicePlanName Crie um nome de plano. Máximo de 40 carateres alfanuméricos e hífenes. Por exemplo, demoAppServicePlan. Serviço de Aplicações nomes de planos têm de ser exclusivos num grupo de recursos na sua subscrição.
appServiceNamePrefix Crie um prefixo para o nome do plano. Máximo de 47 carateres alfanuméricos ou hífenes. Por exemplo, demoApp. Durante a implementação, o prefixo é concatenado com uma cadeia exclusiva para criar um nome globalmente exclusivo no Azure.
storageAccountNamePrefix Utilize apenas letras minúsculas e números e um máximo de 11 carateres. Por exemplo, demostg1234. Durante a implementação, o prefixo é concatenado com uma cadeia exclusiva para criar um nome globalmente exclusivo no Azure.
storageAccountType As opções são Premium_LRS, Standard_LRS e Standard_GRS.

Pode executar os seguintes comandos para criar um nome para o grupo de recursos geridos.

$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. Utilize o $mrgname valor da variável quando implementar a aplicação gerida.

Implementar a aplicação gerida

Utilize Azure PowerShell ou a CLI do Azure para criar um grupo de recursos e implementar a aplicação gerida.

New-AzResourceGroup -Name bicepAppRG -Location westus3

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

A sua implementação poderá apresentar um linter Bicep a avisar que a managedResourceGroupId propriedade espera um ID de recurso. Uma vez que o grupo de recursos gerido é criado durante a implementação, não existe um ID de recurso disponível para a propriedade.

Ver resultados

Após a implementação da aplicação gerida do catálogo de serviços, tem dois novos grupos de recursos. Um grupo de recursos contém a aplicação gerida. O outro grupo de recursos contém os recursos geridos que foram implementados. Neste exemplo, uma Serviço de Aplicações, Serviço de Aplicações plano e conta de armazenamento.

Aplicação gerida

Após a conclusão da implementação, pode verificar o estado da aplicação gerida.

Execute o seguinte comando para verificar o estado da aplicação gerida.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepAppRG

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

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

Recursos geridos

Pode ver os recursos implementados no grupo de recursos geridos.

Para apresentar os recursos do grupo de recursos geridos, execute o seguinte comando. Criou a $mrgname variável quando criou os parâmetros.

Get-AzResource -ResourceGroupName $mrgname

Para apresentar todas as atribuições de funções do grupo de recursos gerido.

Get-AzRoleAssignment -ResourceGroupName $mrgname

A definição de aplicação gerida que criou nos artigos de início rápido utilizou um grupo com a atribuição de função proprietário. Pode ver o grupo com o seguinte comando.

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

Também pode listar as atribuições de negação para o grupo de recursos gerido.

Get-AzDenyAssignment -ResourceGroupName $mrgname

Limpar os recursos

Quando tiver terminado a aplicação gerida, pode eliminar os grupos de recursos e isso remove todos os recursos que criou. Por exemplo, criou os grupos de recursos bicepAppRG e um grupo de recursos gerido com o prefixo mrg-bicepManagedApplication.

Quando elimina o grupo de recursos bicepAppRG , a aplicação gerida, o grupo de recursos gerido e todos os recursos do Azure são eliminados.

O comando pede-lhe para confirmar que pretende remover o grupo de recursos.

Remove-AzResourceGroup -Name bicepAppRG

Se quiser eliminar a definição da aplicação gerida, elimine os grupos de recursos que criou com o nome packageStorageRG e bicepDefinitionRG.

Passos seguintes