DSC 与“常规”脚本有何不同/更好?

Yet*_*ser 8 windows powershell dsc

我在 ITPro.tv 上观看了有关PowerShell Desired State Configuration DSC的视频。他们引入它,并有效地运行脚本。然而,这也是他们第一次(真正)引入脚本,所以我没有发现 DSC 和常规脚本之间的区别。我以前做过一些常规脚本,也许他们只是没有那么好的例子;似乎常规脚本可以安装角色/功能并复制一些文件就好了。与脚本相比,我没有看到 DSC 的好处。除了能够轮询某种变化的机器之外,他们在实践中没有涵盖,只是在理论上。

DSC 相对于传统脚本的优势是什么?例如“安装角色,复制文件”?

  • 使用 PowerShell,您可以连接到远程机器并告诉它们执行操作,因此这不是 DSC 独有的。
  • 使用 DSC,您似乎在进行某种编译以制作 mof 文件,然后在脚本之后从 shell 运行它,这似乎是不必要的步骤。
  • MSDN概述读起来就像PowerShell的概述,我看不出与众不同之处。

Zor*_*che 7

正如您所说,您可以使用直接的 powershell 代码做几乎所有可以用 DSC 做的事情。

但是,DSC 完全是关于配置管理的。

配置管理是关于使用代码和各种系统来确保系统处于特定状态的模式和实践。参考1 2

关于配置管理的一件重要事情是幂等性。这意味着将定期检查配置管理系统中描述您系统的代码并针对您的系统运行。许多基本脚本设计得不好,在您第一次使用它来配置系统时会做正确的事情,但下次它们会出错、重复等。理想情况下,配置管理系统将抽象掉您必须手动添加到脚本中的大部分测试和状态检查代码,以使您的脚本具有幂等性。

关于 DSC 和许多其他配置管理系统的另一个重要事情是制作可重复使用的资源,这些资源实际上可以与世界上的任何人和每个人共享的工作。通过这种方式,您的实际“配置”应该只是针对您的环境的少数特定细节。这也意味着您需要编写更少的代码,因为您可以重用许多其他人已经使用和审查过的东西。

我在上面包含了一些链接,但是您可以在 Internet 上找到许多关于配置管理系统理论的好网站。一般理论适用于所有配置管理系统(puppet、chef、dsc、ansible 等),当然值得学习,并且值得在大多数环境中使用。