使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境

发布于 2013-12-11 作者 Ross Gardler

微软开放技术有限公司 (MS Open Tech) 很高兴地宣布发行新的 Windows Azure Puppet 模块。通过这个模块,可以使用流行的开源 DevOps 工具 Puppet 在 Windows Azure 上提供 Linux 和 Windows 虚拟机。产品的支持以Puppet专属 Windows Azure 模块的形式发布在 Puppet Forge 上。此外,还支持网络配置和数据库等关键服务的管理。这样一来,Puppet 用户现在可以在 Windows Azure 中运用 Puppet Forge 上超过 1800 种社区制定的配置。

微软开放技术的工程师们在开发这个模块的过程中着眼于增强流行 DevOps 工具之间的互操作性。DevOps 的重点是软件开发与 IT 运营之间的协作管理。它强调的是日益灵活的软件开发团队(要求迅速变更)与需要提供最大运行时间(变更可能影响可靠性)的运营团队之间的协同和融合。DevOps 旨在使这两个团队能够更有效地进行交流与合作。适用于 Windows Azure 的 Puppet 模块是保证 Puppet 用户能够在 Windows Azure 环境下利用其技术的重要一步。

Windows Azure Puppet 模块提供了您准备下列 Windows Azure 服务所需的全部工具:

  • 虚拟机——Linux 和 Windows
  • 虚拟网络——创建逻辑上隔离的 Azure 区段并将它们安全地连接到您的内部客户端和服务器
  • SQL 服务器——创建和维护您的 SQL 数据库

此外,Windows Azure 用户现在还可访问 Puppet Forge 上 1800 多个现有的由社区定义的模块。

“能够使用 Puppet 在 Windows Azure 中配备虚拟机,从而利用 Puppet Forge 上由社区提供的各种大量模块对于许多 Puppet 用户而言非常具有吸引力。”Puppet Labs, Inc. 业务与公司发展副总裁 Mitch Sonies 表示,“我们认为,该模块对于在 Puppet 社区内推动 Azure 的使用是非常重要的一个步骤,我们希望看到社区的使用率和产业生态系统的贡献不断壮大。”

Puppet Azure入门

Puppet 是一套能够在开发与生产环境中实现 IT 基础设施的配置、配备和管理自动化的开源软件。它使用一种易于阅读的声明性语言对“理想状态”的机器配置进行描述。Puppet 使用这种描述将机器设置到理想状态并保持这种状态。关于 Puppet 的更多信息,请参考 Puppet Labs 网站上的详细文档

微软开放技术的成果分为两部分。第一部分是 Puppet Manifests,它描述了可用 Puppet 管理的 Windows Azure。第二部分是跨平台命令行接口 (CLI)。通过 CLI 和 Manifests,可以很容易地管理 Linux 和 Windows 虚拟机、虚拟网络, 地缘组以及 SQL 服务器。其目标是实现开发、测试和部署环境的性能最大化。

虚拟机管理

虚拟机能够按需提供可扩展的计算机设施。Windows Azure 可同时提供多种配置的Windows 服务器和 Linux 服务器。要配置一台新的虚拟机并安装 Puppet 代理(以便以后通过 Puppet 管理),您可使用以下命令:

puppet azure_vm create \
--management-certificate pem-or-pfx-file-path \
--azure-subscription-id=your-subscription-id \
--image b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-13_04-amd64-server-20130501-en-us-30GB \
--location 'west us' \
--vm-name vmname \
--vm-user username \
--password ComplexPassword \
--puppet-master-ip yourPuppetMasterIPAddress

下表列出了全部操作。如要查看某个操作的可用选项列表,则执行“puppet help node-azure ACTION-NAME”命令。

操作 描述
bootstrap 在一台现有的 Windows Azure 虚拟机中安装 Puppet 节点
Create 创建 Windows Azure 虚拟机
Delete 删除 Windows Azure 节点实例
Images 列出 Windows Azure 镜像
locations 列出 Windows Azure 位置
Servers 列出 Windows Azure节点实例
shutdown 关闭 Windows Azure节点实例
Start 启动 Windows Azure节点实例

管理虚拟网络

通过 Azure 虚拟网络,您可在 Azure 中创建一个在逻辑上隔离的区段,并使用 IPSec 连接将它安全地连接到您的内部数据中心或客户机。这样您就能通过本地开发机器与 Azure 中的虚拟机之间的直接连接来更方便地对应用程序进行远程调试。使用虚拟网络,您可以使用与在内部开发工作中相同的工具对应用程序进行故障排除和调试。

此外,您还能利用这个功能在混合环境中构建分布式应用。例如,Windows Azure 中的 Web 应用程序可安全地访问内部数据库服务器或在内部认证服务器上对用户进行认证。

要创建一个虚拟网络,可运行以下命令:

puppet azure_vnet set --management-certificate pem-or-pfx-file-path \
--azure-subscription-id=your-subscription-id \
--virtual-network-name vnetname \
--affinity-group-name ag-name \
--address-space '172.16.0.0/12,192.168.0.0/16' \
--dns-servers 'dns1-1:10.10.8.8,dns2:172.8.4.4' \
--subnets 'subnet-1:172.16.0.0:12,subnet-2:192.168.0.0:29'

其他可用的操作有:

操作 描述
List 列出虚拟网络
Set 配置虚拟网络
set_xml_schema 使用 xml 架构配置虚拟网络

管理SQL 数据库服务器

很多应用程序都需要一个数据库服务器,因此我们提供了使用 Puppet 来创建和配置 SQL 数据库的命令。可使用这样的命令来创建服务器:

puppet azure_sqldb create --management-certificate pem-or-pfx-file-path \
--azure-subscription-id=your-subscription-id \
--management-endpoint=https://management.database.windows.net:8443/ \
--login loginname \
--password ComplexPassword \
--location 'West Us'

Manifest 文件

Manifest 文件是让您可以快速和可重复地按预定义的“理想状态”来部署虚拟机的一些定义、引用和命令的集合。除了上面描述过的 CLI 外,我们还提供了 Puppet 用来配置 Windows Azure 服务的 manifest 文件。作为 Windows Azure 模块的一部分,这些 Manifest 可从 Puppet Forge 上下载,您也可对它们进行修改,以满足您的特定要求。我们提供的manifest 有:

  • bootstrap.pp —— 允许创建一个新的 Puppet 节点
  • db.pp —— 创建一个新的 SQL 服务器实例
  • init.pp —— 定义一个 Windows Azure 类,以方便地部署到关联的 Windows Azure 帐户
  • vm.pp —— 从一个虚拟机镜像创建一个新的虚拟机
  • vnet.pp —— 创建一个新的虚拟网络

下一步是什么?

微软开放技术很高兴实现了在 Windows Azure 中使用 Puppet。这是我们持久承诺的一个重要部分,其目的在于确保 DevOps 工具的用户能在 Windows Azure 环境中尽可能地利用他们的技术。

本文转载自:

https://cn.msopentech.com/blog/2013/12/11/%e4%bd%bf%e7%94%a8-puppet-%e5%9c%a8-windows-azure-%e4%b8%ad%e9%85%8d%e5%a4%87-linux-%e5%92%8c-windows-%e7%8e%af%e5%a2%83/