Я пытаюсь динамически передать переменную из файла Yaml в файл бицепса, но безуспешно.
Обратите внимание overrideParameters: '-capital_env $(environment)
на основании этого.
я тоже попробовал
param capital_env=''
и
param capital_env
и
param capital_env string
в моем файле бицеппарама, но безуспешно.
Я также попробовал overrideParameters: '-capital_env DEV'
в своем файле yaml, но и этот тоже не сработал.
У меня есть этот файл yaml:
parameters:
- name: environment
displayName: 'Environment'
type: string
default: 'DEV'
values:
- DEV
- TST
- PRD
trigger: none
pr: none
stages:
- stage: Deploy
displayName: 'Deploy to $(environment)'
jobs:
- job: DeployDev
displayName: 'Deploy to Development Environment'
condition: eq('${{ parameters.environment }}', 'DEV')
pool:
name: 'PartnerPortal'
variables:
azureServiceConnection: 'AzON-TST'
resourceGroupName: 'rgname'
location: 'australiaeast'
templateFile: '.\Infrastructure\DEV\mainStorageAccountCreation.bicep'
parametersFile: '.\Infrastructure\DEV\mainStorageAccountCreation.bicepparam'
steps:
- script: |
echo "Listing files in $(System.DefaultWorkingDirectory)"
dir $(System.DefaultWorkingDirectory)
echo "Listing files in $(System.DefaultWorkingDirectory)\Infrastructure\DEV\"
dir $(System.DefaultWorkingDirectory)\Infrastructure\DEV
displayName: 'List files in working directory'
- script: |
echo "Current PATH: $env:Path"
az --version
displayName: 'Verify Azure CLI Installation'
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureSubscription: '7c0513a'
ConnectedServiceName: 'AzON-TST'
resourceGroupName: $(resourceGroupName)
location: $(location)
templateLocation: 'Linked artifact'
csmFile: '$(templateFile)'
csmParametersFile: '$(parametersFile)'
overrideParameters: '-capital_env $(environment)'
displayName: 'Deploy ARM Template to DEV'
У меня есть этот файл бицеппараметров:
using 'mainStorageAccountCreation.bicep'
param capital_env='dfd'
param lower_env = toLower(capital_env)
param encryptionScopeName = 'defaultEncryptionScope'
param publicNetworkAccessLappFapp = 'Disabled'
param publicNetworkAccessApp = 'Enabled'
param ipWhitelist= [
'203....' //my IP
]
param storageAccountsApp = [
'uwasydstapartp${lower_env}'
]
param storageAccountsfapplapp = [
'uwasydstapartptla${lower_env}'
'uwasydstapartptli${lower_env}'
]
и это мой файл о бицепсах
param location string = resourceGroup().location
param capital_env string
param lower_env string = toLower(capital_env)
targetScope = 'resourceGroup'
param encryptionScopeName string
param publicNetworkAccessApp string
param publicNetworkAccessLappFapp string
param storageAccountsApp array
param storageAccountsfapplapp array
param ipWhitelist array
module storageapp '../modules/StorageAccountApp.bicep' = [for storageName in storageAccountsApp: {
name: storageName
params: {
location: location
storagename: storageName
encryptionScopeName: encryptionScopeName
publicNetworkAccessApp: publicNetworkAccessApp
ipWhitelist:ipWhitelist
}
}]
module storageappfapplapp '../modules/StorageAccountLappFapp.bicep' = [for storageName in storageAccountsfapplapp: {
name: storageName
params: {
location: location
storagename: storageName
encryptionScopeName: encryptionScopeName
publicNetworkAccessLappFapp: publicNetworkAccessLappFapp
}
}]
модуль для создания учетной записи хранения
param storagename string
param location string
param encryptionScopeName string
param publicNetworkAccessApp string
param ipWhitelist array // Array of IP addresses to whitelist
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storagename
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
//Optional. Set the extended location of the resource. If not set, the storage account will be created in Azure main region. Otherwise it will be created in the specified extended location
properties: {
accessTier: 'Hot'
allowBlobPublicAccess: false
allowCrossTenantReplication: false
allowedCopyScope: 'AAD'
allowSharedKeyAccess: false
defaultToOAuthAuthentication: false //A boolean flag which indicates whether the default authentication is OAuth or not. The default interpretation is false for this property.
//dnsEndpointType: 'string'
encryption: {
keySource: 'Microsoft.Storage' //Microsoft-managed keys
requireInfrastructureEncryption: false
services: {
blob: {
enabled: true
// keyType: 'Account'
}
file: {
enabled: true
// keyType: 'Account'
}
queue: {
enabled: true
// keyType: 'Account'
}
table: {
enabled: true
// keyType: 'Account'
}
}
}
isHnsEnabled: false
isLocalUserEnabled: false
isNfsV3Enabled: false
isSftpEnabled: false
minimumTlsVersion: 'TLS1_2'
networkAcls: {
bypass: 'AzureServices'
ipRules: [
for ip in ipWhitelist: {
action: 'Allow'
value: ip
}
]
defaultAction: 'Deny'
}
publicNetworkAccess: publicNetworkAccessApp
}
}
resource encryptionScope 'Microsoft.Storage/storageAccounts/encryptionScopes@2022-09-01' = {
name: encryptionScopeName
parent: storageAccount
properties: {
source: 'Microsoft.Storage'
}
}
Мне не удается успешно передать Capital_env из yaml в bicepparam, какие изменения мне, возможно, придется внести, чтобы это исправить?
Я собираюсь передать capital_env
в свой файл бицеппаремтера.
Нужна ли мне переменная, я предполагал, что параметр будет работать
Я также закодировал DEV, но это не сработало. Переопределить параметры: '-capital_env DEV'
Знаете ли вы, какую версию бицепса он использует?
добавил эту информацию, @ 01.01.2023
Извините, мне было интересно: az bicep version
Когда вы запускаете задачу в ADO, она должна выводить эту информацию в задачу журнала в начале
В задаче журнала вы также должны увидеть команду az cli/az powershell, которую она выполняет.
Задача: развертывание шаблона ARM. Описание: развертывание шаблона Azure Resource Manager (ARM) во всех областях развертывания. Версия: 3.243.0 **** в локальном агенте: > az --version azure-cli 2.63.0 core 2.63. 0 телеметрия 1.1.0 Зависимости: msal 1.30.0 azure-mgmt-resource 23.1.1
я правильно ответил на ваш вопрос?
Да, это то, что я искал ^^
Привет @MohsenUWA, успешно ли развертывание? Если есть сообщение об ошибке, поделитесь им. Поскольку вы пытались жестко закодировать DEV, но это не сработало overrideParameters: '-capital_env DEV'
, возможно, вы можете попробовать упростить шаблон Bicep, чтобы было легче обнаружить проблему.
огромное спасибо, я просмотрю ваше и попытаюсь увидеть, какую ошибку я допустил, надеюсь, я смогу это быстро заметить, огромное спасибо
Привет @MiaoTian-MSFT, одно быстрое отличие от моего заключается в том, что вы используете StoragePrefix в качестве параметра как в yaml, так и в бицепсе, хотя для меня это не одно и то же.
Еще один вопрос: если необходимо передать несколько переменных, что мне изменить в разделе переопределения? Я предполагаю одну часть, если для каждой переменной имеется несколько параметров.
Привет @MohsenUWA, я обновил свой ответ двумя параметрами переопределения. Использование нескольких параметров похоже на overrideParameters: '-storagePrefix ${{ parameters.Prefix }} -storageSKU ${{ parameters.SKU }}'
большое спасибо за добавление двух переменных, я попробовал, но он снова создает их на основе значения, которое находится в бицеппараме, а не в файле yaml. Другое отличие состоит в том, что вы используете переданный параметр, то есть StoragePrefix, в вашем основном файле. файл бицепса, который для меня является модулем, имеет ли это смысл для вас? Я использую переданную переменную в файле параметров, а не в файле main.bicep.
спасибо за код. Кажется, я нашел проблему, нам не нужно определять параметр переопределения как отдельный параметр в файле yaml, его следует использовать в бицепсе, а не в бицепсе. Нам нужно определить его в Yaml как параметр только в том случае, если мы хотим получить его от пользователя через раскрывающийся список.
@MohsenUWA, рад слышать, что вы решили проблему! Приятного кодирования!
Я протестировал переопределение параметра в шаблоне Bicep с помощью задачи AzureResourceManagerTemplateDeployment@3
в моем конвейере, и это работает.
YAML моего конвейера:
parameters:
- name: SKU
type: string
default: 'Standard_LRS'
values:
- Standard_LRS
- Standard_GRS
- name: Prefix
type: string
default: 'dev'
values:
- dev
- prd
trigger: none
steps:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'ConnectionName'
subscriptionId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'
action: 'Create Or Update Resource Group'
resourceGroupName: 'Group'
location: 'Southeast Asia'
templateLocation: 'Linked artifact'
csmFile: '$(System.DefaultWorkingDirectory)/templates/template.bicep'
csmParametersFile: '$(System.DefaultWorkingDirectory)/templates/template.bicepparam'
overrideParameters: '-storagePrefix ${{ parameters.Prefix }} -storageSKU ${{ parameters.SKU }}'
deploymentMode: 'Incremental'
Итак, overrideParameters
в вашем случае должно быть '-capital_env ${{ parameters.environment }}'
.
Вот мои тестовые файлы Bicep для создания учетной записи хранения (ссылка здесь): Файлы в репозитории:
шаблон.бицепс
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string
param location string = 'southeastasia'
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
шаблон.bicepparam
using 'template.bicep'
param storagePrefix='test'
param storageSKU='Standard_LRS'
Учетная запись хранения, развернутая с помощью конвейера:
у тебя нет переменной
$(environment)
? ты пытаешься использовать${{ parameters.environment }}
?