在 Ansible 中使用 win_dsc 模块
在 Ansible 中使用 win_dsc 模块
您好,欢迎来到 Ansible + Windows 入门系列的另一篇文章!在本文中,我们将探讨什么是所需状态配置 (DSC),为什么它很有用,以及如何使用 Ansible 来管理您的 Windows 节点。
什么是 DSC?
那么,到底什么是所需状态配置?它本质上是一个系统配置管理平台,它使用声明式模型;换句话说,您告诉 DSC“做什么”,它将找出“怎么做”。与 Ansible 类似,DSC 使用推式执行模式将配置发送到目标主机。在将资源交付给多个目标时,这一点非常重要。
这个节省时间的工具内置于 PowerShell 中,通过代码定义 Windows 节点设置。它使用本地配置管理器 (这是在每个节点上运行的 DSC 执行引擎)。
Microsoft 鼓励社区共同努力,为各种技术构建和维护 DSC 资源。这些努力的结果每月都会被整理并发布到 PowerShell 库中,称为 DSC 资源包。如果没有针对您需要管理的技术提供原生 Ansible 模块,那么可能存在一个 DSC 资源。
如何将 DSC 与 Ansible 配合使用?
DSC 资源作为 PowerShell 模块进行分发,这意味着它的工作方式类似于 Ansible,只是实现方式不同。win_dsc
模块从 Ansible 2.4 版本开始提供,它可以在与 Windows 主机交互时影响现有的 DSC 资源。
要使用此模块,您需要 PowerShell 5.1 或更高版本。在确保 Windows 节点上安装了正确版本的 PowerShell 后,使用 DSC 就像使用 win_dsc
模块执行任务一样简单。
让我们看看它的实际应用。在本示例中,我们将确保安装 DNS 服务器,xDnsServer
DSC 资源模块存在,并使用它下方的几个 DSC 资源来定义一个区域和一个 A 记录。
- hosts: Erasmus tasks: - win_feature: name: - DNS - RSAT-DNS-Server state: present - win_psmodule: name: xDnsServer repository: PSGallery - win_dsc: resource_name: xDnsServerPrimaryZone Name: my-arbre.com - win_dsc: resource_name: xDnsRecord Name: test Zone: my-arbre.com Target: 192.168.17.75 Type: ARecord
让我们逐步了解上述 playbook 中发生的事情:它首先在目标上安装 DNS 服务器,然后安装 xDnsServer
DSC 资源模块。现在已安装 DSC 资源,调用 xDnsServerPrimaryZone
资源以创建区域,然后调用 xDnsRecord
资源,并带有一些参数来填写我们 my-arbre.com
站点的区域详细信息。xDnsServer
资源从 PowerShellGallery.com 下载,PowerShellGallery.com 是 DSC 资源的可靠社区。
请记住,win_dsc
模块旨在驱动单个 DSC 资源提供程序,使其工作方式类似于 Ansible 模块。它不打算用于定义主机上的 playbook 等效 DSC,然后运行它。
还需要记住的几点
- 定义任务时,
resource_name
必须设置为已安装在目标上的 DSC 资源的名称。 - 与文档匹配大小写是最佳实践;这也有助于更容易地区分 DSC 资源选项和 Ansible 的
win_dsc
选项。
结论
现在您了解了如何在 Ansible Playbook 中调用 win_dsc 模块来使用 DSC 管理 Windows 节点的基本知识。要详细了解 Ansible + DSC,请查看我们关于该主题的官方 文档页面。
特别感谢我的队友 John Lieske 为本文提供了大量技术支持。一如既往,祝您自动化愉快!