Vývoj skriptu nasazení v Bicep
Tento článek obsahuje příklady, které vám ukážou , jak vyvíjet skript nasazení v Bicep.
Prostředky skriptu nasazení můžou mít dobu trvání nasazení. Pro efektivní vývoj a testování těchto skriptů zvažte vytvoření vyhrazeného vývojového prostředí, jako je instance kontejneru Azure (ACI) nebo instance Dockeru. Další informace najdete v tématu Vytvoření vývojového prostředí.
Syntaxe
Následující soubor Bicep je příkladem prostředku skriptu nasazení. Další informace najdete v nejnovějším schématu skriptu nasazení.
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'
}
}
Ve skriptu nasazení zadejte tyto hodnoty vlastností:
tags
: Zadejte značky skriptu nasazení. Pokud služba skriptu nasazení vytvoří dva podpůrné prostředky (účet úložiště a instanci kontejneru), předají se značky oběma prostředkům. Značky můžete použít k identifikaci prostředků. Dalším způsobem, jak tyto podpůrné prostředky identifikovat, je jejich přípony, které obsahují azscripts. Další informace najdete v tématu Monitorování a řešení potíží se skripty nasazení.identity
: Pro verzi2020-10-01
rozhraní API skriptu nasazení nebo novější je spravovaná identita přiřazená uživatelem nepovinná, pokud ve skriptu nepotřebujete provádět žádné akce specifické pro Azure nebo spouštíte skript nasazení v privátní síti. Verze2019-10-01-preview
rozhraní API vyžaduje spravovanou identitu, protože ji služba skriptů nasazení používá ke spuštění skriptů.Když zadáte
identity
vlastnost, služba skript voláníConnect-AzAccount -Identity
před vyvoláním uživatelského skriptu. V současné době se podporuje jenom spravovaná identita přiřazená uživatelem. Pokud se chcete přihlásit pomocí jiné identity ve skriptu nasazení, můžete volat Connect-AzAccount. Další informace najdete v tématu Konfigurace minimálních oprávnění.kind
: Zadejte typ skriptu neboAzurePowerShell
AzureCLI
. Kroměkind
toho musíte zadatazPowerShellVersion
vlastnost neboazCliVersion
vlastnost.storageAccountSettings
: Zadejte nastavení pro použití existujícího účtu úložiště. PokudstorageAccountName
není zadaný, účet úložiště se vytvoří automaticky. Další informace najdete v tématu Použití existujícího účtu úložiště.containerSettings
: Přizpůsobte název instance kontejneru Azure. Informace o konfiguraci názvu skupiny kontejneru najdete v části Konfigurace instance kontejneru dále v tomto článku. Informace o konfiguraci spuštěnísubnetIds
skriptu nasazení v privátní síti naleznete v tématu Přístup k privátní virtuální síti.environmentVariables
: Zadejte proměnné prostředí, které se mají předat skriptu.azPowerShellVersion
/azCliVersion
: Zadejte verzi modulu, která se má použít.Podívejte se na seznam podporovaných verzí Azure CLI.
Důležité
Skript nasazení používá dostupné image rozhraní příkazového řádku z Registr artefaktů Microsoft. Certifikace image rozhraní příkazového řádku pro skript nasazení obvykle trvá přibližně jeden měsíc. Nepoužívejte verze rozhraní příkazového řádku vydané během posledních 30 dnů. Pokud chcete zjistit data vydání imagí, přečtěte si poznámky k verzi Azure CLI. Pokud používáte nepodporovanou verzi, zobrazí se v chybové zprávě seznam podporovaných verzí.
arguments
: Zadejte hodnoty parametrů. Hodnoty jsou oddělené mezerami.Skript nasazení rozdělí argumenty do pole řetězců vyvoláním systémového volání CommandLineToArgvW . Tento krok je nezbytný, protože argumenty se předávají jako vlastnost příkazu službě Azure Container Instances a vlastnost příkazu je pole řetězců.
Pokud argumenty obsahují řídicí znaky, poklikejte uvozené znaky. Například v předchozí ukázkové syntaxi Bicep je
-name \"John Dole\"
argument . Uchvácený řetězec je-name \\"John Dole\\"
.Pokud chcete předat parametr Bicep typu
object
jako argument, převeďte objekt na řetězec pomocí funkce string() a potom pomocí funkce replace() nahraďte všechny uvozovky ("
) dvojitými uvozovkami (\\"
). Příklad:replace(string(parameters('tables')), '"', '\\"')
Další informace najdete v ukázkovém souboru Bicep.
scriptContent
: Zadejte obsah skriptu. Může to být vložený skript nebo soubor externího skriptu, který jste naimportovali pomocí funkce loadTextContent . Další informace najdete v části Vložený vs. externí soubor dále v tomto článku. Pokud chcete spustit externí skript, použijteprimaryScriptUri
místo toho.primaryScriptUri
: Zadejte veřejně přístupnou adresu URL primárního skriptu nasazení s podporovanými příponami souborů. Další informace naleznete v části Použití externích skriptů dále v tomto článku.supportingScriptUris
: Zadejte pole veřejně přístupných adres URL pro podpůrné soubory, které jsou volána buď neboscriptContent
primaryScriptUri
. Další informace najdete v části Vložený vs. externí soubor dále v tomto článku.timeout
: Zadejte maximální povolenou dobu spuštění skriptu ve formátu ISO 8601. Výchozí hodnota jeP1D
.forceUpdateTag
: Změna této hodnoty mezi nasazeními souborů Bicep vynutí opětovné spuštění skriptu nasazení. Pokud použijetenewGuid()
funkci neboutcNow()
funkci, můžete ji použít pouze ve výchozí hodnotě parametru. Další informace najdete v části Spuštění skriptu více než jednou později v tomto článku.cleanupPreference
. Určete předvolbu pro vyčištění dvou podpůrných prostředků nasazení (účet úložiště a instance kontejneru), když se spuštění skriptu dostane do stavu terminálu. Výchozí nastavení jeAlways
, které volá odstranění podpůrných prostředků bez ohledu na stav terminálu (Succeeded
,Failed
neboCanceled
). Další informace najdete v části Vyčištění prostředků skriptu nasazení dále v tomto článku.retentionInterval
: Zadejte interval, pro který služba uchovává prostředek skriptu nasazení po spuštění skriptu nasazení dosáhne stavu terminálu. Prostředek skriptu nasazení se odstraní, když vyprší platnost této doby trvání. Doba trvání je založena na vzoru ISO 8601. Interval uchovávání je mezi 1 hodinou (PT1H
) a 26 hodinami (PT26H
). Tuto vlastnost použijete, pokudcleanupPreference
je nastavena naOnExpiration
hodnotu . Další informace najdete v části Vyčištění prostředků skriptu nasazení dále v tomto článku.
Další ukázky
- Ukázka 1: Vytvořte trezor klíčů a pomocí skriptu nasazení přiřaďte k trezoru klíčů certifikát.
- Ukázka 2: Vytvoření skupiny prostředků na úrovni předplatného, vytvoření trezoru klíčů ve skupině prostředků a následné přiřazení certifikátu k trezoru klíčů pomocí skriptu nasazení
- Ukázka 3: Vytvoření spravované identity přiřazené uživatelem, přiřazení role přispěvatele k identitě na úrovni skupiny prostředků, vytvoření trezoru klíčů a následné přiřazení certifikátu k trezoru klíčů pomocí skriptu nasazení
- Ukázka 4: Ručně vytvořte spravovanou identitu přiřazenou uživatelem a přiřaďte jí oprávnění k vytváření aplikací Microsoft Entra pomocí rozhraní Microsoft Graph API. V souboru Bicep pomocí skriptu nasazení vytvořte aplikaci Microsoft Entra a instanční objekt a výstup ID objektu a ID klienta.
Vložený vs. externí soubor
Skript nasazení se může nacházet v souboru Bicep nebo ho můžete uložit externě jako samostatný soubor.
Použití vloženého skriptu
Následující soubor Bicep ukazuje, jak používat vložený skript.
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'
}
}
Pokud příkaz vrátí nenulový stav, zahrňte set -e
do skriptu povolení okamžitého ukončení. Tento postup zjednodušuje procesy ladění chyb.
Načtení souboru skriptu
Pomocí funkce loadTextContent načtěte soubor skriptu jako řetězec. Tato funkce umožňuje udržovat skript v externím souboru a přistupovat k němu jako skript nasazení. Cesta zadaná pro soubor skriptu je relativní vzhledem k souboru Bicep.
Vložený skript můžete extrahovat z předchozího souboru Bicep do souboru hello.sh a pak ho umístit do podsložky s názvem skripty.
output="Hello $1"
echo $output
Potom můžete předchozí soubor Bicep upravit jako v následujícím příkladu:
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'
}
}
Použití externích skriptů
Místo vložených skriptů můžete použít soubory externích skriptů. Podporují se jenom primární skripty PowerShellu s rozšířením .ps1 . U skriptů rozhraní příkazového řádku můžou primární skripty přenášet všechna platná rozšíření skriptů Bash nebo vůbec žádné rozšíření. Pokud chcete použít soubory externích skriptů, prohodte scriptContent
ho pomocí 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'
}
}
Soubory externích skriptů musí být přístupné. Pokud chcete pomoct zabezpečit soubory skriptu uložené v účtech úložiště Azure, vygenerujte token sdíleného přístupového podpisu (SAS) a zahrňte ho do identifikátoru URI šablony. Nastavte vypršení platnosti tak, aby bylo možné dokončit nasazení dostatek času. Další informace najdete v tématu Nasazení privátní šablony ARM s tokenem SAS.
Zodpovídáte za zajištění integrity skriptu, na který skript nasazení odkazuje (nebo primaryScriptUri
supportingScriptUris
). Odkazujte pouze na skripty, kterým důvěřujete.
Použití podpůrných skriptů
Složité logiky můžete oddělit do jednoho nebo více podpůrných souborů skriptů. supportingScriptUris
Pomocí vlastnosti v případě potřeby zadejte pole identifikátorů URI podpůrným souborům skriptu.
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'
}
}
Podpůrné soubory skriptů můžete volat z vložených skriptů i souborů primárních skriptů. Podpůrné soubory skriptů nemají žádná omezení přípony souboru.
Podpůrné soubory se zkopírují do azscripts/azscriptinput za běhu. Relativní cestu použijte k odkazování na podpůrné soubory z vložených skriptů a souborů primárních skriptů.
Přístup k prostředkům Azure
Pokud chcete získat přístup k prostředkům Azure, musíte tento identity
prvek nakonfigurovat. Následující soubor Bicep ukazuje, jak načíst seznam trezorů klíčů Azure. Udělení oprávnění pro správu přiřazení uživatele pro přístup k trezoru klíčů je také nezbytné.
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
Poznámka:
Logika opakování pro přihlášení k Azure je teď integrovaná do skriptu obálky. Pokud udělíte oprávnění ve stejném souboru Bicep jako skripty nasazení, služba skriptů nasazení opakuje přihlášení po dobu 10 minut (s 10sekundovými intervaly), dokud se přiřazení role spravované identity nereplikuje.
Práce s výstupy
Přístup ke zpracování výstupů se liší podle typu skriptu, který používáte – Azure CLI nebo Azure PowerShellu.
Skript nasazení Azure CLI používá proměnnou prostředí s názvem AZ_SCRIPTS_OUTPUT_PATH
označující umístění souboru pro výstupy skriptu. Když spouštíte skript nasazení v souboru Bicep, prostředí Bash automaticky nakonfiguruje tuto proměnnou prostředí za vás. Její předdefinovaná hodnota je nastavena jako /mnt/azscripts/azscriptoutput/scriptoutputs.json
.
Výstupy musí odpovídat platné struktuře objektu řetězce JSON. Obsah souboru by měl být formátovaný jako pár klíč/hodnota. Například uložte pole řetězců jako { "MyResult": [ "foo", "bar"] }
. Ukládání pouze výsledků pole, například [ "foo", "bar" ]
, je neplatné.
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
Předchozí ukázka používá jq pro vytváření výstupů. Nástroj jq se dodává s imagemi kontejneru. Další informace najdete v tématu Konfigurace vývojového prostředí.
Používání proměnných prostředí
Předání zabezpečených řetězců do skriptu nasazení
Proměnné prostředí (EnvironmentVariable
) v instancích kontejneru můžete nastavit tak, aby poskytovaly dynamickou konfiguraci aplikace nebo skriptu, který kontejner spouští. Skript nasazení zpracovává nezabezpečené a zabezpečené proměnné prostředí stejným způsobem jako Služba Azure Container Instances. Další informace najdete v tématu Nastavení proměnných prostředí v instancích kontejneru.
Maximální povolená velikost proměnných prostředí je 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'
}
}
Proměnné prostředí definované systémem
Následující tabulka obsahuje seznam systémově definovaných proměnných prostředí:
Proměnná prostředí | Výchozí hodnota (CLI) | Výchozí hodnota (PowerShell) | Rezervovaný systém |
---|---|---|---|
AZ_SCRIPTS_AZURE_ENVIRONMENT |
AzureCloud |
AzureCloud |
No |
AZ_SCRIPTS_CLEANUP_PREFERENCE |
Always |
Always |
Ne |
AZ_SCRIPTS_OUTPUT_PATH |
/mnt/azscripts/azscriptoutput/scriptoutputs.json |
Nelze použít | Ano |
AZ_SCRIPTS_PATH_INPUT_DIRECTORY |
/mnt/azscripts/azscriptinput|/mnt/azscripts/azscriptinput |
Nelze použít | Ano |
AZ_SCRIPTS_PATH_OUTPUT_DIRECTORY |
/mnt/azscripts/azscriptoutput|/mnt/azscripts/azscriptoutput |
Nelze použít | Ano |
AZ_SCRIPTS_PATH_USER_SCRIPT_FILE_NAME |
userscript.sh |
userscript.ps1 |
Ano |
AZ_SCRIPTS_PATH_PRIMARY_SCRIPT_URI_FILE_NAME |
primaryscripturi.config |
primaryscripturi.config |
Ano |
AZ_SCRIPTS_PATH_SUPPORTING_SCRIPT_URI_FILE_NAME |
supportingscripturi.config |
supportingscripturi.config |
Ano |
AZ_SCRIPTS_PATH_SCRIPT_OUTPUT_FILE_NAME |
scriptoutputs.json |
scriptoutputs.json |
Ano |
AZ_SCRIPTS_PATH_EXECUTION_RESULTS_FILE_NAME |
executionresult.json |
executionresult.json |
Ano |
AZ_SCRIPTS_USER_ASSIGNED_IDENTITY |
Nelze použít | Nelze použít | No |
Ukázku použití AZ_SCRIPTS_OUTPUT_PATH
najdete v části Práce s výstupy v dřívější části tohoto článku.
Pro přístup k proměnným prostředí použijte následující kód.
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'
}
}
Použití existujícího účtu úložiště
Aby se skript spustil a umožnil řešení potíží, potřebujete účet úložiště a instanci kontejneru. Můžete buď určit existující účet úložiště, nebo nechat službu skriptů vytvořit účet úložiště i instanci kontejneru automaticky.
Tady jsou požadavky pro použití existujícího účtu úložiště:
Následující tabulka uvádí podporované typy účtů. Sloupec pro úrovně odkazuje na hodnotu parametru nebo
--sku
parametru-SkuName
. Sloupec podporovaných typů odkazuje na-Kind
parametr nebo--kind
parametr.Úroveň Podporovaný typ 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
Tyto kombinace podporují sdílené složky. Další informace najdete v tématu Vytvoření sdílené složky Azure a typů účtů úložiště.
Pravidla brány firewall pro účty úložiště se zatím nepodporují. Další informace najdete v tématu Konfigurace virtuálních sítí a bran firewall Azure Storage.
Instanční objekt nasazení musí mít oprávnění ke správě účtu úložiště, který zahrnuje čtení, vytváření a odstraňování sdílených složek. Další informace najdete v tématu Konfigurace minimálních oprávnění.
Vlastnost
allowSharedKeyAccess
účtu úložiště musí být nastavena natrue
hodnotu . Jediným způsobem, jak připojit účet úložiště ve službě Azure Container Instance (ACI), je prostřednictvím přístupového klíče.
Pokud chcete zadat existující účet úložiště, přidejte do elementu Microsoft.Resources/deploymentScripts
vlastnosti následující kód Bicep:
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
}
}
}
Kompletní Microsoft.Resources/deploymentScripts
ukázku definice najdete v části Syntaxe výše v tomto článku.
Když použijete existující účet úložiště, služba skriptů vytvoří sdílenou složku s jedinečným názvem. Informace o tom, jak služba skriptů vyčistí sdílenou složku, najdete v části Vyčištění prostředků skriptu nasazení dále v tomto článku.
Konfigurace instance kontejneru
Skript nasazení vyžaduje novou instanci kontejneru Azure. Nemůžete zadat existující instanci kontejneru. Název skupiny kontejneru ale můžete přizpůsobit pomocí .containerGroupName
Pokud nezadáte název skupiny, automaticky se vygeneruje. Pro vytvoření této instance kontejneru jsou vyžadovány další konfigurace. Další informace najdete v tématu Konfigurace minimálních oprávnění.
Můžete také zadat subnetId
hodnoty pro spuštění skriptu nasazení v privátní síti. Další informace najdete v tématu Přístup k privátní virtuální síti.
param containerGroupName string = 'mycustomaci'
param subnetId string = '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet'
resource deploymentScript 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
...
properties: {
...
containerSettings: {
containerGroupName: containerGroupName
subnetIds: [
{
id: subnetId
}
]
}
}
}
Spuštění skriptu více než jednou
Spuštění skriptu nasazení je idempotentní operace. Pokud žádné vlastnosti deploymentScripts
prostředku, včetně vloženého skriptu, neproběhne při opětovném nasazení souboru Bicep žádné změny.
Služba skriptů nasazení porovnává názvy prostředků v souboru Bicep s existujícími prostředky ve stejné skupině prostředků. Pokud chcete spustit stejný skript nasazení vícekrát, existují dvě možnosti:
Změňte název prostředku
deploymentScripts
. Například jako název prostředku nebo jako součást názvu prostředku použijte funkci UTCNow. Funkci můžete použítutcNow
pouze ve výchozí hodnotě parametru.Změna názvu prostředku vytvoří nový
deploymentScripts
prostředek. Je dobré udržovat historii spouštění skriptů.Zadejte jinou hodnotu ve
forceUpdateTag
vlastnosti. Například použijteutcNow
jako hodnotu.
Napište skripty nasazení, které zajistí idempotenci, takže náhodné opakované spuštění nebude mít za následek změny systému. Pokud například vytváříte prostředek Azure prostřednictvím skriptu nasazení, ověřte jeho nepřítomnost před vytvořením a ujistěte se, že skript buď proběhne úspěšně, nebo se vyhne redundantnímu vytvoření prostředku.
Použití Microsoft Graphu ve skriptu nasazení
Skript nasazení může použít Microsoft Graph k vytvoření a práci s objekty v Microsoft Entra ID.
Příkazy
Když používáte skripty nasazení Azure CLI, můžete pomocí příkazů ve az ad
skupině příkazů pracovat s aplikacemi, instančními objekty, skupinami a uživateli. Rozhraní Microsoft Graph API můžete také přímo vyvolat pomocí az rest
příkazu.
Pokud používáte skripty nasazení Azure PowerShellu, můžete pomocí Invoke-RestMethod
této rutiny přímo vyvolat rozhraní Microsoft Graph API.
Oprávnění
Identita, kterou skript nasazení používá, musí být autorizovaná pro práci s rozhraním Microsoft Graph API s příslušnými oprávněními pro operace, které provádí. Identitu musíte autorizovat mimo soubor Bicep, například tak, že předem vytvoříte spravovanou identitu přiřazenou uživatelem a přiřadíte jí roli aplikace pro Microsoft Graph. Další informace najdete v tomto příkladu rychlého startu.
Vyčištění prostředků skriptu nasazení
Oba automaticky vytvořené podpůrné prostředky nemohou prostředek nikdy prožít deploymentScript
, pokud je neodstraní selhání. Vlastnost cleanupPreference
řídí životní cyklus podpůrných prostředků. Vlastnost retentionInterval
řídí životní cyklus deploymentScript
prostředku. Tady je postup, jak používat tyto vlastnosti:
cleanupPreference
: Určete předvolbu čištění dvou podpůrných prostředků, když se spuštění skriptu dostane do stavu terminálu. Podporované hodnoty jsou:Always
: Odstraňte dva podpůrné prostředky po spuštění skriptu v terminálovém stavu. Pokud používáte existující účet úložiště, služba skriptů odstraní sdílenou složku, kterou služba vytvořila.deploymentScripts
Vzhledem k tomu, že prostředek může být stále k dispozici po vyčištění podpůrných prostředků, služba skriptů zachová výsledky spuštění skriptu (napříkladstdout
), výstupy a návratovou hodnotu před odstraněním prostředků.OnSuccess
: Odstraňte tyto dva podpůrné prostředky pouze v případech, kdy je spuštění skriptu úspěšné. Pokud používáte existující účet úložiště, služba skriptů odebere sdílenou složku pouze v případě, že je spuštění skriptu úspěšné.Pokud spuštění skriptu není úspěšné, služba skriptů počká, dokud
retentionInterval
nevyprší platnost hodnoty, než vyčistí podpůrné prostředky a pak prostředek skriptu nasazení.OnExpiration
: Odstraňte tyto dva podpůrné prostředky pouze v případech, kdyretentionInterval
vypršela platnost nastavení. Pokud používáte existující účet úložiště, služba skriptů odebere sdílenou složku, ale zachová účet úložiště.
Instance kontejneru a účet úložiště se odstraní podle
cleanupPreference
hodnoty. Pokud ale skript selže acleanupPreference
není nastavený naAlways
, proces nasazení automaticky udržuje kontejner spuštěný po dobu jedné hodiny nebo dokud se kontejner nevyčistí. Čas můžete použít k řešení potíží se skriptem.Pokud chcete kontejner nechat spuštěný po úspěšném nasazení, přidejte do skriptu krok spánku. Například na konec skriptu přidejte Start-Sleep . Pokud krok spánku nepřidáte, kontejner je nastavený na stav terminálu a není k němu přístup, i když jste ho ještě neodstranili.
retentionInterval
: Zadejte časový interval, po kterýdeploymentScript
bude prostředek zachován před vypršením jeho platnosti a odstraněním.
Poznámka:
Nedoporučujeme používat účet úložiště a instanci kontejneru, kterou služba skriptů generuje pro jiné účely. Tyto dva prostředky můžou být odebrány v závislosti na životním cyklu skriptu.
Další kroky
V tomto článku jste zjistili, jak vytvořit prostředky skriptu nasazení. Další informace najdete v tématech: