如何实现在 Azure 中创建和管理资源?

Azure 提供了各种工具来创建和管理应用程序使用的 Azure 资源。

不同的工具旨在支持不同的用例,大多数 Azure 开发人员使用不同工具的组合,具体取决于他们需要执行的作业。 例如,可以:

  • 在为新应用程序制作 Azure 资源原型时,使用适用于 VS Code 的 Azure 门户 或 Azure 工具扩展等 GUI 工具。 GUI 工具指导你完成创建新服务的过程,并允许你使用下拉菜单和其他图形元素查看和选择服务的选项。

  • 使用 Azure CLI 或 Azure PowerShell 编写脚本以自动执行常见任务。 例如,可以创建一个脚本,该脚本为包含Azure App 服务、数据库和 Blob 存储的新 Web 应用程序创建基本开发环境。 编写脚本可确保每次都以相同的方式创建资源,并且比单击 UI 更快。

  • 使用基础结构即代码 (IaC) 工具以声明方式部署和管理 Azure 资源。 使用 Terraform、Ansible 或 Bicep 等工具,可以在声明性语法中编码解决方案所需的 Azure 资源,确保跨环境部署 Azure 资源并防止环境偏移。

Azure 门户

Azure 门户是一个基于 Web 的界面,旨在管理 Azure 资源。 Azure 门户功能:

  • 一种易于使用的基于 Web 的 UI,用于创建和管理 Azure 资源
  • 创建可配置仪表板的功能
  • 对订阅设置和计费信息的访问权限

A screenshot showing the Azure portal.

VS Code Azure 工具扩展包

使用 Visual Studio Code 的 开发人员可以使用适用于 VS CodeAzure 工具扩展包 直接从 VS Code 管理 Azure 资源。 使用 Azure 工具扩展包可以:

  • 使用Azure App 服务创建、管理和部署代码到网站。
  • 创建、浏览和查询 Azure 数据库
  • 直接从 VS Code 创建、调试和部署 Azure Functions
  • 从 VS Code 部署容器化应用程序

A screenshot showing Visual Studio Code with the Azure Tools extension pack installed.

命令行工具

命令行工具提供效率、可重复性和脚本重复任务的能力的优势。 Azure 提供了两种不同的命令行工具可供选择。 Azure CLI 和 Azure PowerShell 在功能上是等效的。 只需选择并使用最适合单个工作流的工具。

Azure CLI

Azure CLI 是在 Windows、Linux 和 macOS 上运行的跨平台命令行工具。 Azure CLI:

  • 提供简洁高效的语法来管理 Azure 资源。
  • 将结果输出为 JSON(默认情况下)。 结果也可以格式化为 YAML、ASCII 表或制表符分隔的值,不带键。
  • 通过 JMESPath 查询提供查询和调整输出的功能。

Azure CLI 命令可以轻松地合并到常用的脚本语言(如 Bash )中,让你能够编写常见任务的脚本。

LOCATION='eastus'                                        
RESOURCE_GROUP_NAME='msdocs-expressjs-mongodb-tutorial'

WEB_APP_NAME='msdocs-expressjs-mongodb-123'
APP_SERVICE_PLAN_NAME='msdocs-expressjs-mongodb-plan-123'    
RUNTIME='NODE|14-lts'

# Create a resource group
az group create \
    --location $LOCATION \
    --name $RESOURCE_GROUP_NAME

# Create an app service plan
az appservice plan create \
    --name $APP_SERVICE_PLAN_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --sku B1 \
    --is-linux

# Create the web app in the app service
az webapp create \
    --name $WEB_APP_NAME \
    --runtime $RUNTIME \
    --plan $APP_SERVICE_PLAN_NAME \
    --resource-group $RESOURCE_GROUP_NAME 

Azure PowerShell

Azure PowerShell 是一组 cmdlet,用于直接从 PowerShell 管理 Azure 资源。 Azure PowerShell 作为 PowerShell 模块安装,适用于 Windows、macOS 和 Linux 等所有平台上的 PowerShell 7.0.6 LTS 和 PowerShell 7.1.3 或更高版本。 它还与 Windows PowerShell 5.1 兼容。

Azure PowerShell 与 PowerShell 语言紧密集成。 命令遵循谓词名词格式,数据作为 PowerShell 对象返回。 如果已经熟悉 PowerShell 脚本,Azure PowerShell 是一个自然选择。

$location = 'eastus'
$resourceGroupName = 'msdocs-blob-storage-demo-azps'
$storageAccountName = 'stblobstoragedemo999'

# Create a resource group
New-AzResourceGroup `
    -Location $location `
    -Name $resourceGroupName

# Create the storage account
New-AzStorageAccount `
    -Name $storageAccountName `
    -ResourceGroupName $resourceGroupName `
    -Location $location `
    -SkuName Standard_LRS

有关在 Azure CLI 和 Azure PowerShell 之间进行选择的详细信息,请参阅文章 :选择正确的命令行工具

基础结构即代码工具

基础结构即代码 是通过声明性配置文件管理和预配资源的过程。 基础结构即代码工具使用声明性结束状态规范来保证每次创建和配置一组资源的方式相同。 此外,大多数基础结构作为代码工具监视资源,以确保它们保持按所需状态进行配置。

对于自动化、重复且可靠的基础结构部署,Azure 支持各种基础结构即代码工具。

Bicep

Bicep 是一种特定于域的语言 (DSL),使用声明性语法来部署 Azure 资源。 它提供简明的语法、可靠的类型安全性以及对代码重用的支持。

param location string = resourceGroup().location
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Terraform

Hashicorp Terraform 是一种开源工具,用于预配和管理云基础结构。 它将基础结构编入描述云资源拓扑的配置文件中。 Terraform CLI 提供了一种简单的机制,用于将配置文件部署到 Azure 和版本配置文件。

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "main" {
  name     = "${var.prefix}-resources"
  location = var.location
}

resource "azurerm_app_service_plan" "main" {
  name                = "${var.prefix}-asp"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
  kind                = "Linux"
  reserved            = true

  sku {
    tier = "Standard"
    size = "S1"
  }
}

resource "azurerm_app_service" "main" {
  name                = "${var.prefix}-appservice"
  location            = azurerm_resource_group.main.location
  resource_group_name = azurerm_resource_group.main.name
  app_service_plan_id = azurerm_app_service_plan.main.id

  site_config {
    linux_fx_version = "NODE|10.14"
  }
}

Ansible

Ansible 是一个开源产品,用于自动执行云预配、配置管理和应用程序部署。 使用 Ansible 可预配虚拟机、容器和网络,以及完成云基础结构。 此外,使用 Ansible 还可在环境中自动部署和配置资源。

- hosts: localhost
  connection: local
  vars:
    resource_group: myResourceGroup
    webapp_name: myfirstWebApp
    plan_name: myAppServicePlan
    location: eastus
  tasks:
    - name: Create a resource group
      azure_rm_resourcegroup:
        name: "{{ resource_group }}"
        location: "{{ location }}"

    - name: Create App Service on Linux with Java Runtime
      azure_rm_webapp:
        resource_group: "{{ resource_group }}"
        name: "{{ webapp_name }}"
        plan:
          resource_group: "{{ resource_group }}"
          name: "{{ plan_name }}"
          is_linux: true
          sku: S1
          number_of_workers: 1
        frameworks:
          - name: "java"
            version: "8"
            settings:
              java_container: tomcat
              java_container_version: 8.5

Azure SDK 和 REST API

还可以通过代码以编程方式创建 Azure 资源。 这样,就可以编写动态预配 Azure 资源以响应用户请求的应用程序。 Azure SDK 在 .NET、Go、Java、JavaScript 和 Python 中提供资源管理包,允许直接在代码中创建和管理 Azure 资源。 或者,Azure REST API 允许 Azure 资源通过对 RESTful 终结点的 HTTP 请求进行管理。