Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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-01rozhraní 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-previewrozhraní API vyžaduje spravovanou identitu, protože ji služba skriptů nasazení používá ke spuštění skriptů.Když zadáte
identityvlastnost, služba skript voláníConnect-AzAccount -Identitypř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 neboAzurePowerShellAzureCLI. Kroměkindtoho musíte zadatazPowerShellVersionvlastnost neboazCliVersionvlastnost.storageAccountSettings: Zadejte nastavení pro použití existujícího účtu úložiště. PokudstorageAccountNamenení 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ísubnetIdsskriptu 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
objectjako 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žijteprimaryScriptUrimí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ď neboscriptContentprimaryScriptUri. 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,FailedneboCanceled). 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, pokudcleanupPreferenceje nastavena naOnExpirationhodnotu . 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 primaryScriptUrisupportingScriptUris). 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ší v závislosti na typu skriptu, který používáte– Azure CLI nebo Azure PowerShell.
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 |
No |
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_PATHnajdete 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
-SkuNameparametru--sku. Sloupec podporovaných typů odkazuje na-Kindparametr nebo--kindparametr.Úroveň Podporovaný typ Premium_LRSFileStoragePremium_ZRSFileStorageStandard_GRSStorage,StorageV2Standard_GZRSStorageV2Standard_LRSStorage,StorageV2Standard_RAGRSStorage,StorageV2Standard_RAGZRSStorageV2Standard_ZRSStorageV2Tyto 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 natruehodnotu . 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/deploymentScriptsvlastnosti 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žítutcNowpouze ve výchozí hodnotě parametru.Změna názvu prostředku vytvoří nový
deploymentScriptsprostředek. Je dobré udržovat historii spouštění skriptů.Zadejte jinou hodnotu ve
forceUpdateTagvlastnosti. Například použijteutcNowjako 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.deploymentScriptsVzhledem 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
retentionIntervalnevyprší 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, kdyretentionIntervalvyprš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
cleanupPreferencehodnoty. Pokud ale skript selže acleanupPreferencenení 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ýdeploymentScriptbude 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: