适用于:✔️ Linux 虚拟机 ✔️ Windows 虚拟机 ✔️ 灵活规模集 ✔️ 统一规模集
若要大规模创建和管理Azure虚拟机(VM),通常需要某种形式的自动化。 有许多工具和解决方案可用于自动完成Azure基础结构部署和管理生命周期。 本文介绍可在Azure中使用的一些基础结构自动化工具。 这些工具通常适合以下某个方法:
自动执行 VM 的配置
- 工具包括 Ansible、Puppet、Bicep 和 Azure Resource Manager template。
- 特定于 VM 自定义的工具包括适用于 Linux VM 的 cloud-init、PowerShell Desired State Configuration (DSC),以及所有 Azure VM 的 Azure 自定义脚本扩展。
自动化基础结构管理
- 工具包括用于自动完成自定义 VM 映像生成的 Packer,以及用于自动完成基础结构生成过程的 Terraform。
- Azure Automation可以跨Azure和本地基础结构执行操作。
自动执行应用程序部署和交付
- 示例包括 Azure DevOps Services 和 Jenkins。
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自定义脚本扩展
适用于
可以从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 映像这一过程。
了解如何:
- 使用 Packer 在 Azure 中创建 Linux VM 映像。
- 使用 Packer 在 Azure 中创建Windows VM 映像。
Jenkins
Jenkins 是一种持续集成服务器,用于部署和测试应用程序,以及创建进行代码交付的自动化管道。 可以通过成百上千的插件来扩展核心 Jenkins 平台,还可以通过 Webhook 集成许多其他的产品和解决方案。 可以在 Azure VM 上手动安装 Jenkins、从 Docker 容器中运行 Jenkins 或使用预生成的Azure Marketplace映像。
了解如何:
后续步骤
在Azure中使用基础结构自动化工具有多种不同的选项。 可以自由使用最适合自己的需求和环境的解决方案。 若要开始并尝试一些内置于 Azure 的工具,请参阅如何自动自定义 Linux 或 Windows VM。