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

这是帮助开发人员开始使用 Azure 的 7 篇文章中的第五篇。

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

不同的工具旨在支持不同的用例,大多数 Azure 开发人员根据他们需要执行的工作使用不同工具的组合。 例如,你可能:

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

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

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

Azure 门户

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

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

显示 Azure 门户的屏幕截图。

VS Code Azure Tools 扩展包

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

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

显示安装了 Azure Tools 扩展包的 Visual Studio Code 的屏幕截图。

命令行工具

命令行工具提供效率、可重复性和可编写重复性任务脚本方面的优势。 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 允许通过对 RESTful 终结点的 HTTP 请求来管理 Azure 资源。