若要以一致的方式大规模创建和管理 Azure 虚拟机 (VM),通常需要某种形式的自动化。 可以通过许多工具和解决方案来自动完成整个 Azure 基础结构部署和管理生命周期。 本文介绍了一些可以在 Azure 中使用的基础结构自动化工具。 这些工具通常适合以下某个方法:
自动执行 VM 的配置
工具包括Chef。
特定于 VM 自定义的工具包括适用于 Linux VM 的cloud-init、PowerShell Desired State Configuration (DSC),以及适用于所有 Azure VM 的Azure 自定义脚本扩展。
自动化基础结构管理
工具包括用于自动完成自定义 VM 映像生成的Packer,以及用于自动完成基础结构生成过程的Terraform。
Azure 自动化可以跨 Azure 和本地基础结构执行操作。
自动执行应用程序部署和交付
示例包括Visual Studio Team Services和Jenkins。
Chef
Chef是一个自动化平台,用于定义基础结构的配置、部署和管理方式。 其他组件包括:Chef Habitat,用于应用程序生命周期自动化而不是基础结构;Chef InSpec,用于自动遵循安全和策略要求。 Chef 客户端安装在目标计算机上,通过一个或多个中心 Chef 服务器来存储和管理配置。 有关详细信息,请参阅An Overview of Chef(Chef 概述)。
了解如何:
从 Azure Marketplace 部署 Chef Automate。
在 Windows 上安装 Chef 并创建 Azure VM。
Cloud-init
Cloud-init是一种广泛使用的方法,用于在首次启动 Linux VM 时对其进行自定义。 可使用 cloud-init 来安装程序包和写入文件,或者配置用户和安全性。 在初始启动期间运行 cloud-init 时,无需额外的步骤和代理即可应用配置。
Cloud-init 还支持不同的发行版。 例如,不需使用 apt-get install 或 yum install 来安装包, 而应定义需安装的包的列表。 Cloud-init 将对所选发行版自动使用本机包管理工具。
我们正在与合作伙伴协作,将 cloud-init 纳入用户向 Azure 提供的映像中并使其在映像中正常运行。 下表概述了 cloud-init 当前在 Azure 平台映像上的可用性:
别名发布者产品SKUVersion
UbuntuLTSCanonicalUbuntuServer14.04.5-LTS最新
UbuntuLTSCanonicalUbuntuServer16.04-LTS最新
CoreOSCoreOSCoreOSStable最新
了解如何:
PowerShell DSC
PowerShell Desired State Configuration (DSC)是一个管理平台,用于定义目标计算机的配置。 也可通过Open Management Infrastructure (OMI) 服务器在 Linux 上使用 DSC。
DSC 配置定义要在计算机上安装的内容,以及如何配置主机。 本地配置管理器 (LCM) 引擎在每个目标节点上运行,此类节点根据推送的配置处理请求的操作。 拉取服务器是一项在中心主机上运行的 Web 服务,用于存储 DSC 配置和关联的资源。 该拉取服务器与每个目标主机上的 LCM 引擎通信,提供所需的配置并报告符合性情况。
了解如何:
Azure 自定义脚本扩展
适用于Linux或Windows的 Azure 自定义脚本扩展在 Azure VM 上下载和执行脚本。 可以在创建 VM 时使用该扩展,也可以在 VM 处于使用状态后随时使用该扩展。
可以从 Azure 存储或任何公共位置(例如 GitHub 存储库)下载脚本。 使用自定义脚本扩展时,可以通过在源 VM 上运行的任何语言来编写脚本。 可以根据需要使用这些脚本来安装应用程序或配置该 VM。 若要确保凭据的安全,可将密码之类的敏感信息存储在受保护配置中。 这些凭据只在 VM 内解密。
了解如何:
通过 Azure CLI 创建 Linux VM 并使用自定义脚本扩展。
通过 Azure PowerShell 创建 Windows VM 并使用自定义脚本扩展。
Packer
在 Azure 中创建自定义 VM 映像时,Packer会自动完成生成过程。 可以使用 Packer 来定义 OS 并运行配置后脚本,根据具体需求来自定义 VM。 配置完成后,会将 VM 作为托管磁盘映像捕获。 Packer 自动完成创建源 VM、网络和存储资源,运行配置脚本,然后创建 VM 映像这一过程。
了解如何:
在 Azure 中使用 Packer 创建 Linux VM 映像。
在 Azure 中使用 Packer 创建 Windows VM 映像。
Terraform
Terraform是一项自动化工具,用于通过 HashiCorp Configuration Language (HCL) 这个单一模板格式语言来定义和创建整个 Azure 基础结构。 可以使用 Terraform 来定义模板,自动完成为给定应用程序解决方案创建网络、存储和 VM 资源这一过程。 可以将适合其他平台的现有 Terraform 模板用于 Azure 以确保一致性并简化基础结构部署,不需转换为 Azure 资源管理器模板。
了解如何:
Azure 自动化
Azure 自动化使用 Runbook 在目标 VM 上处理一组任务。 Azure 自动化用于管理现有 VM,而不是创建基础结构。 Azure 自动化可以跨 Linux 和 Windows VM 运行,还可以通过混合 Runbook 辅助角色在本地虚拟机或物理机上运行。 可以将 Runbook 存储在源代码管理存储库(例如 GitHub)中。 然后即可手动运行或按定义的计划运行这些 Runbook。
Azure 自动化还提供 Desired State Configuration (DSC) 服务,用于针对给定的一组 VM 的配置方式创建定义。 然后,DSC 就可以确保所需配置得到应用且 VM 保持一致。 Azure 自动化 DSC 可以在 Windows 和 Linux 计算机上运行。
了解如何:
Visual Studio Team Services
Team Services是一套工具,用于共享和跟踪代码、使用自动化生成,以及创建完整的持续集成和开发 (CI/CD) 管道。 Team Services 集成 Visual Studio 和其他编辑器,简化了使用过程。 Team Services 还可以创建和配置 Azure VM,然后向其部署代码。
了解如何:
Jenkins
Jenkins是一种持续集成服务器,用于部署和测试应用程序,以及创建进行代码交付的自动化管道。 可以通过成百上千的插件来扩展核心 Jenkins 平台,还可以通过 Webhook 集成许多其他的产品和解决方案。 可以在 Azure VM 上手动安装 Jenkins,从 Docker 容器内部运行 Jenkins,或者使用预建的 Azure Marketplace 映像。
了解如何:
使用 Jenkins、GitHub 和 Docker 在 Azure 中的 Linux VM 上创建开发基础结构。
后续步骤
可以通过许多不同的选项,在 Azure 中使用基础结构自动化工具。 可以自由使用最适合自己的需求和环境的解决方案。 若要开始尝试一些内置到 Azure 的工具,请了解如何自动完成Linux或WindowsVM 的自定义。