为什么是MOF?
你会注意到DSC对MOF文件有很强的依赖性,对此,这儿有一些不错的解释。
托管对象格式(MOF)是由微软所在的一个中立行业组织分布式管理任务组(DMTF)定义的。DMTF的目的就是监督有助于跨平台管理的标准。换句话说,MOF就是一个跨平台标准。这就表明很多事:
- 你不一定要写一个PowerShell配置脚本来生成一个DSC可以使用的MOF文件。只要你可以给出一个合法的MOF文件,DSC就乐了,不管是谁制造了这个MOF文件。这开启了使用第三方软件管理工具的可能性。
- PowerShell配置脚本可以生成标准的MOF文件,那么你也可能编写配置脚本来管理非Windows系统的电脑。记住,你的PowerShell脚本不会被发送到目标节点上。这些脚本只是产出一个将会被发送到目标节点的MOF文件。如果目标节点是台知道如何处理MOF文件的Linux电脑,那么你就好办了。
因此使用MOF文件背后的意图就是创建一个可以兼容多平台的配置管理系统。Linux世界现有的配置管理系统(比如,想想Chef和Puppet)已经以同样的方式使用MOF了。因此微软不是一定要你使用他们的技术,你可以使用能够生成一个合法MOF文件的任何东西来管理Windows服务器。
MOF文件也非常接近于普通信息模型(CIM),以及另一个微软起初作为Windows管理规范(WMI)的DMTF标准。MOF格式被用来定义CIM库(这是微软打算和其他人更好协作的另一个尝试,因为非Windows系统电脑也可以实现兼容多平台的CIM库)内出现的类。
非常有必要理解这一点,DSC由三层组成:
- 顶层:领域专用语言(DSL),使用它编写声明性的配置脚本。这是PowerShell语言的子集,并且PowerShell把这个脚本编译成了MOF文件。
- 中间层:节点端功能:接收MOF文件,并且完成整个配置过程。
- 底层:节点端DSC Resource,它被MOF文件调用,真正执行配置任务。
这些的意义在于你可以用任何可生成正确MOF文件(MOF格式是商业中立的,不是属于微软的)的东西(语言或工具等)来替换掉顶层。而且每个人都可以提供最底层的元素(微软将会提供很多),每个工具都可以利用DSC。因此,如果你有一个跨平台的管理工具,并且他可以生成正确的MOF文件,然后你就不一定需要在你电脑上安装工具的代理软件。相反地,工具可以生成MOF文件,并且告诉Windows DSC组件做什么。