在 Azure 中将基础结构自动化工具与虚拟机配合使用

适用于:✔️ Linux 虚拟机 ✔️ Windows 虚拟机 ✔️ 灵活规模集 ✔️ 统一规模集

若要大规模创建和管理Azure虚拟机(VM),通常需要某种形式的自动化。 有许多工具和解决方案可用于自动完成Azure基础结构部署和管理生命周期。 本文介绍可在Azure中使用的一些基础结构自动化工具。 这些工具通常适合以下某个方法:

Terraform

Terraform 是一种自动化工具,可用于使用单个模板格式语言(HashiCorp 配置语言(HCL)定义和创建整个Azure基础结构。 可以使用 Terraform 来定义模板,自动完成为给定应用程序解决方案创建网络、存储和 VM 资源这一过程。 可以将现有 Terraform 模板用于具有Azure的其他平台,以确保一致性并简化基础结构部署,而无需转换为Azure Resource Manager模板。

Azure 自动化

Azure Automation使用 Runbook 处理目标 VM 上的一组任务。 Azure Automation用于管理现有 VM,而不是创建基础结构。 Azure Automation 可以跨 Linux 和 Windows 虚拟机,以及在具有混合 runbook 工作器的本地虚拟机或物理计算机上运行。 Runbook 可以存储在源代码管理存储库中,例如GitHub。 这些 Runbook 可以手动运行或按照定义的计划运行。

Azure Automation还提供一个Desired State Configuration(DSC)服务,用于创建给定 VM 集的配置方式的定义。 然后,DSC 就可以确保所需配置得到应用且 VM 保持一致。 Azure Automation DSC 在 Windows 和 Linux 计算机上运行。

Bicep

Bicep是一种特定于域的语言(DSL),它使用声明性语法来部署Azure资源。 在Bicep文件中,定义要部署到Azure的基础结构,然后在整个开发生命周期内使用该文件重复部署基础结构。 你的资源以一致的方式部署。

快速入门着手。

Cloud-init

Cloud-init 是一种广泛使用的方法,用于在首次启动 Linux VM 时对其进行自定义。 可使用 cloud-init 来安装程序包和写入文件,或者配置用户和安全性。 由于是在初始启动过程中调用 cloud-init,因此无需额外的步骤且无需代理来应用配置。 有关如何正确设置 #cloud-config 文件格式的详细信息,请参阅 cloud-init 文档站点#cloud-config 文件是采用 base64 编码的文本文件。

Cloud-init 还支持不同的发行版。 例如,不要使用 apt-get 安装yum 安装来安装包。 可改为定义一个要安装的包列表。 Cloud-init 将为所选发行版自动使用原生包管理工具。

我们正在积极与官方认可的 Linux 发行版合作伙伴合作,以便在 Azure Marketplace 中提供启用 cloud-init 的映像。 这些映像使 cloud-init 的部署和配置可以与虚拟机(VM)和虚拟机规模集(Virtual Machine Scale Sets)无缝配合工作。 详细了解 cloud-init on Azure:

PowerShell DSC

PowerShell Desired State Configuration (DSC)是用于定义目标计算机的配置的管理平台。 也可通过 Open Management Infrastructure (OMI) 服务器在 Linux 上使用 DSC。

DSC 配置定义要在计算机上安装的内容,以及如何配置主机。 本地配置管理器(LCM)引擎在每个目标节点上运行,根据推送的配置处理请求的操作。 拉取服务器是一项在中心主机上运行的 Web 服务,用于存储 DSC 配置和关联的资源。 该拉取服务器与每个目标主机上的 LCM 引擎通信,提供所需的配置并报告符合性情况。

了解如何:

Azure自定义脚本扩展

适用于 LinuxWindows在 Azure VM 上下载和执行脚本。 可以在创建 VM 时使用该扩展,也可以在 VM 处于使用状态后随时使用该扩展。

可以从Azure存储或任何公共位置(如GitHub存储库)下载脚本。 使用自定义脚本扩展时,可以通过在源 VM 上运行的任何语言来编写脚本。 可以根据需要使用这些脚本来安装应用程序或配置该 VM。 若要确保凭据的安全,可将密码之类的敏感信息存储在受保护配置中。 这些凭据只在 VM 内解密。

了解如何:

Ansible

Ansible 是适用于配置管理、VM 创建或应用程序部署的自动化引擎。 Ansible 通常将无代理的模型与 SSH 密钥配合使用,对目标计算机进行身份验证和管理。 配置任务在 playbook 中定义,可以使用多个 Ansible 模块来执行特定任务。 有关详细信息,请参阅 How Ansible works(Ansible 工作原理)。

木偶

Puppet 是可供企业使用的自动化平台,用于处理应用程序交付和部署过程。 代理安装在目标计算机上,以允许 Puppet Master 运行清单,这些清单定义了Azure基础结构和 VM 的所需配置。 Puppet 可以与其他解决方案(例如 Jenkins 和 GitHub)集成,以改进 devops 工作流。 有关详细信息,请参阅 How Puppet works(Puppet 工作原理)。

了解如何:

Packer

Packer在 Azure 中创建自定义 VM 映像时自动执行生成过程。 使用 Packer 定义操作系统,并运行后配置脚本,以根据您的具体需求自定义虚拟机。 配置后,VM 将被捕获为一个托管的磁盘镜像。 Packer 自动完成创建源 VM、网络和存储资源,运行配置脚本,然后创建 VM 映像这一过程。

了解如何:

Jenkins

Jenkins 是一种持续集成服务器,用于部署和测试应用程序,以及创建进行代码交付的自动化管道。 可以通过成百上千的插件来扩展核心 Jenkins 平台,还可以通过 Webhook 集成许多其他的产品和解决方案。 可以在 Azure VM 上手动安装 Jenkins、从 Docker 容器中运行 Jenkins 或使用预生成的Azure Marketplace映像。

了解如何:

后续步骤

在Azure中使用基础结构自动化工具有多种不同的选项。 可以自由使用最适合自己的需求和环境的解决方案。 若要开始并尝试一些内置于 Azure 的工具,请参阅如何自动自定义 LinuxWindows VM。