Üzembehelyezési szkriptek használata a Bicepben
A deploymentScripts erőforrás használatával szkripteket futtathat Bicep-környezetekben, és áttekintheti a végrehajtási eredményeket. Az alábbi szkriptekkel egyéni lépéseket hajthat végre, például:
- Felhasználók hozzáadása egy címtárhoz.
- Adatsík-műveletek végrehajtása; például blobok másolása vagy adatbázis magolása.
- Keresse meg és ellenőrizze a licenckulcsot.
- Önaláírt tanúsítvány létrehozása.
- Hozzon létre egy objektumot a Microsoft Entra-azonosítóban.
- Ip-címblokkok keresése egyéni rendszerből.
Az üzembehelyezési szkriptek előnyei a következők:
- Könnyen kódokat, használatot és hibakeresést végezhetnek. A kedvenc fejlesztői környezetekben üzembehelyezési szkripteket fejleszthet. A szkriptek beágyazhatók Bicep-fájlokba vagy külső szkriptfájlokba.
- Megadhatja a szkript nyelvét és platformát. Jelenleg az Azure PowerShell és az Azure CLI üzembehelyezési szkriptjei támogatottak a Linux-környezetben.
- Engedélyezheti a parancssori argumentumok átadását a szkriptnek.
- Megadhatja a szkriptkimeneteket, és visszaadhatja őket az üzembe helyezéshez.
Az üzembehelyezési szkript erőforrása csak azokban a régiókban érhető el, ahol az Azure Container Instances elérhető. További információ: Erőforrás-rendelkezésre állás az Azure-tárolópéldányokhoz az Azure-régiókban.
Figyelmeztetés
Az üzembehelyezési szkriptszolgáltatás két további erőforrást igényel a szkriptek futtatásához és hibaelhárításához: egy tárfiókot és egy tárolópéldányt. A szolgáltatás általában az üzembe helyezési szkript befejeződése után törli ezeket az erőforrásokat. Ezekért az erőforrásokért díjat kell fizetnie, amíg el nem távolítja őket.
A díjszabással kapcsolatos információkért tekintse meg a Container Instances díjszabását és az Azure Storage díjszabását. További információ: Az üzembehelyezési szkript erőforrásainak törlése.
Képzési erőforrások
Ha lépésről lépésre szeretné megismerni az üzembehelyezési szkripteket, tekintse meg a Bicep- és ARM-sablonok kibővítése üzembehelyezési szkriptek használatával című témakört.
A minimális engedélyek konfigurálása
Az üzembehelyezési szkript API-verziójának vagy újabb verziójának 2020-10-01
esetében két egyszerű résztvevő vesz részt az üzembehelyezési szkript végrehajtásában:
Üzembe helyezési egyszerű: Ez az egyszerű fájl a Bicep-fájl üzembe helyezésére szolgál. Olyan mögöttes erőforrásokat hoz létre, amelyek a központi telepítési szkript erőforrásának futtatásához szükségesek – egy tárfiókot és egy Azure-tárolópéldányt. A minimális jogosultsági engedélyek konfigurálásához rendeljen hozzá egy egyéni szerepkört az alábbi tulajdonságokkal az üzembehelyezési egyszerű szolgáltatáshoz:
{ "roleName": "deployment-script-minimum-privilege-for-deployment-principal", "description": "Configure least privilege for the deployment principal in deployment script", "type": "customRole", "IsCustom": true, "permissions": [ { "actions": [ "Microsoft.Storage/storageAccounts/*", "Microsoft.ContainerInstance/containerGroups/*", "Microsoft.Resources/deployments/*", "Microsoft.Resources/deploymentScripts/*" ], } ], "assignableScopes": [ "[subscription().id]" ] }
Ha az Azure Storage és az Azure Container Instances erőforrás-szolgáltatók nincsenek regisztrálva, mindenképpen adja hozzá
Microsoft.Storage/register/action
ésMicrosoft.ContainerInstance/register/action
.Központi telepítési szkriptnév: Ez a rendszernév csak akkor szükséges, ha az üzembehelyezési szkriptnek hitelesítenie kell az Azure-ban, és meghívnia kell az Azure CLI-t vagy a PowerShellt. Az üzembehelyezési szkript egyszerű megadásának két módja van:
- Adjon meg egy felhasználó által hozzárendelt felügyelt identitást a
identity
tulajdonságban. (Lásd az üzembehelyezési szkript erőforrásszintaxisát.) Ha felhasználó által hozzárendelt felügyelt identitást ad meg, a szkriptszolgáltatás az üzembehelyezési szkript meghívása előtt hívConnect-AzAccount -Identity
meg. A felügyelt identitásnak rendelkeznie kell a szükséges hozzáféréssel a művelet szkriptben való végrehajtásához. Jelenleg csak a felhasználó által hozzárendelt felügyelt identitás támogatott aidentity
tulajdonságban. Ha másik identitással szeretne bejelentkezni, használja a lista második metódusát. - Adja át a szolgáltatásnév hitelesítő adatait biztonságos környezeti változókként, majd hívja meg az Csatlakozás-AzAccount vagy az login metódust az üzembehelyezési szkriptben.
Felügyelt identitás használata esetén az üzembe helyezési tagnak szüksége van a felügyelt identitás erőforrásához hozzárendelt beépített felügyelt identitáskezelői szerepkörre.
- Adjon meg egy felhasználó által hozzárendelt felügyelt identitást a
Jelenleg nincs beépített szerepkör az üzembehelyezési szkript engedélyeinek konfigurálásához.
Üzembehelyezési szkriptek létrehozása
Az alábbi példa egy egyszerű Bicep-fájlt mutat be egy üzembehelyezési szkripterőforrással. A szkript egy sztringparamétert vesz fel, és létrehoz egy másik sztringet.
param name string = 'John Dole'
param location string = resourceGroup().location
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'inlineCLI'
location: location
kind: 'AzureCLI'
properties: {
azCliVersion: '2.52.0'
arguments: name
scriptContent: 'echo "The argument is ${name}."; jq -n -c --arg st "Hello ${name}" \'{"text": $st}\' > $AZ_SCRIPTS_OUTPUT_PATH'
retentionInterval: 'PT1H'
}
}
output text string = deploymentScript.properties.outputs.text
Az üzembehelyezési szkript erőforrásainak létrehozásáról további információt az üzembehelyezési szkriptek létrehozása című témakörben talál. Az üzembehelyezési parancsfájl-erőforrás szkriptjeinek létrehozásához javasoljuk, hogy hozzon létre egy dedikált szkriptfejlesztési környezetet, például egy Azure-tárolópéldányt vagy egy Docker-rendszerképet. A szkriptek fejlesztése és alapos tesztelése után integrálhatja vagy meghívhatja a szkriptfájlokat az üzembehelyezési szkript erőforrásából. További információ: Szkriptfejlesztési környezetek konfigurálása.
Mentse a szkriptet egy inlineScript.bicep fájlban, majd telepítse az erőforrást a következő szkripttel:
$resourceGroupName = Read-Host -Prompt "Enter the name of the resource group to be created"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateFile "inlineScript.bicep"
Write-Host "Press [ENTER] to continue ..."
Üzembehelyezési szkript monitorozása és hibaelhárítása
Üzembehelyezési parancsfájl-erőforrás üzembe helyezésekor szüksége lesz egy tárfiókra a felhasználói szkript, a végrehajtási eredmények és a stdout
fájl tárolásához. Megadhatja saját tárfiókját. További információ: Meglévő tárfiók használata.
A saját tárfiók megadásának alternatíva a beállítás cleanupPreference
OnExpiration
. Ezután konfiguráljon retentionInterval
egy időtartamot, amely elegendő időt biztosít a kimenetek áttekintésére a tárfiók eltávolítása előtt. További információ: Az üzembehelyezési szkript erőforrásainak törlése.
Adja hozzá a cleanupPreference
tulajdonságot az előző Bicep-fájlhoz, és állítsa az értéket a következőre OnExpiration
: . Az alapértelmezett érték Always
. Emellett állítsa ( rentalInterval
egy óra) vagy rövidebb értékre PT1H
.
param name string = 'John Dole'
param location string = resourceGroup().location
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
name: 'inlineCLI'
location: location
kind: 'AzureCLI'
properties: {
azCliVersion: '2.52.0'
arguments: name
scriptContent: 'echo "The argument is ${name}."; jq -n -c --arg st "Hello ${name}" \'{"text": $st}\' > $AZ_SCRIPTS_OUTPUT_PATH'
cleanupPreference: 'OnExpiration'
retentionInterval: 'PT1H'
}
}
output text string = deploymentScript.properties.outputs.text
A Bicep-fájl sikeres üzembe helyezése után az eredmények ellenőrzéséhez használja az Azure Portalt, az Azure CLI-t, az Azure PowerShellt vagy a REST API-t.
Azure Portal
Az üzembehelyezési szkript erőforrásának üzembe helyezése után az erőforrás az Azure Portal erőforráscsoportja alatt lesz felsorolva. Az Áttekintés lap az üzembehelyezési szkript erőforrásán kívül a két támogató erőforrást is felsorolja. A támogató erőforrások a megőrzési idő lejárta után törlődnek.
Figyelje meg, hogy mindkét támogató erőforrás neve tartalmazza az azscripts utótagot, mert ezek az erőforrások automatikusan létrejönnek. A támogató erőforrások azonosításának másik módja a címkék használata.
Válassza ki a telepítési szkript erőforrását a listából. Az üzembehelyezési szkript erőforrásának Áttekintés lapján fontos információk jelennek meg az erőforrásról, például a kiépítési állapotról és a két támogató erőforrásról (Tárfiók és Tárolópéldány). A Naplók területen a szkript nyomtatási szövege látható.
Válassza a Kimenetek lehetőséget a szkript kimeneteinek megjelenítéséhez.
Térjen vissza az erőforráscsoporthoz, válassza ki a tárfiókot, válassza a Fájlmegosztások lehetőséget, majd válassza ki a megosztás nevét hozzáfűző azscriptekkel rendelkező fájlmegosztást. Két mappa jelenik meg a listában: azscriptinput és azscriptoutput. A kimeneti mappa egy executionresult.json fájlt és egy szkriptkimeneti fájlt tartalmaz. A executionresult.json fájl tartalmazza a szkriptvégrehajtási hibaüzenetet. A kimeneti fájl csak akkor jön létre, ha sikeresen futtatja a szkriptet.
A bemeneti mappa tartalmazza a rendszerszkriptfájlt és a felhasználói üzembehelyezési szkriptfájlt. A felhasználói üzembehelyezési szkriptfájlt lecserélheti egy módosított fájlra, és újrafuttathatja az üzembehelyezési szkriptet az Azure-tárolópéldányból.
Azure CLI
Az Azure CLI használatával kezelheti az üzembehelyezési szkripteket az előfizetés vagy az erőforráscsoport hatókörében:
- az deployment-scripts delete: Delete a deployment script.
- az deployment-scripts list: List all deployment scripts.
- az deployment-scripts show: Retrieve a deployment script.
- az deployment-scripts show-log: Show deployment script logs.
A listaparancs kimenete az alábbi példához hasonló:
{
"arguments": "John Dole",
"azCliVersion": "2.52.0",
"cleanupPreference": "OnExpiration",
"containerSettings": {
"containerGroupName": null
},
"environmentVariables": null,
"forceUpdateTag": null,
"id": "/subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.Resources/deploymentScripts/inlineCLI",
"identity": null,
"kind": "AzureCLI",
"location": "centralus",
"name": "inlineCLI",
"outputs": {
"text": "Hello John Dole"
},
"primaryScriptUri": null,
"provisioningState": "Succeeded",
"resourceGroup": "dsDemo",
"retentionInterval": "1:00:00",
"scriptContent": "echo \"The argument is John Dole.\"; jq -n -c --arg st \"Hello John Dole\" '{\"text\": $st}' > $AZ_SCRIPTS_OUTPUT_PATH",
"status": {
"containerInstanceId": "/subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.ContainerInstance/containerGroups/jgczqtxom5oreazscripts",
"endTime": "2023-12-11T20:20:12.149468+00:00",
"error": null,
"expirationTime": "2023-12-11T21:20:12.149468+00:00",
"startTime": "2023-12-11T20:18:26.674492+00:00",
"storageAccountId": "/subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.Storage/storageAccounts/jgczqtxom5oreazscripts"
},
"storageAccountSettings": null,
"supportingScriptUris": null,
"systemData": {
"createdAt": "2023-12-11T19:45:32.239063+00:00",
"createdBy": "johndole@contoso.com",
"createdByType": "User",
"lastModifiedAt": "2023-12-11T20:18:26.183565+00:00",
"lastModifiedBy": "johndole@contoso.com",
"lastModifiedByType": "User"
},
"tags": null,
"timeout": "1 day, 0:00:00",
"type": "Microsoft.Resources/deploymentScripts"
}
Azure PowerShell
Az Azure PowerShell használatával kezelheti az üzembehelyezési szkripteket az előfizetés vagy az erőforráscsoport hatókörében:
- Get-AzDeploymentScript: Üzembehelyezési szkriptek lekérése vagy listázása.
- Get-AzDeploymentScriptLog: Lekérheti az üzembehelyezési szkript végrehajtásának naplóját.
- Remove-AzDeploymentScript: Távolítsa el az üzembehelyezési szkriptet és a hozzá tartozó erőforrásokat.
- Save-AzDeploymentScriptLog: Mentse az üzembehelyezési szkript végrehajtásának naplóját a lemezre.
A Get-AzDeploymentScript
kimenet a következő példához hasonló:
Name : inlinePS
Id : /subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.Resources/deploymentScripts/inlinePS
ResourceGroupName : dsDemo
Location : centralus
SubscriptionId : 01234567-89AB-CDEF-0123-456789ABCDEF
ProvisioningState : Succeeded
Identity :
ScriptKind : AzurePowerShell
AzPowerShellVersion : 10.0
StartTime : 12/11/2023 9:45:50 PM
EndTime : 12/11/2023 9:46:59 PM
ExpirationDate : 12/11/2023 10:46:59 PM
CleanupPreference : OnExpiration
StorageAccountId : /subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.Storage/storageAccounts/ee5o4rmoo6ilmazscripts
ContainerInstanceId : /subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.ContainerInstance/containerGroups/ee5o4rmoo6ilmazscripts
Outputs :
Key Value
================== ==================
text Hello John Dole.
RetentionInterval : PT1H
Timeout : P1D
REST API
A REST API-val információkat kaphat az üzembehelyezési szkript erőforrásáról az erőforráscsoport szintjén és az előfizetés szintjén:
/subscriptions/<SubscriptionID>/resourcegroups/<ResourceGroupName>/providers/microsoft.resources/deploymentScripts/<DeploymentScriptResourceName>?api-version=2020-10-01
/subscriptions/<SubscriptionID>/providers/microsoft.resources/deploymentScripts?api-version=2020-10-01
Az alábbi példa az ARMClientet használja. Az ARMClient nem támogatott Microsoft-eszköz.
armclient login
armclient get /subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourcegroups/myrg/providers/microsoft.resources/deploymentScripts/myDeployementScript?api-version=2020-10-01
A kimenet a következő példához hasonló:
{
"kind": "AzureCLI",
"identity": null,
"location": "centralus",
"systemData": {
"createdAt": "2023-12-11T19:45:32.239063+00:00",
"createdBy": "johndole@contoso.com",
"createdByType": "User",
"lastModifiedAt": "2023-12-11T20:18:26.183565+00:00",
"lastModifiedBy": "johndole@contoso.com",
"lastModifiedByType": "User"
},
"properties": {
"provisioningState": "Succeeded",
"azCliVersion": "2.52.0",
"scriptContent": "echo \"The argument is John Dole.\"; jq -n -c --arg st \"Hello John Dole\" '{\"text\": $st}' > $AZ_SCRIPTS_OUTPUT_PATH",
"arguments": "John Dole",
"retentionInterval": "1:00:00",
"timeout": "1 day, 0:00:00",
"containerSettings": {
"containerGroupName": null
},
"status": {
"containerInstanceId": "/subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.ContainerInstance/containerGroups/jgczqtxom5oreazscripts",
"endTime": "2023-12-11T20:20:12.149468+00:00",
"error": null,
"expirationTime": "2023-12-11T21:20:12.149468+00:00",
"startTime": "2023-12-11T20:18:26.674492+00:00",
"storageAccountId": "/subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.Storage/storageAccounts/jgczqtxom5oreazscripts"
},
"outputs": {
"text": "Hello John Dole"
},
"cleanupPreference": "OnSuccess"
},
"id": "/subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/dsDemo/providers/Microsoft.Resources/deploymentScripts/inlineCLI",
"type": "Microsoft.Resources/deploymentScripts",
"name": "inlineCLI",
}
A következő REST API adja vissza a naplót:
/subscriptions/<SubscriptionID>/resourcegroups/<ResourceGroupName>/providers/microsoft.resources/deploymentScripts/<DeploymentScriptResourceName>/logs?api-version=2020-10-01
Csak az üzembehelyezési szkript erőforrásainak törlése előtt működik.
Üzembehelyezési szkript hibakódjai
Az alábbi táblázat az üzembehelyezési szkript hibakódjait sorolja fel:
Hibakód | Leírás |
---|---|
DeploymentScriptInvalidOperation |
A Bicep-fájlban található üzembehelyezési szkript erőforrásdefiníciója érvénytelen tulajdonságneveket tartalmaz. |
DeploymentScriptResourceConflict |
Nem törölhet üzembehelyezési szkripterőforrást, ha nemtermi állapotban van, és a végrehajtás nem haladta meg az egy órát. Vagy nem futtathatja újra ugyanazt az üzembehelyezési szkriptet ugyanazzal az erőforrás-azonosítóval (ugyanazzal az előfizetéssel, erőforráscsoportnévvel és erőforrásnévvel), de a szkript törzsének tartalma egyszerre eltérő. |
DeploymentScriptOperationFailed |
Az üzembehelyezési szkript művelete belsőleg meghiúsult. Lépjen kapcsolatba a Microsoft ügyfélszolgálatával. |
DeploymentScriptStorageAccountAccessKeyNotSpecified |
A hozzáférési kulcs nincs megadva a meglévő tárfiókhoz. |
DeploymentScriptContainerGroupContainsInvalidContainers |
A központi telepítési szkriptszolgáltatás által létrehozott tárolócsoportot külsőleg módosították, és érvénytelen tárolókat adtak hozzá. |
DeploymentScriptContainerGroupInNonterminalState |
Két vagy több üzembehelyezési szkripterőforrás ugyanazt az Azure-tárolópéldánynevet használja ugyanabban az erőforráscsoportban, és egyikük még nem fejezte be a végrehajtást. |
DeploymentScriptExistingStorageNotInSameSubscriptionAsDeploymentScript |
Az üzembe helyezés során biztosított meglévő tároló nem található abban az előfizetésben, amelyben a szkript üzembe van helyezve. |
DeploymentScriptStorageAccountInvalidKind |
Az adott vagy BlobStorage típusú meglévő tárfiók nem támogatja a BlobBlobStorage fájlmegosztásokat, ezért nem használható. |
DeploymentScriptStorageAccountInvalidKindAndSku |
A meglévő tárfiók nem támogatja a fájlmegosztásokat. A támogatott tárfióktípusok listájáért lásd : Meglévő tárfiók használata. |
DeploymentScriptStorageAccountNotFound |
A tárfiók nem létezik, vagy egy külső folyamat vagy eszköz törölte. |
DeploymentScriptStorageAccountWithServiceEndpointEnabled |
A megadott tárfiók rendelkezik szolgáltatásvégponttal. A szolgáltatásvégponttal rendelkező tárfiókok nem támogatottak. |
DeploymentScriptStorageAccountInvalidAccessKey |
Érvénytelen hozzáférési kulcs lett megadva a meglévő tárfiókhoz. |
DeploymentScriptStorageAccountInvalidAccessKeyFormat |
A tárfiókkulcs formátuma érvénytelen. Lásd: Tárfiók hozzáférési kulcsok kezelése. |
DeploymentScriptExceededMaxAllowedTime |
Az üzembehelyezési szkript végrehajtási ideje túllépte az üzembehelyezési szkript erőforrásdefiníciójában megadott időtúllépési értéket. |
DeploymentScriptInvalidOutputs |
Az üzembehelyezési szkript kimenete nem érvényes JSON-objektum. |
DeploymentScriptContainerInstancesServiceLoginFailure |
A felhasználó által hozzárendelt felügyelt identitás nem tudott bejelentkezni 10 kísérlet után, egyperces időközökkel. |
DeploymentScriptContainerGroupNotFound |
Egy külső eszköz vagy folyamat törölt egy tárolócsoportot, amelyet az üzembehelyezési szkriptszolgáltatás hozott létre. |
DeploymentScriptDownloadFailure |
Nem sikerült letölteni egy támogató szkriptet. Lásd: Támogató szkriptek használata. |
DeploymentScriptError |
A felhasználói szkript hibát jelzett. |
DeploymentScriptBootstrapScriptExecutionFailed |
A bootstrap-szkript hibát jelzett. A bootstrap-szkript az a rendszerszkript, amely az üzembehelyezési szkript végrehajtását vezényli. |
DeploymentScriptExecutionFailed |
Ismeretlen hiba történt az üzembehelyezési szkript végrehajtása során. |
DeploymentScriptContainerInstancesServiceUnavailable |
A tárolópéldány létrehozása során az Azure Container Instances szolgáltatás "szolgáltatás nem érhető el" hibaüzenetet jelzett. |
DeploymentScriptContainerGroupInNonterminalState |
Egy tárolópéldány létrehozása során egy másik üzembehelyezési szkript ugyanazt a tárolópéldánynevet használta ugyanabban a hatókörben (ugyanaz az előfizetés, erőforráscsoport neve és erőforrásnév). |
DeploymentScriptContainerGroupNameInvalid |
A megadott tárolópéldánynév nem felel meg az Azure Container Instances követelményeinek. Lásd: Az Azure Container Instances gyakori hibáinak elhárítása. |
Privát virtuális hálózat elérése
Néhány további konfigurációval futtathat üzembehelyezési szkripteket magánhálózatokon. További információ: Privát virtuális hálózat elérése.
Következő lépések
Ebben a cikkben megismerhette az üzembehelyezési szkriptek használatát. További információ: