開始使用 Azure Bicep(逐步)

您需要在Azure中建立基础架构吗?您是否看过ARM模板并觉得它很复杂?因为许多人抱怨建立ARM模板的困难,微软开发了一个抽象层称为Azure Bicep。

在本教程中,您将学习如何从零开始入门。您将学会从设置开发环境到部署第一个Bicep模板的所有内容!

让我们开始吧!

先决条件

本教程将进行实践演示。如果您想跟着进行,请确保您具备以下条件:

  • Windows 10 – 本教程中的大部分演示也适用于其他操作系统,但所有演示都将使用Windows 10。
  • Visual Studio Code – 本教程将使用v1.60.2版本。
  • 要部署的Azure资源组 – 本教程将使用一个名为ATA的资源组。

什么是Azure Bicep?

Bicep 是一種特定領域的語言,可使構建 ARM 模板變得更加容易。您可以將 Bicep 視為 ARM 模板之上的抽象層。ARM 使用 JSON,尤其對於大型部署而言可能變得復雜。

Microsoft 決定創建 Bicep 以減少複雜性並改善開發體驗。它不是一種新語言;可以將其視為 JSON ARM 模板的改進。

設置 Bicep 開發環境

要開始開發 Bicep 模板,您需要設置一個能幫助您獲得最佳結果的環境。為此,您可以使用一些工具。首先,讓我們設置所需的環境,包括 VS Code Bicep 擴展、Bicep CLI,以及可選的 Azure PowerShell 模組。

安裝 VS Code Bicep 擴展

VS Code是一款出色的開發工具,用於構建Bicep模板。因此,Microsoft提供了一個VS Code擴展,以幫助更輕鬆地創建Bicep模板。讓我們開始構建一個開發環境,預備VS Code。

打開Visual Studio Code,點擊擴展按鈕。

Opening extensions

在搜索欄中,輸入“bicep”。您應該會看到一個Bicep擴展。當這發生時,點擊安裝。過了片刻,VS Code將安裝Bicep擴展。

Search and install bicep extension

即使下一部分將為您提供Bicep模板以複製/粘貼,您肯定會有需要從頭開始創建Bicep模板的時候。VS Code的Bicep擴展在這里特別有用,尤其是因為它的智能感知功能

請注意,如果您在VS Code中打開一個擴展名為.bicep的文件,VS Code將嘗試為您提供快捷方式。例如,在Bicep模板中使用resource關鍵字創建Azure資源。安裝了Bicep擴展後,VS Code能夠理解這一點。

Typing the resource command

選擇提供的菜單選項之一,然後自動創建一個模板來填寫,而不必每次都記住確切的語法。

Blank bicep template

句點()是創建 Bicep 模板時的另一個方便快捷方式。例如,在屬性部分輸入這個句點,您將看到可用於存儲帳戶的所有屬性。

Properties available for a storage account

安裝 Bicep CLI

創建後,必須通過 Bicep CLI 調用 Bicep 模板。在嘗試安裝 Bicep CLI 之前,首先檢查是否已安裝。根據您安裝的 Azure CLI 版本,您可能已經安裝了 Bicep CLI。要檢查,打開 PowerShell 控制台或終端並檢查 Bicep CLI 的版本。

	az bicep version

如果您已經安裝了 Bicep CLI,您將看到如下版本聲明。

Bicep CLI version

如果您看到有關未找到 Bicep CLI 的錯誤消息,請運行install子命令以安裝 Bicep CLI。

az bicep install

現在您將看到以下輸出。它確認了 Bicep CLI 已成功安裝並準備就緒。

Bicep installed successfully

作為替代安裝方法,您還可以通過Bicep Windows 安裝程序安裝 Bicep CLI。

創建一個 Bicep 模板以部署存儲帳戶

你可以使用 Bicep 部署一些复杂的 Azure 资源,但让我们从简单的开始。对于你的第一个 Bicep 模板,让我们创建一个简单的 Azure 存储账户,然后你可以在下一节中使用 Azure CLI 和 PowerShell 部署到 Azure。

1. 打开 VS Code 并创建一个名为 main.bicep 的新文件。你不必完全按照这里显示的名称命名文件,但遵循 Terraform 的做法,将模板命名为 main 并使用 .bicep 扩展名是常见的。

2. 复制并粘贴下面的 Bicep 模板代码到文件中并保存。此模板包含组成 Bicep 模板的各种属性。

首先,你将看到一些适用于所有 Bicep 模板的属性:

  • 资源标识符(resource myStorage) – 告诉 Bicep 创建一个名为 myStorage 的新资源。这个名称标识 Bicep 模板中的特定资源。这个名称不是在 Azure 中创建的资源的名称。
  • Microsoft.Storage/storageAccounts@2019-06-01 – 定义了一个由资源提供程序 Microsoft.Storage、资源类型(storageAccounts)和要使用的 API 版本(2019-06-01)组成的类型。
  • name Azure 中显示的资源的名称(注意命名 Azure 资源的规则和限制)。
  • location – 要在其中创建资源的 Azure 区域。

你還會看到一些特定於 storageAccounts 資源類型的屬性:

  • SKU – 儲存帳戶 SKU (Standard_LRS),如在屬性 name 中所定義的。
  • kind – 儲存帳戶的類型 (StorageV2)。
  • properties 各種資源特定的屬性,這些屬性沒有自己的章節,例如此範例中的 accessTier。這些屬性與您在 ARM 模板 中找到的相同。
resource myStorage 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'ata2021bicepdiskstorage'
  location: 'uksouth'
  SKU: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
        
  }
}

使用 PowerShell 部署 Bicep 模板

如前所述,您可以以兩種方式之一部署 Bicep 模板;透過 Azure CLI 和 Azure PowerShell 模組。讓我們首先使用 PowerShell 部署 Bicep 模板。

確保您已安裝 Azure PowerShell 模組 並在開始此部分之前已 驗證到 Azure

部署 Azure 資源與 Bicep 模板與部署 ARM 模板相同。微軟基本上已經為許多現有的 PowerShell ARM 命令新增了對 Bicep 語言的支援,例如 New-AzResourceGroupDeployment.

在您的 PowerShell 控制台中,通過 New-AzResourceGroupDeployment 命令碼呼叫新的資源群組部署,提供 Bicep 模板的路徑和要部署到的 ResourceGroupName。您會注意到,您可以像使用 ARM 模板一樣使用 Bicep 模板。

New-AzResourceGroupDeployment -TemplateFile main.bicep -ResourceGroupName ATA

如果部署成功,您應該在您的 PowerShell 會話中看到以下輸出,屬性 ProvisioningState 顯示為成功。就這樣!

Deploying resource with Bicep

要驗證資源是否成功建立,登入到 Azure Portal,導航至您的資源群組,您將在該資源群組中看到一個新建立的儲存帳戶。

Azure Portal

如果您正在跟進並將儲存帳戶建立為演示,請不要忘記將其刪除!請注意,ResourceName 與 Bicep 模板中提供的 name 相符。

Remove-AzResource -ResourceName ata2021bicepdiskstorage -ResourceGroupName ATA -ResourceType "Microsoft.Storage/storageAccounts"

現在您將看到以下輸出。

Removing an Azure storage account

使用 Azure CLI 部署 Bicep 模板

為了完成本教程,現在讓我們來介紹使用 Azure CLI 部署您最近建立的 Bicep 模板。

确保在开始本部分之前已安装 Azure CLI 版本2.2.0+ 并已 登录

打开 PowerShell 或其他终端,并使用 az deployment group create 命令 发起 ARM 部署。此命令与 PowerShell 一样执行 ARM 部署。确保通过 template-file 参数指定要部署到的 resource-group 和之前创建的 Bicep 模板。

az deployment group create --resource-group ATA --template-file main.bicep

如果看到 provisioningState 显示为 Succeeded,如下所示,表示 ARM 已读取 Bicep 模板并执行了其中的所有指令!

provisioningState as Succeeded
Output in JSON from az deployment command

不要忘记使用 az resource delete -g ATA -n ata2021bicepdiskstorage --resource-type "Microsoft.Storage/storageAccounts" 清理资源。

结论

现在你已经为 Azure Bicep 创建了一个开发环境并在 Azure 中创建了一个资源,你的下一步是什么呢?也许看看 Microsoft Learn 在 Bicep 方面提供了什么?

或者向同事演示一下 Bicep如何帮助你的组织?

Source:
https://adamtheautomator.com/azure-bicep/