一,引言
當我們在使用 Azure Bicep 的時候會出現以下幾個問題:
1)檔案中有很多地方會重用很多相同的值
2)輸入引數可以在統一的地方進行修改
帶著這些問題,我們開始今天的內容,學習如何在 Bicep 中使用變數。
--------------------我是分割線--------------------
1,Azure Bicep 開發利器
2,Azure Bicep(二)語法簡介
3,Azure Bicep(三)變數控制
二,正文
1,語法
在 Bicep 中宣告變數並給其初值時非常簡單的。如下圖所示,為標準的引數賦值的語句
param runtime string='.NET 6'
Bicep 語句中的變數的定義類似於其他語言,但是也有它的奇特之處,我稱它為 “Azure Bicep 語法糖”
var myString = 'some string value' var myNull = null var location = resourceGroup().location
以上的語句中,我們不難看出,
第一個變數沒有型別
第二個變數沒有型別,而且變數預設值為 null
第三個變數的預設值為表示式
2,使用引數,變數
常見的情況時在變數宣告中使用引數
//targetScope='resourceGroup' Default Deplay Target param webAppName string = toLower('cnbateblogweb') param webSiteName string=toLower('${webAppName}-appservice')
變數也是一樣的,但是需要注意的時,我們不能在變數使用的時候引入迴圈,這個是不允許的
var name = 'Allen' var str= 'Hello, ${name}!'
3,資源屬性
除了使用引數和變數之外,還可以使用資源屬性來建立變數 planid
//targetScope='resourceGroup' Default Deplay Target param webAppName string = toLower('cnbateblogweb') param webSiteName string = toLower('${webAppName}-appservice') param runtime string = '.NET 6' param webAppPlanName string = toLower('${webAppName}-appserviceplan') param location string = resourceGroup().location // Location for all resources resource appServicePlan 'Microsoft.Web/serverfarms@2020-12-01' = { name: webAppPlanName location: location sku: { name: 'F1' capacity: 1 } } var planid = '${appServicePlan.id}' resource webApplication 'Microsoft.Web/sites@2018-11-01' = { name: webSiteName location: location properties: { serverFarmId: planid siteConfig: { linuxFxVersion: runtime } } }
4,模組
如果模組在 outpus 部分中返回一些值,它們也可以用於變數宣告。模組在輸出中返回完整的儲存帳戶物件,然後我們在主模板中使用這些物件
main.bicep
module stg 'storageaccount/storage.bicep' = { name: 'storageDeployment' params: { storageAccountName: 'cnbateblogsa' } } var myTag = '${stg.outputs.storageAccount.kind}-${stg.outputs.storageAccount.sku.name}'
storage.bicep
param storageAccountName string resource stg 'Microsoft.Storage/storageAccounts@2021-02-01' = { name: storageAccountName location: resourceGroup().location kind: 'StorageV2' sku: { name: 'Standard_LRS' } } output storageAccount object = stg
5,迴圈
使用迴圈來初始化變數,並且可以使用迴圈定義多個資源模組
// Creating a variable using a for-loop var secretsValues = [for i in range(0, 3): { name: 'secret${i}' value: 'supersecretvalue${i}' }] // Assuming that a key vault already exists resource kv 'Microsoft.KeyVault/vaults@2019-09-01' existing = { name: 'kv-contoso' } // Using variable to create multiple resources resource secrets 'Microsoft.KeyVault/vaults/secrets@2019-09-01' = [for secret in secretsValues: { name: secret.name parent: kv properties: { value: secret.value } }]
三,結尾
今天我們介紹了Azure Bicep的變數的相關用法。變數用於簡化 Bicep 檔案開發。 請定義包含複雜表示式的變數,而不必在整個 Bicep 檔案中重複使用複雜的表示式。 然後,在整個 Bicep 檔案中根據需要使用該變數。資源管理器會在啟動部署操作之前解析變數。 在 Bicep 檔案中所有使用該變數的位置,資源管理器都會將其替換為解析的值。本文所分享的內容也存在著很多我自己的一些理解,有理解不到位的,還包含,並且指出不足之處!!!!!
作者:Allen
版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。