您的位置:首页 > 运维架构 > Shell

[2] Window PowerShell DSC 学习系列----DSC的资源(Resource)以及配置和格式(Configuration && Sytax )

2017-01-09 23:19 821 查看
这个章节主要来讲述DSC的资源(Resource)以及配置和格式(Configuration && Sytax )。

#1 DSC 资源(The
DSC resources


简单的来说,DSC资源就是被用来配置节点成理想状态的一个最低资源的单位的集合。PowerShell DSC会默认提供一些内置的DSC 资源。比如,我们在PowerShell控制台执行Get- DSCResource这个命令,其会列出所有的内置的可用的资源。



File: 管理文件和文件夹
Archive: 压缩和解压缩zip格式的文件
Environment: 管理系统的环境变量
Log: 把消息写入到PowerShell DSC的事件日志里面
Package: 安装或者卸载软件包
Registry: 管理除了HKEY User以外的注册表
Script: 在目标节点上面执行PowerShell的命令或者脚本
Service: 管理Window的服务(比如状态,启动类型)
User: 管理本地系统上的用户
WindowsFeature:添加或者删除一个角色或者功能(role/feature)
WindowsOptionalFeature: 添加或者删除一个可选的角色或者功能(role/feature)
WindowsProcess: 管理Window的进程
WaitForAll / WaitForAny / WaitForSome: 在PowerShell WMF 5.0 的版本中可用。支持跨计算机的同步;且支持不同计算机之间的部署依赖。比如,有一个Web服务器和一个数据库服务器,可以设定当数据库服务器的数据库更新后,Web服务器上的应用程序才能安装。
此外,PowerShell也支持对PowerShell DSC的资源的扩展。最新的扩展的DSC Resouce有下面这些。

cFileShare
xActiveDirectory
xAdcsDeployment
xAzure
xAzurePack
xBitlocker
xChrome
xComputerManagement
xCredSSP
xDatabase
xDhcpServer
xDisk
xDismFeature
xDnsServer
xDscDiagnostics
xDSCResourceDesigner
xExchange
xFailOverCluster
xFirefox
xHyper-V
xInternetExplorerHomePage
xJea
xMySql
xNetworking
xOU
xPendingReboot
xPhp
xPowerShellExecutionPolicy
xPSDesiredStateConfiguration
xReleaseManagement
xRemoteDesktopAdmin
xRemoteDesktopSessionHost
xSafeHarbor
xSCDPM
xSCOM
xSCSMA
xSCSPF
xSCSR
xSCVMM
xSmbShare
xSqlPs
xSQLServer
xSystemSecurity
xTimeZone
xWebAdministration
xWindowsRestore
xWindowsUpdate
xWinEventLog
xWordPress

那么如何安装这些额外的资源呢?


Step 1 首先到 https://gallery.technet.microsoft.com/scriptcenter/DSC-Resource-Kit-All-c449312d 下载最新的DSC Resource Tool Kit

Step 2 下载之后,解压缩。

Step 3  用下面的命令查看DSC resource 的扩展模块可以放到什么地方

PS C:\DSC> Get-ChildItem -Path Env:\PSModulePath | Format-List
Name  : PSModulePath
Value : C:\Users\Admin\Documents\WindowsPowerShell\Modules;C:\Program
Files\WindowsPowerShell\Modules;C:\windows\system32\WindowsPowerShell\v1.0\Modules


Step 4 然后把解压缩后,根目录下面的几十个文件夹已经其内容拷贝到上面的任意路径,笔者拷贝到 C:\Program Files\WindowsPowerShell\Modules 








Step 5 然后,在用Get-DSCResource | Select-Object –Property Name | Format-Wide –Column 1 

命令查看,则可以看到额外的资源已经安装成功。



注意:上面这种方式在PowerShell DSC 4.x和5.x都可以使用,但是在[b]PowerShell
DSC 5.x 之后,还有另外一种方式可以使用。
[/b]

Find-Module -Tag DSCResourceKit

Find-DscResource


具体用法,笔者将会在后续文章列出。



#2 DSC配置格式(DSC Syntax)

既然PowerShellDSC能够定义用来定义理想配置状态,那么这个理想配置状态肯定是由一个配置文件来描述的,那么这个配置文件必须遵从一定的格式,下面来介绍一下DSC配置的结构和格式。其主要结构如下:

ConfigurationConfigName#第1部分

{  

  param(#第2部分

    [Parameter(Mandatory=$true)]

    [String[]]$Param1,

    [Parameter(Mandatory=$true)]

    [String]$Param2,

    [Parameter(Mandatory=$true)]

    [String]$Param3

  )

  Node$Servers#第3部分

  {  

    FileResName#第4部分

    {

        ...  #第5部分

    }

  }  

  Node$Servers#第3部分

  {  

    WindowsFeatureResName2#第4部分

    {

        ...  #第5部分

    }

  }  

}

第1部分:关键字“Configuration”后面紧跟的是配置的名称(ConfigurationName),主要用来描述当前配置文件的作用。
第2部分:包含了要在这个配置文件中使用的参数,相当于一个方法的传入参数。
第3部分 这部分主要用来显示配置需要部署到个服务器上
第4部分: 就是你想配置的PowerShell 资源.当前的例子, 其使用了"File"和“WindowFeature”,后面跟上一个友好的名字描述。
第5部分:包含期望的资源的状态的属性描述,其使用键值对描述的“key=value”

下面是一个具体的例子,用来把一个Hosts文件拷贝到目标机器上。

ConfigurationDeployHostFile

{  

  param(

    [Parameter(Mandatory=$true)]

    [String[]]$Servers,

    [Parameter(Mandatory=$true)]

    [String]$SourceFile,

    [Parameter(Mandatory=$true)]

    [String]$DestinationFile

  )

  Node$Servers

  {  

    FileCopyHostFile

    {

        Ensure="Present"

        Type="File"

        SourcePath=$SourceFile

        DestinationPath=$DestinationFile

    }

  }

}

上面是一个具体的例子,用来把一个Hosts文件拷贝到目标机器上。简单解释一下上面的PowerShell DSC的程序,当前的配置文件名字叫做

DeployHostFile,其包含了3个强制的传入参数($Servers, $SourceFile, $DestinationFile). Node部分显示器有一个File类型的资源,将会在目标节点上生成。

使用下面的命令,可以得到具体的格式的信息。具体信息,请参考https://msdn.microsoft.com/en-us/powershell/dsc/builtinresource
PS>Get-DSCResourceFile-syntax



#3  DSC resource 的实现方式

我们知道,在PowerShell DSC的配置文件里面需要用到PowerShell DSC的resource,那么这些resource可以理解成为具体的执行代码。

其有三种实现方式,Binary(二进制),PowerShell以及Composite(组合)。

Binary                      File 
PowerShell            Archive,Environment,Service,WindowsFeature
Composite            ServiceSet,WindowsFeatureSet

在下一篇文章里面,我们会简单介绍一下,如何应用一个配置文件,并使其生效,敬请期待。

参考文件:
https://www.simple-talk.com/sysadmin/powershell/powershell-desired-state-configuration-the-basics/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐