使用 ARM 模板部署 Azure Storage

发布: (2026年2月8日 GMT+8 23:05)
3 分钟阅读
原文: Dev.to

Source: Dev.to

介绍

Azure 资源管理器 (ARM) 提供了一种在 Azure 中组织资源的方式。使用 ARM,您可以将 Azure 资源定义并部署为一个称为 资源组 的单一逻辑单元,资源组可以包含虚拟机、存储账户、网络接口等。

ARM 模板是定义基础设施即代码 (IaC) 的 JSON 文件。本指南展示了如何使用以下方式部署 Azure 存储账户:

  • ARM 模板
  • PowerShell 部署脚本
  • Azure DevOps 流水线

前提条件

  • Azure 订阅
  • 在 Azure DevOps 项目中已创建指向该订阅的服务连接

仓库结构

├── deploy.ps1              # PowerShell 脚本(创建资源组 + 部署模板)
├── azure-pipelines.yml     # CI/CD 流水线定义
└── storageaccount.json     # ARM 模板定义

PowerShell 部署脚本 (deploy.ps1)

param(
    [string]$ResourceGroupName,
    [string]$StorageAccountName,
    [string]$Location,
    [string]$Sku = "Standard_LRS"
)

$scriptDir = $PSScriptRoot    
$template = Join-Path $scriptDir "storageaccount.json"

Write-Host "Checking if resource group '$ResourceGroupName' already exists..."
Start-Sleep -Seconds 2
$exists = (az group exists --name $ResourceGroupName) -eq 'true'

if (-not $exists) {
    Write-Host "Resource group '$ResourceGroupName' does not exist. Creating..."
    az group create --name $ResourceGroupName --location $Location | Out-Null
    if ($LASTEXITCODE -ne 0) { throw "Failed to create resource group." }
} else {
    Write-Host "Resource group '$ResourceGroupName' already exists."
}

Write-Host "Deploying Azure ARM template.."

az deployment group create `
    --resource-group $ResourceGroupName `
    --template-file $template `
    --parameters "storageAccountName=$StorageAccountName" "sku=$Sku" "location=$Location"

if ($LASTEXITCODE -ne 0) {
    Write-Error "ARM deployment failed."
    return $false
}

Write-Host "Deployment successful by Alvaro! 🚀"

Azure Pipelines 定义 (azure-pipelines.yml)

trigger:
  branches:
    include:
      - main

pool:
  vmImage: 'ubuntu-latest'

variables:
  resourceGroupName: 'Asgard'
  storageAccountName: 'storageaccountasgard'
  location: 'West Europe'
  sku: 'Standard_LRS'

steps:
- task: AzureCLI@2
  displayName: 'Deploy Storage Account ARM Template'
  inputs:
    azureSubscription: 'Marty-MacFly'   # Service Connection name in Azure DevOps
    ScriptType: pscore
    ScriptPath: '$(System.DefaultWorkingDirectory)/deploy.ps1'
    ScriptArguments: >-
      -ResourceGroupName "$(resourceGroupName)"
      -StorageAccountName "$(storageAccountName)"
      -Location "$(location)"
      -Sku "$(sku)"

运行流水线

  1. 将文件提交到 Azure DevOps 仓库的 main 分支。
  2. 流水线会自动触发(或手动运行)。
  3. PowerShell 脚本会在资源组不存在时创建它,并部署 storageaccount.json ARM 模板。

验证

流水线完成后,登录 Azure 门户,确认新的存储账户(storageaccountasgard)已在 West Europe 区域创建。

0 浏览
Back to Blog

相关文章

阅读更多 »