当前市面上比较流行的DevOps运维工具有Chef, Puppet ,Ansible,PowerShell DSC. 很多朋友对 Chef,Puppet,Ansible可能比较熟悉,但是对于微软的一款PowerShell DSC的自动化运维工具可能知道的不多。
俗话说,工欲善其事必先利其器,下面笔者在这篇文章中着重花点时间,和大家分享一下微软的PowerShell DSC,希望能够起到抛砖引玉的作用,收藏一下,说不定某天还能成为一剑封喉的寒光宝剑。
如果读者刚好运维的环境中有大量的Windows系统,或者已经在用PowerShell脚本来管理你的Windows机器的话,可以关注我并在我的文章后面留言,咱们可以一起来切磋探讨。
什么是PowerShell DSC?
说到PowerShell DSC,先说一下 PowerShell, PowerShell其实就是类似于Linux系统的Bash, csh,ksh,其已经 快速成长为Mircosoft Windows的和VMWare生态系统的标准自动化工具,微软投入了巨资,使得PowerShell能够管理Microsoft Windows Servers和Microsoft的应用程序。 那么什么是PowerShell DSC呢?
PowerShell DSC是PowerShell的一部分,是一个新的管理平台,英文全称为,PowerShell Desired Status Configuration,翻译成中文就是理想管理配置状态。PowerShell DSC 能够为系统和软件服务部署和管理配置数据,并且允许定义当前机器的状态从而确保机器的状态和你预定义的没有偏差。
那么什么是状态的呢?状态指的就是一台机器上面的所有东西,比如,OS和软件的所有配置设置,任何文件和进程需要被设置成什么内容。DSC能够保证帮助我们处理所有的配置数据并且能重复执行且每次重复执行结果都一样。WindowPowerShell DSC能够帮助我们用户的资源在数据中心被正确的配置;DSC是PowerShell语言的扩展,为数据中心的资源提供了可申明,可自动化,满足幂等(可重复执行)性和一致性的配置能力。DSC能够帮助专业运维人员,开发,IT基础设施管理员等定义目标节点的配置(计算机或者设备)同时阻止配置的不一致性和配置状态的漂移。
说白了就是,PowerShell DSC是基于声明式的语言,运维者只需要提出自己需要对目标配置要求,而不需要具体关注这个目标是如何实现的,举个简单的栗子,比如说我们想要在目标机器上安装一个Chrome浏览器,我们只需要做如下的声明。
PowerShell DSC的引擎会自动解析并执行上面的配置所申明的Chrome浏览器的安装,如果不小心删除了,PowerShell DSC的引擎也会自动监测到,并在新的检查周期里重新安装,直到目标机器上的Chrome浏览器的的确确已经达到了预先申明的状态。
为什么PowerShell DSC?
PowerShell DSC是微软提出的自动化运维解决方案,背靠大树好乘凉,有微软这颗大树在后面做你强有力的技术和服务器的支持和支撑,你还怕什么?
另外,PowerShell天生就和PowerShell解下不不解之缘,后面会提到PowerShell和PowerShell DSC之间的关系,有PowerShell和.NET这些强大的编程语言做后盾,你还怕有实现不了的功能吗?
最重要的是,PowerShell DSC的离身之本,PowerShell 的DSC的弹药库,DSC 模块和资源已经在Github上开源了,这样,有了源代码,你就能快速的学习其背后的逻辑和经验,而且还能对满足不了你的功能进行改造,爽吧。
最后,PowerShell的部署方式和支持架构也非常的灵活,其不但支持推的方式,也支持拉的方式,可以实例企业生产环境的不同大小规模的服务器的管理。
PowerShell DSC 和PowerShell是什么关系?
那么PowerShell到底和PowerShell DSC是什么关系呢?悄悄的告诉大家:
PowerShell DSC是PowerShell的一部分, 而PowerShell是WMF(Window Management FrameWork)的一部分。没有独立的PowerShell DSC的安装包,也没有独立的PowerShell安装包,PowerShell和PowerShell DSC都包含在Window Management Framework的安装包里的。
当前的WMF最新版本是5.1,大家可以到下面的网站去下载。
PowerShell DSC 的关键概念
其实真的很难在一篇文章中把所有的DSC的事情都介绍清楚,所以在介绍DSC的架构风格之前,先简单介绍一下DSC的核心概念:
幂等性(Idempotent)
一个操作被执行多次,结果都是一样的
DSC配置文件(DSC Configuration File)
一个PowerShell脚本文件,包含了DSC的领域描述语言(Domain Description Language)已经被执行的DSC资源(Resource)的列表。
DSC配置数据(DSC Configuration Data)
一个PowerShell的脚本文件或者一段代码,其定义了一批可以改变目标节点的数据。
DSC 资源(DSC Resource)
DSC资源就是一个PowerShell的模块,其包含了幂等性函数(需要实现Set-Target,Get-Target和Test-Target三个函数接口),通过执行这写具有幂等性的函数从而达到用户期望的配置
DSC cmdlets
其实就是 PowerShell的cmdlets,只不过专门用来操作DSC,比如Start-DSCConfiguration, Get-DSCResource等等,总结一下凡是带有DSC关键字的PowerShell的cmdlets一般都属于DSC的cmdlets,哈哈。
本地配置管理器(Local Configuration Management,简称LCM)
其实就是一个DSC的目标节点的执行引擎,控制着DSC配置文的执行已经把执行反馈执行结果。
MOF文件
其实就是一个机器可读的,于平台无关的一个文件,其定义了很多的规范,一般我们在开发DSC配置文件的时候,都是通过编辑DSC的配置文件生成MOF文件,然后MOF文件被目标节点的机器上的DSC的执行引擎执行。
漂移(Drift)
一个专业术语,主要用来描述并比较预期目标机器的状态和当前已经达到的配置状态的对比,看是否产生了偏移,比如我需要安装定义了我要在目标节点上安装.NET 4.5.2,如果目标机器上的的确确通过DSC安装了.NET 4.5.2,那么我们就可以认为当前的预期配置状态(Desired Configuration Status,DSC)没有漂移(Drift),否则就有漂移(Drift)。
想进一步学习PowerShell DSC,怎么办?
如果大家看了笔者上面的文章之后,想进一步学习PowerShell DSC,或者想咨询一些有关于PowerShell DSC的事情,怎么办?大家可以参看我的CSDN博客的专栏,PowerShell DSC。大家只要在百度输入PowerShell DSC chancein007,第一条就是我写的文章,里面有30几篇我写的关于PowerShell DSC的实战经验的分享。或者请关注我的今日头条公众号,在文章后面留言,或者给我私信,笔者将会尽自己最大的努力,在第一时间给大家回复。
我是一名爱好技术的软件架构师,同时也爱美食,爱电影,爱娱乐八卦。 如果您关注且爱好软件技术,请关注我的企鹅号.
【部分图片来源网络,如有侵权,请联系笔者删除,谢谢!】
领取专属 10元无门槛券
私享最新 技术干货