Windows的配置管理

70

是否有像*nix世界中的那些Windows工具?我正在寻找类似于ChefPuppet的工具。

我找到了cfEngine,但它看起来仍然非常*nix-centric。理想情况下,它将是开源的,并且由命令行驱动。

想法是使用基于Windows的服务器构建自动化基础架构。我们当前的IT部门不允许使用非Windows服务器。


更新:现在Chef和Puppet都有Windows模块,Inedo Otter(http://inedo.com/otter)专为Windows构建,并与PowerShell/DSC集成。 - Karl Harnagy
7个回答

51

Opscode支持在Windows上使用Chef。虽然我们的基础架构没有运行在Windows上,但我们有不断改进Windows支持的开发人员。我们还得到了社区的贡献,并且Chef早期阶段的大多数Windows功能都是由社区贡献的。

重要提示: Opscode现在提供了适用于Windows的Chef MSI安装程序。这使得在Windows上安装Chef和Ruby比以往任何时候都更加容易。

虽然我们的团队具有大量的Unix/Linux背景,但我们的意图是将Windows视为一等公民。 2012年将是Chef与Windows合作的重大一年。请关注Opscode博客上的公告。

以下Chef资源可在Windows上使用:

Environment Resource: sets windows environment variables
User
Group
Mount
File
Gem Package
Remote File
Cookbook File
Template
Service
Ruby Block
Execute

也就是说,这些资源是包含在Chef内部的。由于Chef可以通过cookbooks进行扩展,因此还可以通过各种特定于Windows的cookbook添加更多资源。继续阅读以获取更多信息。

您可以在此处开始使用Chef和Windows:

最初,Doug MacEchern编写了一些cookbooks来自动化执行许多操作。

此信息以及更多信息都可在Chef Wiki上找到:

更新

以下cookbook向Chef添加了新资源以管理Windows:

它是Doug存储库中链接的精美资源的更新/重写。文档可在Chef Wiki上找到。

以下cookbook部署PowerShell并提供资源以直接在Chef Recipes中运行PowerShell命令/脚本:

文档可在包含在cookbook tarball中的README.md中找到。

新增了一些用于安装7-zip,管理IISSQL Server的附加食谱。我们的"database"食谱已通过使用tds rubygem扩展了一个用于管理SQL Server数据库和用户的资源/提供者。

knife-windows是针对knife而设计的插件,为与Windows系统交互并使用Chef进行安装提供了功能。

更新:我们现在为所有常见的文件/目录提供了支持Windows文件ACL的Chef更新


@sumek 取决于你的意思是什么?在 Windows 上不支持吗? - jtimberman
1
是的,在Windows上不支持哪些Chef功能? - sumek
1
@sumek Chef的核心功能是在节点上管理资源,并依赖于特定操作系统的提供程序来管理特定类型的资源。在Windows上缺少的提供程序可能没有直接的对应项,但由于Chef是可扩展的,可以通过类似于Powershell示例的cookbook添加“支持”。最近发布的新的“Windows” cookbook还添加了Windows注册表和“package”管理。 - jtimberman
注意:我已更新答案,包括在Chef Wiki上文件acl信息的链接。 - jtimberman
感谢您发布链接。 - Robert
Chef正在努力将“Windows”菜谱中的功能添加到核心chef库中。一些资源已经完成(例如registry_key),其他资源即将推出。请关注Chef博客以获取发布详细信息。 - jtimberman

8
Cfengine Nova多年来一直稳定地支持Windows(即不需要Cygwin)。与Unix上可能的所有操作(例如运行命令、文件复制、文件编辑等)相同,在Windows上也可以实现,同时还具有Windows特定功能,如:
  • 注册表管理
  • 文件ACL权限
  • Windows服务管理
  • 事件日志支持
  • 高级操作系统发现(版本、架构、服务包、网络、域等)
要进行简短介绍,请查看Nova补充手册的第11节:http://cfengine.com/files/Nova_Supplement.pdf

但它能管理IIS吗?我主要需要一个管理IIS服务器的工具。 - Nathan Lee
它可以“运行命令”,所以是的。 - Chris Pfohl

4

基于我的经验,我认为这取决于你需要在给定的服务器上管理什么。找到最常见的用例,并就以下问题提出更具体的问题:用于管理的最佳工具是什么。像 IIS 这样的东西可能有点棘手(至少在较旧的 windows 构建中),并且找到用于管理 IIS 设置和应用程序池之类的 CM 工具的模块可能会时不时地失败 - 特别是当涉及到高级设置时(例如工作线程回收)。

然而,对于更基本的 IIS 设置,Puppet 有 forge 模块,这在很大程度上对我有用 - 尤其是如果您正在管理大量的 IIS 服务器,则我真的很喜欢这种声明性格式。

此外,Windows 和配置管理的主要问题之一是缺乏适当的软件包管理解决方案 - 在这里实际上非常有用的东西称为 Chocolatey(请参见 http://chocolatey.org/)- 有一个插件可将其用作 puppet 中的提供程序 - 使整个管理过程变得特别简单。但我想这也可以与其他 CM 工具集成 - 但它确实帮助在 Windows 环境中自动安装软件。

尽管值得指出的是,无论您最终使用什么工具,您都必须花费一些时间解决一些奇怪的错误 - Windows 和脚本/自动化并不是最好的组合。


4

我一直在寻找完全相同的东西。

我偶然发现了Windows PowerShell Desired State Configuration,它声称可以完成许多你想用Chef/Puppet执行的配置管理任务。

我不会对它发表任何意见,因为我仍在评估阶段,但如果你还在寻找类似的工具,可以试试这个。


3

根据我的经验,我很高兴使用以下工具:

  1. 使用PowerShell管理Windows配置。如果仅涉及Windows服务器,您可以远程执行PS脚本。

  2. 如果您喜欢,建议使用Puppet或Chef将您的PowerShell脚本分发到客户端。

  3. 如果您喜欢,建议使用Cygwin +(Windows SSHD)+ Crond来管理在Windows中运行的类似于shell的脚本。


1

0

我不建议使用Chef,除非你是一名熟悉Ruby的软件开发人员。 Chef是为想要管理IT基础架构的软件开发人员设计的,而不是实际上最终管理它的SysOps人员。 它试图将IT基础架构视为代码,这与它实际运行的方式相反,更像是数据。

在我看来,Puppet对于SysOps人员更加友好,但仍然可能很复杂。

好消息是还有其他选择。 对于Windows而言,支持它的项目像Puppet也可以表现得相当好。


4
"DevOps"(与SysOps或“管理IT基础设施的开发人员”相比)是更合适的术语。本质上,一种新型的超级开发人员-管理员类别已经被创造出来,为那些需要传统开发人员和一直支持他们的传统管理员之间更紧密协作的商店提供帮助,以便从开发到生产实现更加动态但完全自动化的部署。 - michael
因为回答过于主观,被踩了。 - Tom Duckering
@Tom:我一直在从DevOps的角度(即我是负责发布管理的开发人员)研究Windows CM工具。根据我在其他地方阅读到的有关Chef和Puppet的信息,Fred对于Chef潜在缺点的看法是相当准确的——它要求用户使用Ruby编写配置脚本,而在Puppet中进行配置则更为直观。事实上,我在其他地方阅读到了两篇博客文章,它们提出了与Fred相同的观点:Chef更适合DevOps,而Puppet更适合IT专业人员。我从未使用过其中任何一个,因此没有个人经验。 - Simon Elms
@SimonTewsi:说得很有道理,但是答案对Chef的设计意图做出了一些未经事实支持的断言。如果答案引用了一些描述这种感觉的特点和特征的文章,那么它会更容易被接受。 - Tom Duckering

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接