Windows是否有等效的etckeeper?AKA Windows配置修订控制


13

我想建立一个中央配置文件存储库,以便可以在修订控制下(Mercurial)对任何配置进行更改。这将包括一些GNU / Linux框(将使用etckeeper),网络设备的配置文件,打印机的配置文件以及最后但并非最不重要的Windows配置。

我知道您可以将一些配置(例如ISA和DHCP)作为文本/ xml文件导入,甚至将共享文件夹作为注册表项导入,但是对于GPO和AD,IIS,MSSql等而言,是否有办法将配置作为平面文件获得?基本上,您可以在Windows下拥有与etckeeper相当的东西吗?诸如基于Powershell的命令之类的东西?

另外,是否可以在版本控制(hg)下保留ACL和其他文件权限?

顺便说一句,我已经读过

无济于事。

Answers:


4

拿着他们的小包!

这是Michael J Ginter提供的脚本,用于创建服务器上所有DHCP作用域的备份。(请注意,它将停止并重新启动DHCP服务器服务。):

http://gallery.technet.microsoft.com/ScriptCenter/zh-cn/ff25d864-6ff0-411b-b242-97fbe34f011b

您可以使用LDIFDE从AD导入和导出数据:http : //support.microsoft.com/kb/237677

可以使用ADMX.exe(由Microsoft在http://www.microsoft.com/resources/documentation/WindowsServ/2003/all/techref/en-us/Default.asp?url=/resources/documentation/提供)来导出GPO 。 WindowsServ / 2003 / all / techref / zh-cn / w2k3tr_gp_tools.asp

可以通过%systemroot%\ system32中的iiscnfg.vbs导出IIS Config http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/81f04967-f02f-4845-9795-bad2fe1a1687.mspx?mfr=true


你太客气了!不幸的是,没有想要的免费的多合一解决方案,但是与CMS,安全冗余的存储和/或软件版本控制(例如Mercurial,Git或Subversion)结合使用时,您可以自己滚动。所有这些都应该可以编写脚本!
gWaldo

最初的想法是使用hg的Redmine / trac(好吧,如果我使用redmine,我可能会使用Git,实现更好的集成),在Linux机器上使用etckeeper,使用ssh脚本从交换机和路由器获取running_config,并将voodoo与win脚本一起获得在Win机器上转储配置(可能带有OSSEC文件修改“钩子”),所有内容都将转给HG库...问题是,Windows没有任何接近的东西,因此,这是。而且,所有文件都转储到SAN / NAS。您是否曾经设置过您所描述的内容?你能给我一些指导吗?

那真是个好主意,但我还没有做过这样的事情。如果您可以将其捆绑在一起,则建议将其产品化和/或滚动一个F / OSS项目。我通常会建议将日期/时间戳合并到文件名中,但是,如果将所有内容汇总到版本控制中,这都无关紧要。
gWaldo

1
我认为我必须删除Redmine部分,但我可以将其整合到后言中。无论如何,其余的只是一堆etckeeper配置,scp脚本等。我将尝试对其进行记录并发布一些脚本,但是不幸的是,我认为它不能成为产品。不过,这可能是一个伟大的FOSS产品创意。

1

对于ACL和文件权限,您可以尝试使用PowerShell:

get-acl c:\temp | format-list
get-acl -path hklm:\ | format-list

我们购买了Tripwire来执行类似的功能,但是它遭受了功能膨胀和特质UI的困扰,以至于它因忽略而生锈。


...我真的应该花一些时间来学习Powershell。谢谢。

1

在Windows上,软件没有标准的方法来存储配置,因此,没有一种方法可以处理这些配置。在任何人开始抱怨如何存在某种“标准”之前,让我们看一下到目前为止的Microsoft建议。

  • 首先,我们被告知要在win.ini中创建所有配置。
  • 接下来被告知win.ini太大,因此将配置放在Windows目录中的.ini文件中。
  • 不,Windows目录越来越混乱。使用应用程序目录。
  • 瞧,我们有了这个新的中央配置存储库,我们将其称为“注册表”。把所有东西放在那里。
  • 糟糕,注册表太大。将配置放在用户配置文件中。
  • 猜猜是什么,概况问题并不顺利。
  • 等等等

应用程序(包括Microsoft自己的应用程序)没有标准的方式或位置来存储配置,并使用上述任何或所有方法以及一些“非标准”方法。欢迎来到Windows不断变化的世界。


是。我知道Unix杂乱的/ etc会导致多慢。哦,等等...

0

确实不是,也不是免费的。有商业产品可以做到这一点,我知道它们又大又贵。Opsware(或现在的HP Server Automation)可以执行此操作。

大约十年前,开发MRTG的那个家伙在类似的尝试上失败了。环境已经发生了很大的变化,因此您可能可以依靠他们的工作并提出一些好的建议。例如,您现在可以转储GPO,这是它们的问题之一。

/ edit-您始终可以将AD转储到LDIF或CSV。每晚导出到其中一个,然后将其导入CSV。IIS全部位于文件系统和配置数据库中,后者也位于文件系统中。普通备份和/或将它们复制到CSV会很好。SQL配置,我不太确定。我认为这都是注册表,PS可能有钩子来显示这些。

注意事项-您询问有关备份文件的ACL的问题吗?Jeebus-请告诉我,您正在备份文件,并且您的备份软件会保留ACL。如果您根本不备份文件,那么ACL对您有什么好处?如果您不使用ACL备份文件,那么备份软件怎么了?您可以本机打开对ACL更改的审核,也许您想这样做?


我并不是在说备份本身。几乎所有备份软件都保留ACL。但是,版本控制在大多数情况下甚至都不会保留权限。例如,Mercurial仅在UNIX上保存eXecutable权限。为此,您需要一个钩子,一个插件或一个“技巧”,例如在单独的图元文件中使用savinf ACL /权限。另外,我要查找它,但是...例如,您能告诉我如何将AD导出到LDIF吗?

编辑:Aparently,与LDIFDE - technet.microsoft.com/en-us/library/bb727091.aspx

0

我还没有听说过。尽管注册表可能是Windows上(大多数)配置的宿主,并且它(某种)可以用文本形式表示,但您最好的希望是配置文档而不是配置管理。有一些API可以监视注册表的更改,如一些System Internals工具所证明的那样,从理论上讲,它们将允许基于事件的操作(例如,恢复为旧配置)。不幸的是,有一些事情(组策略是最大的)旨在克服任何基于本地机器的对配置更改的限制。

但是,这仅管理基本操作系统。一旦开始添加其他Microsoft产品,情况就会变得更加复杂。IIS有自己的数据库,即元数据库,不在注册表中。MS-SQL在其他地方存储在数据库本身中的一整套配置。AD当然可以表示为平面文件,它是LDAP的LDIF导出,但是同样,文档不是管理。组策略本身是目录树,其中充满了域控制器上的文件。

无论如何,这绝非易事。这就是为什么像Microsoft的System Center Configuration Manager或Novell的Zenworks Configuration Management这样的系统是如此复​​杂的原因。实际上,据我所知,这些产品是Windows最接近etckeeper之类的产品。


“元数据库”只是文件系统上的XML文件-每晚获取和版本化版本非常简单。现在被授予,这与每次有人手动更改配置时触发差异是不同的,那将是另一回事。这取决于提升剂需要多少粒度。
mfinni

1
在Microsoft的System Center Configuration Manager的网页上花费了一些时间。它就像“漂亮的图表,流行语,流行语,协同作用,自我祝贺,模糊的承诺,流行语”。仍然不确切知道它是做什么的,而是用诸如“连接人员,流程和工具-通过评估依赖关系并从操作系统,应用程序以及组合服务和物理及内部工作流内部深入了解业务流程性能的句子来表达”虚拟环境。” 似乎很进取。有什么好处吗?

如果您为此有预算,在要求产品推荐时提及它会很有帮助。
mfinni 2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.