Rövid útmutató: Azure Managed Application-definíció létrehozása és közzététele a Bicep használatával
Ez a rövid útmutató bemutatja, hogyan hozhat létre és tehet közzé Azure Managed Application-definíciót a szolgáltatáskatalógusban a Bicep használatával. A definíció a szolgáltatáskatalógusban a szervezet tagjai számára érhető el.
Felügyelt alkalmazásdefiníció létrehozásához és a szolgáltatáskatalógusban való közzétételéhez hajtsa végre a következő feladatokat:
- A Bicep használatával fejlesztheti a sablont, és azure Resource Manager-sablonná (ARM-sablonlá) alakíthatja. A sablon meghatározza a felügyelt alkalmazás által üzembe helyezett Azure-erőforrásokat.
- A Bicep átalakítása JSON-ra a Bicep
build
paranccsal. A fájl JSON-ra való konvertálása után ellenőrizze a kód pontosságát. - Meg kell határoznia a felhasználói felület elemeit a portál számára, amikor üzembe helyezi a felügyelt alkalmazást.
- Hozzon létre egy .zip csomagot, amely tartalmazza a szükséges JSON-fájlokat. A .zip csomagfájl 120 MB-os korláttal rendelkezik a szolgáltatáskatalógus felügyelt alkalmazásdefiníciójára vonatkozóan.
- Tegye közzé a felügyelt alkalmazásdefiníciót, hogy elérhető legyen a szolgáltatáskatalógusban.
Ha a felügyelt alkalmazásdefiníció több mint 120 MB, vagy ha saját tárfiókját szeretné használni a szervezet megfelelőségi okokból, tekintse meg a rövid útmutatót: Hozzon létre és tegyen közzé egy Azure Managed Application-definíciót saját tárterület használatával.
A Bicep használatával felügyelt alkalmazásdefiníciót is üzembe helyezhet a szolgáltatáskatalógusból. További információ : Rövid útmutató: Azure Managed Application Definition üzembe helyezése a Bicep használatával.
Előfeltételek
A cikkben szereplő feladatok elvégzéséhez a következő elemekre van szüksége:
- Aktív előfizetéssel és Microsoft Entra-erőforrásokhoz, például felhasználókhoz, csoportokhoz vagy szolgáltatásnevekhez tartozó engedélyekkel rendelkező Azure-fiók. Ha nincs fiókja, a kezdés előtt hozzon létre egy ingyenes fiókot .
- Visual Studio Code a legújabb Azure Resource Manager Tools-bővítménysel. Bicep-fájlok esetén telepítse a Visual Studio Code Bicep-bővítményét.
- Telepítse az Azure PowerShell vagy az Azure CLI legújabb verzióját.
Bicep-fájl létrehozása
Minden felügyelt alkalmazás definíciója tartalmaz egy mainTemplate.json nevű fájlt. A sablon meghatározza az üzembe helyezendő Azure-erőforrásokat, és nem különbözik a szokásos ARM-sablontól. A sablont a Bicep használatával fejlesztheti, majd a Bicep-fájlt JSON-fájllá alakíthatja.
Nyissa meg a Visual Studio Code-ot, hozzon létre egy fájlt a mainTemplate.bicep kis- és nagybetűk megkülönböztetésével, és mentse azt.
Adja hozzá a következő Bicep-kódot, és mentse a fájlt. Meghatározza a felügyelt alkalmazás erőforrásait az App Service, az App Service-csomag és a tárfiók üzembe helyezéséhez.
param location string = resourceGroup().location
@description('App Service plan name.')
@maxLength(40)
param appServicePlanName string
@description('App Service name prefix.')
@maxLength(47)
param appServiceNamePrefix string
var appServicePlanSku = 'B1'
var appServicePlanCapacity = 1
var appServiceName = '${appServiceNamePrefix}${uniqueString(resourceGroup().id)}'
var linuxFxVersion = 'DOTNETCORE|8.0'
resource appServicePlan 'Microsoft.Web/serverfarms@2023-01-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSku
capacity: appServicePlanCapacity
}
kind: 'linux'
properties: {
zoneRedundant: false
reserved: true
}
}
resource appService 'Microsoft.Web/sites@2023-01-01' = {
name: appServiceName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
redundancyMode: 'None'
siteConfig: {
linuxFxVersion: linuxFxVersion
minTlsVersion: '1.2'
ftpsState: 'Disabled'
}
}
}
output appServicePlan string = appServicePlanName
output appServiceApp string = appService.properties.defaultHostName
Bicep átalakítása JSON-ra
A PowerShell vagy az Azure CLI használatával hozza létre a mainTemplate.json fájlt. Nyissa meg azt a könyvtárat, ahová a Bicep-fájlt mentette, és futtassa a build
parancsot.
bicep build mainTemplate.bicep
További információ: Bicep build.
A Bicep-fájl JSON-fájllá alakítása után a mainTemplate.json fájlnak meg kell egyeznie az alábbi példával. Előfordulhat, hogy a tulajdonságok version
templateHash
között különböző értékek szerepelnek.metadata
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.30.3.12046",
"templateHash": "16466621031230437685"
}
},
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"appServicePlanName": {
"type": "string",
"maxLength": 40,
"metadata": {
"description": "App Service plan name."
}
},
"appServiceNamePrefix": {
"type": "string",
"maxLength": 47,
"metadata": {
"description": "App Service name prefix."
}
}
},
"variables": {
"appServicePlanSku": "B1",
"appServicePlanCapacity": 1,
"appServiceName": "[format('{0}{1}', parameters('appServiceNamePrefix'), uniqueString(resourceGroup().id))]",
"linuxFxVersion": "DOTNETCORE|8.0"
},
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2023-01-01",
"name": "[parameters('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('appServicePlanSku')]",
"capacity": "[variables('appServicePlanCapacity')]"
},
"kind": "linux",
"properties": {
"zoneRedundant": false,
"reserved": true
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2023-01-01",
"name": "[variables('appServiceName')]",
"location": "[parameters('location')]",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"httpsOnly": true,
"redundancyMode": "None",
"siteConfig": {
"linuxFxVersion": "[variables('linuxFxVersion')]",
"minTlsVersion": "1.2",
"ftpsState": "Disabled"
}
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]"
]
}
],
"outputs": {
"appServicePlan": {
"type": "string",
"value": "[parameters('appServicePlanName')]"
},
"appServiceApp": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Web/sites', variables('appServiceName')), '2023-01-01').defaultHostName]"
}
}
}
A portál élményének meghatározása
Közzétevőként ön határozza meg a portál felületét a felügyelt alkalmazás létrehozásához. A createUiDefinition.json fájl létrehozza a portál felhasználói felületét. Ön határozza meg, hogy a felhasználók hogyan adnak bemenetet az egyes paraméterekhez vezérlőelemek, például legördülő listák és szövegdobozok használatával.
Ebben a példában a felhasználói felület kéri, hogy adja meg az App Service névelőtagját és az App Service-csomag nevét. A mainTemplate.json telepítése során a appServiceName
változók a uniqueString
függvény használatával fűznek hozzá egy 13 karakterből álló sztringet a névelőtaghoz, hogy a név globálisan egyedi legyen az Azure-ban.
Nyissa meg a Visual Studio Code-ot, hozzon létre egy kis- és nagybetűknek createUiDefinition.json nevű fájlt, és mentse.
Adja hozzá a következő JSON-kódot a fájlhoz, és mentse.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [
{}
],
"steps": [
{
"name": "webAppSettings",
"label": "Web App settings",
"subLabel": {
"preValidation": "Configure the web app settings",
"postValidation": "Completed"
},
"elements": [
{
"name": "appServicePlanName",
"type": "Microsoft.Common.TextBox",
"label": "App Service plan name",
"placeholder": "App Service plan name",
"defaultValue": "",
"toolTip": "Use alphanumeric characters or hyphens with a maximum of 40 characters.",
"constraints": {
"required": true,
"regex": "^[a-z0-9A-Z-]{1,40}$",
"validationMessage": "Only alphanumeric characters or hyphens are allowed, with a maximum of 40 characters."
},
"visible": true
},
{
"name": "appServiceName",
"type": "Microsoft.Common.TextBox",
"label": "App Service name prefix",
"placeholder": "App Service name prefix",
"defaultValue": "",
"toolTip": "Use alphanumeric characters or hyphens with minimum of 2 characters and maximum of 47 characters.",
"constraints": {
"required": true,
"regex": "^[a-z0-9A-Z-]{2,47}$",
"validationMessage": "Only alphanumeric characters or hyphens are allowed, with a minimum of 2 characters and maximum of 47 characters."
},
"visible": true
}
]
}
],
"outputs": {
"location": "[location()]",
"appServicePlanName": "[steps('webAppSettings').appServicePlanName]",
"appServiceNamePrefix": "[steps('webAppSettings').appServiceName]"
}
}
}
További információért olvassa el a CreateUiDefinition használatának első lépéseit.
A fájlok becsomagolása
Adja hozzá a két fájlt egy app.zip nevű csomagfájlhoz. A két fájlnak a .zip fájl gyökérszintjén kell lennie. Ha a fájlok egy mappában találhatók, a felügyelt alkalmazásdefiníció létrehozásakor hibaüzenet jelenik meg, amely szerint a szükséges fájlok nincsenek jelen.
Töltsön fel app.zip egy Azure Storage-fiókba, hogy a felügyelt alkalmazás definíciójának üzembe helyezésekor használhassa. A tárfiók nevének globálisan egyedinek kell lennie az Azure-ban, a hossznak pedig 3–24 karakternek kell lennie, csak kisbetűkkel és számokkal. A parancsban cserélje le a helyőrzőt <pkgstorageaccountname>
, beleértve a szögletes zárójeleket (<>
) az egyedi tárfiók nevére.
A Visual Studio Code-ban nyisson meg egy új PowerShell-terminált, és jelentkezzen be az Azure-előfizetésbe.
Connect-AzAccount
A parancs megnyitja az alapértelmezett böngészőt, és kéri, hogy jelentkezzen be az Azure-ba. További információ: Bejelentkezés az Azure PowerShell-lel.
A csatlakozás után futtassa a következő parancsokat.
New-AzResourceGroup -Name packageStorageGroup -Location westus
$pkgstorageparms = @{
ResourceGroupName = "packageStorageGroup"
Name = "<pkgstorageaccountname>"
Location = "westus"
SkuName = "Standard_LRS"
Kind = "StorageV2"
MinimumTlsVersion = "TLS1_2"
AllowBlobPublicAccess = $true
AllowSharedKeyAccess = $false
}
$pkgstorageaccount = New-AzStorageAccount @pkgstorageparms
A $pkgstorageparms
változó PowerShell-splatting használatával javítja az új tárfiók létrehozásához a parancsban használt paraméterértékek olvashatóságát. A Splatting más, több paraméterértéket használó PowerShell-parancsokban használatos.
A tárfiók létrehozása után adja hozzá a tárfiók hatóköréhez a Storage Blob Data Contributor szerepkör-hozzárendelést. Hozzáférés hozzárendelése a Microsoft Entra felhasználói fiókjához. Az Azure-beli hozzáférési szinttől függően előfordulhat, hogy a rendszergazda más engedélyeket is hozzárendel. További információ: Azure-szerepkör hozzárendelése blobadatokhoz való hozzáféréshez és Azure-szerepkörök hozzárendelése az Azure Portal használatával.
Miután hozzáadta a szerepkört a tárfiókhoz, néhány percig tart, amíg aktívvá válik az Azure-ban. Ezután létrehozhatja a tároló létrehozásához és a fájl feltöltéséhez szükséges környezetet.
$pkgstoragecontext = New-AzStorageContext -StorageAccountName $pkgstorageaccount.StorageAccountName -UseConnectedAccount
New-AzStorageContainer -Name appcontainer -Context $pkgstoragecontext -Permission blob
$blobparms = @{
File = "app.zip"
Container = "appcontainer"
Blob = "app.zip"
Context = $pkgstoragecontext
}
Set-AzStorageBlobContent @blobparms
A csomagfájl URI-jának tárolásához használja az alábbi parancsot egy nevesített packageuri
változóban. A felügyelt alkalmazásdefiníció üzembe helyezésekor használja a változó értékét.
$packageuri=(Get-AzStorageBlob -Container appcontainer -Blob app.zip -Context $pkgstoragecontext).ICloudBlob.StorageUri.PrimaryUri.AbsoluteUri
A felügyelt alkalmazás definíciójának létrehozása
Ebben a szakaszban lekérheti az identitásadatokat a Microsoft Entra-azonosítóból, létrehoz egy erőforráscsoportot, és üzembe helyezi a felügyelt alkalmazásdefiníciót.
Csoportazonosító és szerepkördefiníció azonosítójának lekérése
A következő lépés egy felhasználó, biztonsági csoport vagy alkalmazás kiválasztása az ügyfél erőforrásainak kezelésére. Ez az identitás a hozzárendelt szerepkörnek megfelelően rendelkezik engedélyekkel a felügyelt erőforráscsoporthoz. A szerepkör lehet bármilyen beépített Azure-szerepkör, például tulajdonos vagy közreműködő.
Ez a példa egy biztonsági csoportot használ, és a Microsoft Entra-fióknak a csoport tagjának kell lennie. A csoport objektumazonosítójának lekéréséhez cserélje le a helyőrzőt <managedAppDemo>
, beleértve a szögletes zárójeleket (<>
) a csoport nevére. A felügyelt alkalmazásdefiníció üzembe helyezésekor használja a változó értékét.
Új Microsoft Entra-csoport létrehozásához lépjen a Microsoft Entra-csoportok és csoporttagság kezelése elemre.
$principalid=(Get-AzADGroup -DisplayName <managedAppDemo>).Id
Ezután szerezze be annak az Azure-beli beépített szerepkörnek a szerepkördefiníciós azonosítóját, amelyet hozzáférést szeretne biztosítani a felhasználónak, csoportnak vagy alkalmazásnak. A felügyelt alkalmazásdefiníció üzembe helyezésekor használja a változó értékét.
$roleid=(Get-AzRoleDefinition -Name Owner).Id
A definíció üzembehelyezési sablonjának létrehozása
A felügyelt alkalmazásdefiníciót egy Bicep-fájl használatával helyezheti üzembe a szolgáltatáskatalógusban.
Nyissa meg a Visual Studio Code-ot, hozzon létre egy deployDefinition.bicep nevű fájlt, és mentse.
Adja hozzá a következő Bicep-kódot, és mentse a fájlt.
param location string = resourceGroup().location
@description('Name of the managed application definition.')
param managedApplicationDefinitionName string
@description('The URI of the .zip package file.')
param packageFileUri string
@description('Publishers Principal ID that needs permissions to manage resources in the managed resource group.')
param principalId string
@description('Role ID for permissions to the managed resource group.')
param roleId string
var definitionLockLevel = 'ReadOnly'
var definitionDisplayName = 'Sample Bicep managed application'
var definitionDescription = 'Sample Bicep managed application that deploys web resources'
resource managedApplicationDefinition 'Microsoft.Solutions/applicationDefinitions@2021-07-01' = {
name: managedApplicationDefinitionName
location: location
properties: {
lockLevel: definitionLockLevel
description: definitionDescription
displayName: definitionDisplayName
packageFileUri: packageFileUri
authorizations: [
{
principalId: principalId
roleDefinitionId: roleId
}
]
}
}
A sablon tulajdonságairól további információt a Microsoft.Solutions/applicationDefinitions webhelyen talál.
A lockLevel
felügyelt erőforráscsoportban az ügyfél nem kívánt műveleteket hajt végre ezen az erőforráscsoporton. ReadOnly
Jelenleg ez az egyetlen támogatott zárolási szint. ReadOnly
megadja, hogy az ügyfél csak a felügyelt erőforráscsoportban található erőforrásokat olvassa be. A felügyelt erőforráscsoporthoz hozzáférést biztosító közzétevői identitások mentesülnek a zárolási szint alól.
A paraméterfájl létrehozása
A felügyelt alkalmazásdefiníció üzembehelyezési sablonjának több paraméterhez is bemenetre van szüksége. Az üzembe helyezési parancssor kéri az értékek megadását, vagy létrehozhat egy paraméterfájlt az értékekhez. Ebben a példában egy paraméterfájl használatával továbbítja a paraméterértékeket az üzembe helyezési parancsnak.
A Visual Studio Code-ban hozzon létre egy deployDefinition-parameters.bicepparam nevű új fájlt, és mentse azt.
Adja hozzá a következőt a paraméterfájlhoz, és mentse. Ezután cserélje le a <placeholder values>
szögletes zárójeleket (<>
) az értékekre.
using './deployDefinition.bicep'
param managedApplicationDefinitionName = 'sampleBicepManagedApplication'
param packageFileUri = '<placeholder for the packageFileUri>'
param principalId = '<placeholder for principalid value>'
param roleId = '<placeholder for roleid value>'
Az alábbi táblázat a felügyelt alkalmazásdefiníció paraméterértékét ismerteti.
Paraméter | Érték |
---|---|
managedApplicationDefinitionName |
A felügyelt alkalmazás definíciójának neve. Ebben a példában használja a sampleBicepManagedApplication parancsot. |
packageFileUri |
Adja meg a .zip csomagfájl URI-ját. Használja a packageuri változó értékét. |
principalId |
A közzétevők főazonosítója, amely engedélyeket igényel a felügyelt erőforráscsoport erőforrásainak kezeléséhez. Használja a principalid változó értékét. |
roleId |
A felügyelt erőforráscsoport engedélyeinek szerepkör-azonosítója. Például Tulajdonos, Közreműködő, Olvasó. Használja a roleid változó értékét. |
A változóértékek lekérése:
- Azure PowerShell: A PowerShellben írja be
$variableName
a változó értékének megjelenítéséhez. - Azure CLI: A Bashben írja be
echo $variableName
a változó értékének megjelenítéséhez.
A definíció üzembe helyezése
A felügyelt alkalmazás definíciójának üzembe helyezésekor elérhetővé válik a szolgáltatáskatalógusban. Ez a folyamat nem telepíti a felügyelt alkalmazás erőforrásait.
Hozzon létre egy bicepDefinitionGroup nevű erőforráscsoportot, és telepítse a felügyelt alkalmazásdefiníciót.
New-AzResourceGroup -Name bicepDefinitionGroup -Location westus
$deployparms = @{
ResourceGroupName = "bicepDefinitionGroup"
TemplateFile = "deployDefinition.bicep"
TemplateParameterFile = "deployDefinition-parameters.bicepparam"
Name = "deployDefinition"
}
New-AzResourceGroupDeployment @deployparms
Az eredmények ellenőrzése
Futtassa a következő parancsot annak ellenőrzéséhez, hogy a definíció közzé van-e téve a szolgáltatáskatalógusban.
Get-AzManagedApplicationDefinition -ResourceGroupName bicepDefinitionGroup
Get-AzManagedApplicationDefinition
Felsorolja a megadott erőforráscsoport összes elérhető definícióját, például a sampleBicepManagedApplicationt.
Győződjön meg arról, hogy a felhasználók hozzáférhetnek a definícióhoz
Ön hozzáfér a felügyelt alkalmazás definíciójához, azonban gondoskodnia kell róla, hogy a vállalat más felhasználói is hozzáférjenek. Engedélyezzen számukra legalább Olvasó szerepkört a definícióhoz. Előfordulhat, hogy ezt a hozzáférési szintet örökölték az előfizetésből vagy az erőforráscsoportból. Annak ellenőrzéséhez, hogy kinek van hozzáférése a definícióhoz, és felhasználókat vagy csoportokat vehet fel, lépjen az Azure-szerepkörök hozzárendelése az Azure Portalon.
Az erőforrások eltávolítása
Ha telepíteni szeretné a definíciót, folytassa a következő lépésekkel , amelyek a cikkre mutató hivatkozásokat követve telepítik a definíciót a Bicep-lel.
Ha végzett a felügyelt alkalmazás definíciójával, törölheti a packageStorageGroup és a bicepDefinitionGroup nevű erőforráscsoportokat.
A parancssor kéri, hogy erősítse meg, hogy el szeretné távolítani az erőforráscsoportot.
Remove-AzResourceGroup -Name packageStorageGroup
Remove-AzResourceGroup -Name bicepDefinitionGroup
Következő lépések
Közzétette a felügyelt alkalmazásdefiníciót. A következő lépés a definíció egy példányának üzembe helyezésének elsajátítása.
Rövid útmutató: Azure Managed Application-definíció üzembe helyezése a Bicep használatával.