Megosztás a következőn keresztül:


Üzembehelyezési szkript fejlesztése a Bicepben

Ez a cikk példákat tartalmaz arra, hogyan fejleszthet üzembehelyezési szkriptet a Bicepben.

Az üzembehelyezési szkript erőforrásainak üzembe helyezési időtartama lehet. Ezeknek a szkripteknek a hatékony fejlesztéséhez és teszteléséhez érdemes lehet létrehozni egy dedikált fejlesztői környezetet, például egy Azure-tárolópéldányt vagy egy Docker-példányt. További információ: Fejlesztési környezet létrehozása.

Syntax

Az alábbi Bicep-fájl egy üzembehelyezési szkripterőforrás példája. További információkért tekintse meg a legújabb üzembehelyezési szkript sémáját.

resource <symbolic-name> 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: '<resource-name>'
  location: resourceGroup().location
  tags: {}
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '<user-assigned-identity-id>': {}
    }
  }
  kind: 'AzureCLI'
  properties: {
    storageAccountSettings: {
      storageAccountName: '<storage-account-name>'
      storageAccountKey: '<storage-account-key>'
    }
    containerSettings: {
      containerGroupName: '<container-group-name>'
      subnetIds: [
        {
          id: '<subnet-id>'
        }
      ]
    }
    environmentVariables: []
    azCliVersion: '2.52.0'
    arguments: '<script-arguments>'
    scriptContent: '''<azure-cli-or-azure-powershell-script>''' // or primaryScriptUri: 'https://raw.githubusercontent.com/Azure/azure-docs-bicep-samples/main/samples/deployment-script/inlineScript.ps1'
    supportingScriptUris: []
    timeout: 'P1D'
    cleanupPreference: 'OnSuccess'
    retentionInterval: 'P1D'
    forceUpdateTag: '1'
  }
}

Az üzembehelyezési szkriptben adja meg az alábbi tulajdonságértékeket:

  • tags: Az üzembehelyezési szkript címkéinek megadása. Ha az üzembehelyezési szkriptszolgáltatás létrehozza a két támogató erőforrást (egy tárfiókot és egy tárolópéldányt), a címkék mindkét erőforrásnak átadódnak. A címkék segítségével azonosíthatja az erőforrásokat. Ezen támogató erőforrások azonosításának másik módja az azscripteket tartalmazó utótagjuk. További információkért tekintse meg az üzembehelyezési szkriptek figyelése és hibaelhárítása című témakört.

  • identity: Az üzembehelyezési szkript API-verziójához vagy újabb verziójához 2020-10-01 a felhasználó által hozzárendelt felügyelt identitás nem kötelező, kivéve, ha azure-specifikus műveleteket kell végrehajtania a szkriptben, vagy magánhálózaton futtatja az üzembehelyezési szkriptet. Az API-verzió 2019-10-01-preview felügyelt identitást igényel, mert az üzembehelyezési szkriptszolgáltatás a szkriptek futtatásához használja.

    Amikor megadja a identity tulajdonságot, a szkriptszolgáltatás a felhasználói szkript meghívása előtt hív Connect-AzAccount -Identity meg. Jelenleg csak a felhasználó által hozzárendelt felügyelt identitás támogatott. Ha más identitással szeretne bejelentkezni az üzembehelyezési szkriptben, meghívhatja Csatlakozás-AzAccountot. További információ: A minimális engedélyek konfigurálása.

  • kind: Adja meg a szkript típusát, vagy AzurePowerShellAzureCLI. kindEmellett meg kell adnia a tulajdonságot vagy azCliVersion a tulajdonságot azPowerShellVersion is.

  • storageAccountSettings: Adja meg a meglévő tárfiók használatára vonatkozó beállításokat. Ha storageAccountName nincs megadva, a rendszer automatikusan létrehoz egy tárfiókot. További információ: Meglévő tárfiók használata.

  • containerSettings: Az Azure-tárolópéldány nevének testreszabása. A tárolócsoport nevének konfigurálásáról a jelen cikk későbbi részében, a tárolópéldány konfigurálásával foglalkozó cikkben talál további információt. A központi telepítési szkript magánhálózaton való futtatásának konfigurálásáról subnetIds további információt a privát virtuális hálózat elérése című témakörben talál.

  • environmentVariables: Adja meg a szkriptnek átadni kívánt környezeti változókat .

  • azPowerShellVersion/azCliVersion: Adja meg a használni kívánt modulverziót.

    Tekintse meg a támogatott Azure CLI-verziók listáját.

    Fontos

    Az üzembehelyezési szkript a Microsoft Eszközjegyzék elérhető CLI-lemezképeit használja. A parancssori felület rendszerképének hitelesítése általában körülbelül egy hónapot vesz igénybe egy üzembehelyezési szkript esetében. Ne használja az elmúlt 30 napban kiadott CLI-verziókat. A rendszerképek kiadási dátumait az Azure CLI kibocsátási megjegyzéseiben találja. Ha nem támogatott verziót használ, a hibaüzenet felsorolja a támogatott verziókat.

  • arguments: Adja meg a paraméterértékeket. Az értékek szóközök szerint vannak elválasztva.

    Az üzembehelyezési szkript a CommandLineToArgvW rendszerhívás meghívásával sztringek tömbjébe osztja az argumentumokat. Erre a lépésre azért van szükség, mert az argumentumokat parancstulajdonságként továbbítja a rendszer az Azure Container Instancesnek, a parancstulajdonság pedig sztringek tömbje.

    Ha az argumentumok szökött karaktereket tartalmaznak, akkor a karaktereket kétszer kell feloldani. Az előző bicepsz szintaxisban például az argumentum az -name \"John Dole\". A szökött sztring az -name \\"John Dole\\".

    Ha argumentumként szeretne átadni egy Bicep típusú object paramétert, konvertálja az objektumot sztringgé a sztring() függvénnyel, majd a replace() függvénnyel cserélje le az idézőjeleket () dupla idézőjelekre ("\\"). Például:

    replace(string(parameters('tables')), '"', '\\"')
    

    További információt a Bicep-mintafájlban talál.

  • scriptContent: Adja meg a szkript tartalmát. Ez lehet beágyazott szkript vagy külső szkriptfájl, amelyet a loadTextContent függvény használatával importált. További információ: Beágyazott és külső fájl a cikk későbbi részében. Külső szkript futtatásához használja primaryScriptUri inkább.

  • primaryScriptUri: Adjon meg egy nyilvánosan elérhető URL-címet az elsődleges üzembehelyezési szkripthez támogatott fájlkiterjesztésekkel. További információ: Külső szkriptek használata a cikk későbbi részében.

  • supportingScriptUris: Adjon meg egy nyilvánosan elérhető URL-címeket tartalmazó tömböt a támogatott fájlokhoz, amelyek vagy scriptContentprimaryScriptUria . További információ: Beágyazott és külső fájl a cikk későbbi részében.

  • timeout: Adja meg a szkript végrehajtásához megengedett maximális időt ISO 8601 formátumban. Az alapértelmezett érték P1D.

  • forceUpdateTag: Ha ezt az értéket módosítja a Bicep-fájltelepítések között, az üzembe helyezési szkript újrafuttatására kényszeríti. Ha a függvényt newGuid() használja utcNow() , azt csak egy paraméter alapértelmezett értékében használhatja. További információ: Szkript futtatása többször ebben a cikkben.

  • cleanupPreference. Adja meg a két támogató üzembehelyezési erőforrás (a tárfiók és a tárolópéldány) eltávolításának beállítását, amikor a szkript végrehajtása terminálállapotba kerül. Az alapértelmezett beállítás azAlways, amely a támogató erőforrások törlését kéri a terminálállapottól (Succeededvagy FailedCanceled). További információ: Az üzembehelyezési szkript erőforrásainak törlése a cikk későbbi részében.

  • retentionInterval: Adja meg azt az időközt, amelynél a szolgáltatás megtartja az üzembehelyezési szkript erőforrását, miután az üzembehelyezési szkript végrehajtása elérte a terminálállapotot. Az üzembehelyezési szkript erőforrása törlődik, ha ez az időtartam lejár. Az időtartam az ISO 8601 mintán alapul. A megőrzési időköz 1 óra (PT1H) és 26 óra () között vanPT26H. Ezt a tulajdonságot akkor használja, ha cleanupPreference be van állítva.OnExpiration További információ: Az üzembehelyezési szkript erőforrásainak törlése a cikk későbbi részében.

További példák

  • 1. minta: Hozzon létre egy kulcstartót, és egy üzembehelyezési szkripttel rendeljen tanúsítványt a kulcstartóhoz.
  • 2. példa: Hozzon létre egy erőforráscsoportot az előfizetés szintjén, hozzon létre egy kulcstartót az erőforráscsoportban, majd egy üzembehelyezési szkripttel rendeljen tanúsítványt a kulcstartóhoz.
  • 3. minta: Hozzon létre egy felhasználó által hozzárendelt felügyelt identitást, rendelje hozzá a közreműködői szerepkört az identitáshoz az erőforráscsoport szintjén, hozzon létre egy kulcstartót, majd egy üzembehelyezési szkripttel rendeljen tanúsítványt a kulcstartóhoz.
  • 4. példa: Manuálisan hozzon létre egy felhasználó által hozzárendelt felügyelt identitást, és rendelje hozzá az engedélyt a Microsoft Graph API használatára a Microsoft Entra-alkalmazások létrehozásához. A Bicep-fájlban egy üzembehelyezési szkripttel hozzon létre egy Microsoft Entra-alkalmazást és szolgáltatásnevet, és adja ki az objektumazonosítókat és az ügyfélazonosítót.

Beágyazott és külső fájl

Az üzembehelyezési szkriptek egy Bicep-fájlban lehetnek, vagy külsőleg is tárolhatók külön fájlként.

Beágyazott szkript használata

Az alábbi Bicep-fájl bemutatja, hogyan használható beágyazott szkript.

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: 'set -e; output="Hello $1"; echo $output'
    retentionInterval: 'P1D'
  }
}

A szkriptbe belefoglalva set -e azonnali kilépést engedélyezhet, ha egy parancs nemzero állapotot ad vissza. Ez a gyakorlat leegyszerűsíti a hibakeresési folyamatokat.

Szkriptfájl betöltése

A loadTextContent függvény használatával sztringként kér le egy szkriptfájlt. Ez a függvény lehetővé teszi a szkript külső fájlban való karbantartását és üzembehelyezési szkriptként való elérését. A szkriptfájlhoz megadott elérési út a Bicep-fájlhoz képest van megadva.

Az előző Bicep-fájlból kinyerheti a beágyazott szkriptet egy hello.sh fájlba, majd elhelyezheti a fájlt egy szkriptek nevű almappába.

output="Hello $1"
echo $output

Ezután az alábbi példához hasonlóan módosíthatja az előző Bicep-fájlt:

param name string = 'John Dole'
param location string = resourceGroup().location

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'loadTextContentCLI'
  location: location
  kind: 'AzureCLI'
  properties: {
    azCliVersion: '2.52.0'
    arguments: name
    scriptContent: loadTextContent('./scripts/hello.sh')
    retentionInterval: 'P1D'
  }
}

Külső szkriptek használata

Beágyazott szkriptek helyett külső szkriptfájlokat is használhat. Csak a .ps1 kiterjesztésű elsődleges PowerShell-szkriptek támogatottak. CLI-szkriptek esetén az elsődleges szkriptek bármilyen érvényes Bash-szkriptbővítményt tartalmazhatnak, vagy egyáltalán nem rendelkeznek kiterjesztéssel. Külső szkriptfájlok alkalmazásához cserélje le scriptContent a következőt primaryScriptUri: .

param name string = 'John Dole'
param location string = resourceGroup().location

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'externalScriptCLI'
  location: location
  kind: 'AzureCLI'
  properties: {
    azCliVersion: '2.52.0'
    primaryScriptUri: 'https://raw.githubusercontent.com/Azure/azure-docs-bicep-samples/main/samples/deployment-script/hello.sh'
    arguments: '-name ${name}'
    retentionInterval: 'P1D'
  }
}

A külső szkriptfájloknak elérhetőnek kell lenniük. Az Azure Storage-fiókokban tárolt szkriptfájlok biztonságossá tételéhez hozzon létre egy közös hozzáférésű jogosultságkód (SAS) jogkivonatot, és vegye fel azokat a sablon URI-jaiba. Állítsa be a lejáratot úgy, hogy elegendő idő legyen az üzembe helyezés befejezéséhez. További információ: Privát ARM-sablon üzembe helyezése SAS-jogkivonattal.

Önnek kell gondoskodnia arról, hogy az üzembe helyezési szkript által hivatkozott szkript integritása (vagy supportingScriptUrisakárprimaryScriptUri). Csak megbízható szkriptekre hivatkozzon.

Támogató szkriptek használata

A bonyolult logikákat egy vagy több támogató szkriptfájlra bonthatja. supportingScriptUris A tulajdonság használatával szükség esetén uri-tömböt biztosíthat a támogató szkriptfájloknak.

param name string = 'John Dole'
param location string = resourceGroup().location

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'supportingScriptCLI'
  location: location
  kind: 'AzureCLI'
  properties: {
    azCliVersion: '2.52.0'
    arguments: name
    scriptContent: 'output="Hello $1"; echo $output; ./hello.sh "$1"'
    supportingScriptUris: [
      'https://raw.githubusercontent.com/Azure/azure-docs-bicep-samples/master/samples/deployment-script/hello.sh'
    ]
    retentionInterval: 'P1D'
  }
}

A támogató szkriptfájlokat a beágyazott és az elsődleges szkriptfájlokból is meghívhatja. A támogató szkriptfájlok nem korlátozzák a fájlkiterjesztést.

A rendszer futásidőben másolja a segédfájlokat az azscripts/azscriptinput fájlba. Használjon relatív elérési utat a beágyazott szkriptekből és az elsődleges szkriptfájlokból származó támogató fájlokra való hivatkozáshoz.

Azure-erőforrások elérése

Az Azure-erőforrások eléréséhez konfigurálnia kell az identity elemet. Az alábbi Bicep-fájl bemutatja, hogyan kérhető le az Azure-kulcstartók listája. A kulcstartó eléréséhez a felhasználó-hozzárendelés felügyeleti identitás engedélyének megadása is szükséges.

param identity string
param location string = resourceGroup().location

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'listKvCLI'
  location: location
  kind: 'AzureCLI'
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${identity}': {}
    }
  }
  properties: {
    azCliVersion: '2.52.0'
    scriptContent: 'result=$(az keyvault list); echo $result | jq -c \'{Result: map({id: .id})}\' > $AZ_SCRIPTS_OUTPUT_PATH'
    retentionInterval: 'P1D'
  }
}

output result object = deploymentScript.properties.outputs

Megjegyzés:

Az Azure-bejelentkezés újrapróbálkozása már be van építve a burkolószkriptbe. Ha ugyanabban a Bicep-fájlban ad engedélyeket, mint az üzembe helyezési szkriptek, az üzembehelyezési szkriptszolgáltatás 10 percig (10 másodperces időközökkel) újra bejelentkezik, amíg a felügyelt identitás szerepkör-hozzárendelése replikálódik.

Kimenetek használata

A kimenetek kezelésének megközelítése a használt szkript típusától függően változik – az Azure CLI vagy az Azure PowerShell.

Az Azure CLI üzembehelyezési szkriptje egy elnevezett AZ_SCRIPTS_OUTPUT_PATH környezeti változóval jelzi a fájl helyét a szkriptkimenetekhez. Amikor üzembehelyezési szkriptet futtat egy Bicep-fájlban, a Bash-rendszerhéj automatikusan konfigurálja önnek ezt a környezeti változót. Az előre definiált érték a következőképpen van beállítva /mnt/azscripts/azscriptoutput/scriptoutputs.json: .

A kimeneteknek meg kell felelniük egy érvényes JSON-sztringobjektum-szerkezetnek. A fájl tartalmát kulcs/érték párként kell formázni. Mentse például a sztringtömböt a következőként { "MyResult": [ "foo", "bar"] }: . Csak a tömberedmények(például [ "foo", "bar" ]) tárolása érvénytelen.

param name string = 'John Dole'
param location string = resourceGroup().location

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'outputCLI'
  location: location
  kind: 'AzureCLI'
  properties: {
    azCliVersion: '2.52.0'
    arguments: name
    scriptContent: 'jq -n -c --arg st "Hello ${name}" \'{"text": $st}\' > $AZ_SCRIPTS_OUTPUT_PATH'
    retentionInterval: 'P1D'
  }
}

output text string = deploymentScript.properties.outputs.text

Az előző minta jq-t használ a kimenetek létrehozására. A jq eszköz a tároló lemezképeivel rendelkezik. További információ: Fejlesztési környezet konfigurálása.

Környezeti változók használata

Biztonságos sztringek átadása üzembehelyezési szkriptnek

A tárolópéldányokban környezeti változókat (EnvironmentVariable) állíthat be annak az alkalmazásnak vagy szkriptnek a dinamikus konfigurációjához, amelyet a tároló futtat. Az üzembehelyezési szkriptek a nem biztonságos és biztonságos környezeti változókat ugyanúgy kezelik, mint az Azure Container Instancest. További információ: Környezeti változók beállítása tárolópéldányokban.

A környezeti változók maximális megengedett mérete 64 KB.

param location string = resourceGroup().location

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'passEnvVariablesCLI'
  location: location
  kind: 'AzureCLI'
  properties: {
    azCliVersion: '2.52.0'
    environmentVariables: [
      {
        name: 'UserName'
        value: 'jdole'
      }
      {
        name: 'Password'
        secureValue: 'jDolePassword'
      }
    ]
    scriptContent: 'echo "Username is :$Username"; echo "Password is: $Password"'
    retentionInterval: 'P1D'
  }
}

Rendszer által definiált környezeti változók

Az alábbi táblázat a rendszer által definiált környezeti változókat sorolja fel:

Környezeti változó Alapértelmezett érték (CLI) Alapértelmezett érték (PowerShell) Fenntartott rendszer
AZ_SCRIPTS_AZURE_ENVIRONMENT AzureCloud AzureCloud Nem
AZ_SCRIPTS_CLEANUP_PREFERENCE Always Always Nem
AZ_SCRIPTS_OUTPUT_PATH /mnt/azscripts/azscriptoutput/scriptoutputs.json Nem értelmezhető Igen
AZ_SCRIPTS_PATH_INPUT_DIRECTORY /mnt/azscripts/azscriptinput|/mnt/azscripts/azscriptinput Nem alkalmazható Igen
AZ_SCRIPTS_PATH_OUTPUT_DIRECTORY /mnt/azscripts/azscriptoutput|/mnt/azscripts/azscriptoutput Nem alkalmazható Igen
AZ_SCRIPTS_PATH_USER_SCRIPT_FILE_NAME userscript.sh userscript.ps1 Yes
AZ_SCRIPTS_PATH_PRIMARY_SCRIPT_URI_FILE_NAME primaryscripturi.config primaryscripturi.config Yes
AZ_SCRIPTS_PATH_SUPPORTING_SCRIPT_URI_FILE_NAME supportingscripturi.config supportingscripturi.config Yes
AZ_SCRIPTS_PATH_SCRIPT_OUTPUT_FILE_NAME scriptoutputs.json scriptoutputs.json Yes
AZ_SCRIPTS_PATH_EXECUTION_RESULTS_FILE_NAME executionresult.json executionresult.json Igen
AZ_SCRIPTS_USER_ASSIGNED_IDENTITY Nem alkalmazható Nem alkalmazható Nem

A használat AZ_SCRIPTS_OUTPUT_PATHmintájáért lásd a cikk korábbi, kimenetekkel való használatát ismertető cikket.

A környezeti változók eléréséhez használja az alábbi kódot.

param location string = resourceGroup().location

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  name: 'listEnvVariablesCLI'
  location: location
  kind: 'AzureCLI'
  properties: {
    azCliVersion: '2.52.0'
    scriptContent: 'echo "AZ_SCRIPTS_AZURE_ENVIRONMENT is : $AZ_SCRIPTS_AZURE_ENVIRONMENT",echo "AZ_SCRIPTS_CLEANUP_PREFERENCE	is : $AZ_SCRIPTS_CLEANUP_PREFERENCE",echo "AZ_SCRIPTS_OUTPUT_PATH	is : $AZ_SCRIPTS_OUTPUT_PATH",echo "AZ_SCRIPTS_PATH_INPUT_DIRECTORY is : $AZ_SCRIPTS_PATH_INPUT_DIRECTORY",echo "AZ_SCRIPTS_PATH_OUTPUT_DIRECTORY is : $AZ_SCRIPTS_PATH_OUTPUT_DIRECTORY",echo "AZ_SCRIPTS_PATH_USER_SCRIPT_FILE_NAME is : $AZ_SCRIPTS_PATH_USER_SCRIPT_FILE_NAME",echo "AZ_SCRIPTS_PATH_PRIMARY_SCRIPT_URI_FILE_NAME	is : $AZ_SCRIPTS_PATH_PRIMARY_SCRIPT_URI_FILE_NAME",echo "AZ_SCRIPTS_PATH_SUPPORTING_SCRIPT_URI_FILE_NAME	is : $AZ_SCRIPTS_PATH_SUPPORTING_SCRIPT_URI_FILE_NAME",echo "AZ_SCRIPTS_PATH_SCRIPT_OUTPUT_FILE_NAME	is : $AZ_SCRIPTS_PATH_SCRIPT_OUTPUT_FILE_NAME",echo "AZ_SCRIPTS_PATH_EXECUTION_RESULTS_FILE_NAME	is : $AZ_SCRIPTS_PATH_EXECUTION_RESULTS_FILE_NAME",echo "AZ_SCRIPTS_USER_ASSIGNED_IDENTITY	is : $AZ_SCRIPTS_USER_ASSIGNED_IDENTITY"'
    retentionInterval: 'P1D'
  }
}

Meglévő tárfiók használata

Ahhoz, hogy a szkript futhasson, és lehetővé tegye a hibaelhárítást, szüksége van egy tárfiókra és egy tárolópéldányra. Kijelölhet egy meglévő tárfiókot, vagy engedélyezheti, hogy a szkriptszolgáltatás automatikusan létrehozza a tárfiókot és a tárolópéldányt is.

A meglévő tárfiókok használatára vonatkozó követelmények a következők:

  • Az alábbi táblázat a támogatott fióktípusokat sorolja fel. A rétegek oszlopa a vagy paraméter értékére -SkuName--sku hivatkozik. A támogatott típusok oszlopa a -Kind--kind paraméterre hivatkozik.

    Szint Támogatott típusok
    Premium_LRS FileStorage
    Premium_ZRS FileStorage
    Standard_GRS Storage, StorageV2
    Standard_GZRS StorageV2
    Standard_LRS Storage, StorageV2
    Standard_RAGRS Storage, StorageV2
    Standard_RAGZRS StorageV2
    Standard_ZRS StorageV2

    Ezek a kombinációk támogatják a fájlmegosztásokat. További információ: Azure-fájlmegosztás és tárfióktípusok létrehozása.

  • A tárfiókok tűzfalszabályai még nem támogatottak. For more information, see Configure Azure Storage firewalls and virtual networks.

  • Az üzembehelyezési tagnak rendelkeznie kell a tárfiók kezeléséhez szükséges engedélyekkel, beleértve a fájlmegosztások olvasását, létrehozását és törlését. További információ: A minimális engedélyek konfigurálása.

Meglévő tárfiók megadásához adja hozzá a következő Bicep-kódot a következő tulajdonságelemhez Microsoft.Resources/deploymentScripts:

param storageAccountName string = 'myStorageAccount'

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  ...
  properties: {
    ...
    storageAccountSettings: {
      storageAccountName: storageAccountName
      storageAccountKey: listKeys(resourceId('Microsoft.Storage/storageAccounts', storageAccountName), '2023-01-01').keys[0].value
    }
  }
}

A teljes Microsoft.Resources/deploymentScripts definíciós mintát a jelen cikk korábbi szintaxisában találja.

Meglévő tárfiók használata esetén a szkriptszolgáltatás létrehoz egy egyedi nevű fájlmegosztást. Ha tudni szeretné, hogy a szkriptszolgáltatás hogyan tisztítja meg a fájlmegosztást, olvassa el a cikk későbbi részében az üzembehelyezési szkript erőforrásainak megtisztítása című témakört.

Tárolópéldány konfigurálása

Egy üzembehelyezési szkripthez új Azure-tárolópéldány szükséges. Meglévő tárolópéldányt nem adhat meg. A tároló csoportnevét azonban testre szabhatja a használatával containerGroupName. Ha nem ad meg csoportnevet, az automatikusan létrejön. A tárolópéldány létrehozásához további konfigurációk szükségesek. További információ: A minimális engedélyek konfigurálása.

Az üzembehelyezési szkript privát hálózaton való futtatásához is megadhat subnetId értékeket. További információ: Privát virtuális hálózat elérése.

param containerGroupName string = 'mycustomaci'
param subnetId string = '/subscriptions/01234567-89AB-CDEF-0123-456789ABCDEF/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet'

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
  ...
  properties: {
    ...
    containerSettings: {
      containerGroupName: containerGroupName
      subnetIds: [
        {
          id: subnetId
        }
      ]
    }
  }
}

Szkript többszöri futtatása

Az üzembehelyezési szkript végrehajtása idempotens művelet. Ha egyik erőforrástulajdonság sem módosul deploymentScripts , beleértve a beágyazott szkriptet is, a szkript nem fut a Bicep-fájl ismételt üzembe helyezésekor.

Az üzembehelyezési szkriptszolgáltatás összehasonlítja a Bicep-fájlban lévő erőforrásneveket az ugyanabban az erőforráscsoportban lévő meglévő erőforrásokkal. Ha ugyanazt az üzembehelyezési szkriptet többször szeretné futtatni, két lehetőség közül választhat:

  • Módosítsa az erőforrás nevét deploymentScripts . Használja például az utcNow függvényt erőforrásnévként vagy az erőforrásnév részeként. A függvényt utcNow csak egy paraméter alapértelmezett értékében használhatja.

    Az erőforrás nevének módosítása új deploymentScripts erőforrást hoz létre. Jó a szkriptek végrehajtásának előzményeinek megőrzéséhez.

  • Adjon meg egy másik értéket a forceUpdateTag tulajdonságban. Használja például utcNow értékként.

Az idempotencia biztosítása érdekében írja meg az üzembehelyezési szkripteket, így a véletlen újrafuttatások nem eredményeznek rendszermódosításokat. Ha például egy Azure-erőforrást az üzembehelyezési szkripttel hoz létre, a létrehozás előtt ellenőrizze annak hiányát, hogy a szkript sikeres legyen, vagy elkerülje a redundáns erőforrás-létrehozást.

A Microsoft Graph használata üzembehelyezési szkripten belül

Az üzembehelyezési szkriptek a Microsoft Graph használatával hozhatnak létre és használhatnak objektumokat a Microsoft Entra ID-ban.

Parancsok

Az Azure CLI üzembehelyezési szkriptjeinek használatakor a az ad parancscsoporton belüli parancsokkal dolgozhat alkalmazások, szolgáltatásnevek, csoportok és felhasználók számára. A parancs használatával közvetlenül is meghívhatja a az rest Microsoft Graph API-kat.

Az Azure PowerShell üzembehelyezési szkriptjeinek használatakor a Invoke-RestMethod parancsmaggal közvetlenül meghívhatja a Microsoft Graph API-kat.

Permissions

Az üzembehelyezési szkript által használt identitást engedélyezni kell a Microsoft Graph API-val való együttműködéshez, a megfelelő engedélyekkel az általa végrehajtott műveletekhez. Engedélyeznie kell az identitást a Bicep-fájlon kívül, például egy felhasználó által hozzárendelt felügyelt identitás előzésével és a Microsoft Graph alkalmazásszerepkörének hozzárendelésével. További információkért tekintse meg ezt a rövid útmutatót.

Üzembehelyezési szkript erőforrásainak törlése

A két automatikusan létrehozott támogató erőforrás soha nem tudja kiélvezni az deploymentScript erőforrást, hacsak a hibák nem törlik őket. A cleanupPreference tulajdonság szabályozza a támogató erőforrások életciklusát. A retentionInterval tulajdonság szabályozza az erőforrás életciklusát deploymentScript . Az alábbiak szerint használhatja ezeket a tulajdonságokat:

  • cleanupPreference: Adja meg a két támogató erőforrás törlési beállítását, amikor a szkript végrehajtása terminálállapotba kerül. A támogatott értékek a következők:

    • Always: Törölje a két támogató erőforrást, miután a szkript végrehajtása terminálállapotba kerül. Ha meglévő tárfiókot használ, a szkriptszolgáltatás törli a szolgáltatás által létrehozott fájlmegosztást. Mivel az deploymentScripts erőforrás továbbra is jelen lehet a támogató erőforrások törlése után, a szkriptszolgáltatás megőrzi a szkriptvégrehajtási eredményeket (például stdout), a kimeneteket és a visszatérési értéket az erőforrások törlése előtt.

    • OnSuccess: Csak akkor törölje a két támogató erőforrást, ha a szkript végrehajtása sikeres. Ha meglévő tárfiókot használ, a szkriptszolgáltatás csak akkor távolítja el a fájlmegosztást, ha a szkript végrehajtása sikeres.

      Ha a szkript végrehajtása nem sikerül, a szkriptszolgáltatás megvárja, amíg az retentionInterval érték lejár, mielőtt megtisztítja a támogató erőforrásokat, majd az üzembehelyezési szkript erőforrását.

    • OnExpiration: A két segéderőforrást csak akkor törölje, ha a retentionInterval beállítás lejárt. Ha meglévő tárfiókot használ, a szkriptszolgáltatás eltávolítja a fájlmegosztást, de megtartja a tárfiókot.

    A tárolópéldány és a cleanupPreference tárfiók az értéknek megfelelően törlődik. Ha azonban a szkript sikertelen, és cleanupPreference nincs beállítva Always, az üzembe helyezési folyamat automatikusan egy órán keresztül vagy a tároló megtisztításáig tartja a tárolót. A szkript hibaelhárításához használhatja az időt.

    Ha a sikeres üzembe helyezés után is futtatni szeretné a tárolót, adjon hozzá egy alvó lépést a szkripthez. Például adja hozzá a Start-Sleep parancsot a szkript végéhez. Ha nem adja hozzá az alvó lépést, a tároló terminálállapotra van állítva, és akkor sem érhető el, ha még nem törölte.

  • retentionInterval: Adja meg azt az időintervallumot, amelyet egy deploymentScript erőforrás a lejárata és törlése előtt megőriz.

Megjegyzés:

Nem javasoljuk, hogy a tárfiókot és a tárolópéldányt használja, amelyet a szkriptszolgáltatás más célokra hoz létre. Előfordulhat, hogy a szkript életciklusától függően a két erőforrás el lesz távolítva.

További lépések

Ebből a cikkből megtudhatja, hogyan hozhat létre üzembehelyezési szkripterőforrásokat. To learn more: