Ü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ához2020-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ívConnect-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, vagyAzurePowerShell
AzureCLI
.kind
Emellett meg kell adnia a tulajdonságot vagyazCliVersion
a tulajdonságotazPowerShellVersion
is.storageAccountSettings
: Adja meg a meglévő tárfiók használatára vonatkozó beállításokat. HastorageAccountName
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ólsubnetIds
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áljaprimaryScriptUri
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 vagyscriptContent
primaryScriptUri
a . 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ékP1D
.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énytnewGuid()
használjautcNow()
, 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 (Succeeded
vagyFailed
Canceled
). 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, hacleanupPreference
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 supportingScriptUris
aká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_PATH
mintá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énytutcNow
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áulutcNow
é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 azdeploymentScripts
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áulstdout
), 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 aretentionInterval
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, éscleanupPreference
nincs beállítvaAlways
, 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 egydeploymentScript
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:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: