Woj*_*Zet 5 azure azure-storage azure-resource-manager azure-bicep
我有以下问题:我想部署存储帐户,但前提是它不存在。
我使用 az cli 部署脚本检查是否存在:
resource checkStorageAccountExistence 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
name: 'checkStorageAccountExistenceScript'
location: location
kind: 'AzurePowerShell'
identity: identity
properties: {
arguments: '-storageAccountName \'${string(name)}\' -resourceGroupName \'${string(resourceGroupName)}\''
azPowerShellVersion: '3.0'
scriptContent: '''
param([string]$storageAccountName, [string]$resourceGroupName)
$provisioningState = az storage account show --name $storageAccountName --resource-group $resourceGroupName --output tsv --query 'provisioningState'
if ($provisioningState -eq "Succeeded") {$output = $true} else {$output = $false}
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['storageAccountExists'] = $output
'''
forceUpdateTag: utcValue
retentionInterval: 'P1D'
}
}
Run Code Online (Sandbox Code Playgroud)
我想部署有条件的存储帐户:
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (checkStorageAccountExistence.properties.outputs.storageAccountExists == true){
}
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
该表达式在 if 条件表达式中使用,该表达式需要一个可以在部署开始时计算的值。可以在开始时计算的 checkStorageAccountExistence 的属性包括“apiVersion”、“id”、“name”、“type”.bicep(BCP177)
您可以在模块中创建存储帐户:
// storage-account.bicep
param exists bool
param name string
param location string
...
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (!exists) {
name: name
location: location
...
}
Run Code Online (Sandbox Code Playgroud)
然后像这样调用它:
// main.bicep
resource checkStorageAccountExistence 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
name: 'checkStorageAccountExistenceScript'
location: location
kind: 'AzurePowerShell'
identity: identity
properties: {
arguments: '-storageAccountName \'${string(name)}\' -resourceGroupName \'${string(resourceGroupName)}\''
azPowerShellVersion: '3.0'
scriptContent: '''
param([string]$storageAccountName, [string]$resourceGroupName)
$provisioningState = az storage account show --name $storageAccountName --resource-group $resourceGroupName --output tsv --query 'provisioningState'
if ($provisioningState -eq "Succeeded") {$output = $true} else {$output = $false}
Write-Output $output
$DeploymentScriptOutputs = @{}
$DeploymentScriptOutputs['storageAccountExists'] = $output
'''
forceUpdateTag: utcValue
retentionInterval: 'P1D'
}
}
module storageAccount 'storage-account.bicep' = {
name: 'storage-account'
params: {
exists: checkStorageAccountExistence.properties.outputs.storageAccountExists
location: location
name: name
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3734 次 |
| 最近记录: |