Share via


Inicio rápido: Usar Bicep para implementar una definición de aplicación administrada por Azure

En este inicio rápido se describe cómo usar Bicep para implementar una definición de aplicación administrada de Azure desde el catálogo de servicios. La definición del catálogo de servicios está disponible para los miembros de su organización.

Para implementar una definición de aplicación administrada desde su catálogo de servicios, realice las siguientes tareas:

  • Use Bicep para desarrollar una plantilla que implemente una definición de aplicación administrada.
  • Cree un archivo de parámetros para la implementación.
  • Implemente la definición de aplicación administrada desde el catálogo de servicios.

Prerrequisitos

Para completar las tareas de este artículo, necesitará lo siguiente:

Obtener la definición de la aplicación administrada

Para obtener la definición de la aplicación administrada con Azure PowerShell, ejecute los siguientes comandos.

En Visual Studio Code, abra un nuevo terminal de PowerShell e inicie sesión en su suscripción de Azure.

Connect-AzAccount

Este comando abrirá el explorador predeterminado y le solicitará iniciar sesión en Azure. Para obtener más información, vaya a Inicio de sesión con Azure PowerShell.

En Azure PowerShell, obtenga la definición de la aplicación administrada. En este ejemplo, use el nombre del grupo de recursos bicepDefinitionRG que se creó cuando implementó la definición de aplicación administrada.

Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionRG

Get-AzManagedApplicationDefinition enumera todas las definiciones disponibles del grupo de recursos especificado, como sampleBicepManagedApplication.

El siguiente comando analiza la salida para mostrar solo el nombre de definición y el nombre del grupo de recursos. Usará los nombres cuando implemente la aplicación administrada.

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

Creación del archivo de Bicep

Abra Visual Studio Code y cree un archivo denominado deployServiceCatalog.bicep. Copie y pegue el siguiente código en el archivo y guárdelo.

@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 más información sobre el tipo de recurso, vaya a Microsoft.Solutions/applications.

Creación del archivo de parámetros

Abra Visual Studio Code y cree un archivo de parámetros denominado deployServiceCatalog.parameters.json. Copie y pegue el siguiente código en el archivo y guárdelo.

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

Debe proporcionar varios parámetros para implementar la aplicación administrada:

Parámetro Value
definitionName Nombre de la definición del catálogo de servicios. Este ejemplo usa sampleBicepManagedApplication.
definitionRG Nombre del grupo de recursos donde se almacena la definición. En este ejemplo se usa bicepDefinitionRG.
managedAppName Nombre de la aplicación administrada implementada. En este ejemplo se usa sampleBicepManagedApp.
mrgName Nombre único del grupo de recursos administrado que contiene los recursos implementados de la aplicación. El grupo de recursos se crea al implementar la aplicación administrada. Para crear un nombre de grupo de recursos administrado, puede ejecutar los comandos que siguen esta lista de parámetros.
appServicePlanName Cree un nombre para el plan. Máximo de 40 caracteres alfanuméricos y guiones. Por ejemplo, demoAppServicePlan. Los nombres de plan de App Service deben ser únicos dentro de un grupo de recursos de la suscripción.
appServiceNamePrefix Cree un prefijo para el nombre del plan. Máximo de 47 caracteres alfanuméricos o guiones. Por ejemplo, demoApp. Durante la implementación, el prefijo se concatena con una cadena única para crear un nombre único globalmente en Azure.
storageAccountNamePrefix Use solo letras minúsculas y números y un máximo de 11 caracteres. Por ejemplo, demostg1234. Durante la implementación, el prefijo se concatena con una cadena única para crear un nombre único globalmente en Azure.
storageAccountType Las demás opciones son Premium_LRS, Standard_LRS y Standard_GRS.

Puede ejecutar los comandos siguientes para crear un nombre para el grupo de recursos administrado.

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

Las variables $mrgprefix y $mrgtimestamp se concatenan y almacenan en la variable $mrgname. El valor de la variable tiene el formato mrg-sampleBicepManagedApplication-20230512103059. Use el valor de variable $mrgname cuando implemente la aplicación administrada.

Implementación de la aplicación administrada

Use Azure PowerShell o la CLI de Azure para crear un grupo de recursos e implementar la aplicación administrada.

New-AzResourceGroup -Name bicepAppRG -Location westus3

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

La implementación podría mostrar una advertencia de linter de Bicep de que la propiedad managedResourceGroupId espera un identificador de recurso. Dado que el grupo de recursos administrado se crea durante la implementación, no hay un identificador de recurso disponible para la propiedad.

Vista de resultados

Una vez implementada la aplicación administrada del catálogo de servicios, tendrá dos nuevos grupos de recursos. Uno contiene la aplicación administrada El otro grupo de recursos contiene los recursos administrados que se han implementado. En este ejemplo, un App Service, un plan de App Service y una cuenta de almacenamiento.

Aplicación administrada

Una vez finalizada la implementación, puede comprobar el estado de la aplicación administrada.

Ejecute el comando siguiente para comprobar el estado de la aplicación administrada.

Get-AzManagedApplication -Name sampleBicepManagedApp -ResourceGroupName bicepAppRG

Expanda las propiedades para facilitar la lectura de la información Properties.

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

Recursos administrados

Puede ver los recursos implementados en el grupo de recursos administrados.

Para mostrar los recursos del grupo de recursos administrados, ejecute el siguiente comando. Ha creado la variable $mrgname al crear los parámetros.

Get-AzResource -ResourceGroupName $mrgname

Para mostrar todas las asignaciones de roles para el grupo de recursos administrados.

Get-AzRoleAssignment -ResourceGroupName $mrgname

La definición de aplicación administrada que creó en los artículos de inicio rápido usó un grupo con la asignación de roles Propietario. Cree el grupo con el comando siguiente.

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

También puede enumerar las asignaciones de denegación para el grupo de recursos administrado.

Get-AzDenyAssignment -ResourceGroupName $mrgname

Limpieza de recursos

Cuando haya terminado con la aplicación administrada, podrá eliminar los grupos de recursos y eso eliminará todos los recursos creados. Por ejemplo, ha creado los grupos de recursos bicepAppRG y un grupo de recursos administrados con el prefijo mrg-bicepManagedApplication.

Cuando eliminas el grupo de recursos bicepAppRG, se eliminan la aplicación administrada, el grupo de recursos administrado y todos los recursos de Azure.

El comando le pide que confirme que quiere quitar el grupo de recursos.

Remove-AzResourceGroup -Name bicepAppRG

Si quiere eliminar la definición de la aplicación administrada, elimine los grupos de recursos que creó denominados packageStorageRG y bicepDefinitionRG.

Pasos siguientes