适用于 Linux 的 Desired State Configuration (DSC) 入门

本主题说明如何开始使用适用于 Linux 的 PowerShell Desired State Configuration (DSC)。 有关 DSC 的常规信息,请参阅 Windows PowerShell Desired State Configuration 入门

支持的 Linux 操作系统版本

适用于 Linux 的 DSC 支持以下 Linux 操作系统版本。

  • CentOS 7 和 8 (x64)
  • Debian GNU/Linux 8、9 和 10 (x64)
  • Oracle Linux 7 (x64)
  • Red Hat Enterprise Linux Server 7 和 8 (x64)
  • SUSE Linux Enterprise Server 12 和 15 (x64)
  • Ubuntu Server 14.04 LTS、16.04 LTS、18.04 LTS 和 20.04 LTS (x64)

安装适用于 Linux 的 DSC

必须先安装开放式管理基础结构 (OMI),才能安装适用于 Linux 的 DSC。

安装 OMI

适用于 Linux 的 Desired State Configuration 需要开放式管理基础结构 (OMI) CIM 服务器版本 1.0.8.1 或更高版本。 可从 The Open Group:Open Management Infrastructure (OMI)(开放式管理基础结构)下载 OMI。

若要安装 OMI,请安装适用于 Linux 系统(.rpm 或.deb)和 OpenSSL 版本(ssl_098 或 ssl_100)以及体系结构 (x64/x86) 的程序包。 RPM 程序包适用于 CentOS、Red Hat Enterprise Linux、SUSE Linux Enterprise Server 和 Oracle Linux。 DEB 程序包适用于 Debian GNU/Linux 和 Ubuntu Server。 ssl_098 程序包适用于安装了 OpenSSL 0.9.8 的计算机,而 ssl_100 程序包适用于安装了 OpenSSL 1.0 的计算机。

注意

若要确定安装的 OpenSSL 版本,请运行 openssl version 命令。

运行以下命令以在 CentOS 7 x64 系统上安装 OMI。

# sudo rpm -Uvh omiserver-1.0.8.ssl_100.rpm

安装 DSC

适用于 Linux 的 DSC 可从存储库中的 PowerShell-DSC-for-Linux 存储库下载。

若要安装 DSC,请安装适用于 Linux 系统 (.rpm 或 .deb) 、OpenSSL 版本和体系结构的包, (x64/x86) 。 RPM 程序包适用于 CentOS、Red Hat Enterprise Linux、SUSE Linux Enterprise Server 和 Oracle Linux。 DEB 程序包适用于 Debian GNU/Linux 和 Ubuntu Server。

注意

支持 DSC Linux OpenSSL 至 1.1 版。 若要确定安装的 OpenSSL 版本,请运行 openssl version 命令。

运行以下命令以在 CentOS 7 x64 系统上安装 DSC。

# sudo rpm -Uvh dsc-1.0.0-254.ssl_100.x64.rpm

使用适用于 Linux 的 DSC

以下章节说明了如何在 Linux 计算机上创建和运行 DSC 配置。

创建配置 MOF 文档

使用 Windows PowerShell Configuration 关键字为 Linux 计算机创建配置,与为 Windows 计算机创建配置类似。 以下步骤描述了如何使用 Windows PowerShell 为 Linux 计算机创建配置文档。

  1. 导入 nx 模块。 此 nx Windows PowerShell 模块包含适用于 Linux 的 DSC 内置资源的架构,必须将其安装到本地计算机上并导入到配置中。

    • 若要安装 nx 模块,请将 nx 模块目录复制到 $env:USERPROFILE\Documents\WindowsPowerShell\Modules\$PSHOME\Modules 中。 该 nx 模块包含在适用于 Linux 的 DSC 安装包中。 若要在配置中导入 nx 模块,请使用 Import-DSCResource 命令:
    Configuration ExampleConfiguration{
    
     Import-DSCResource -ModuleName nx
    
    }
    
  2. 定义配置并生成配置文档:

    Configuration ExampleConfiguration
    {
         Import-DSCResource -ModuleName nx
    
         Node  "linuxhost.contoso.com"
         {
             nxFile ExampleFile
             {
                 DestinationPath = "/tmp/example"
                 Contents = "hello world `n"
                 Ensure = "Present"
                 Type = "File"
             }
         }
    }
    
    ExampleConfiguration -OutputPath:"C:\temp"
    

将配置推送到 Linux 计算机

可使用 Start-DscConfiguration cmdlet 将配置文档(MOF 文件)推送到 Linux 计算机。 若要将此 cmdlet 和 Get-DscConfigurationTest-DscConfiguration cmdlet 远程运用到 Linux 计算机,必须使用 CIMSession。 使用 New-CimSession cmdlet 将 CIMSession 创建到 Linux 计算机中。

以下代码表明了如何创建适用于 Linux 的 DSC CIMSession。

$Node = "ostc-dsc-01"
$Credential = Get-Credential -UserName "root" -Message "Enter Password:"

#Ignore SSL certificate validation
# $opt = New-CimSessionOption -UseSsl -SkipCACheck -SkipCNCheck -SkipRevocationCheck

#Options for a trusted SSL certificate
$opt = New-CimSessionOption -UseSsl

$sessParams = @{
    Credential = $credential
    ComputerName = $Node
    Port = 5986
    Authentication = 'basic'
    SessionOption = $opt
    OperationTimeoutSec = 90
}

$Sess = New-CimSession @sessParams

注意

对于“推送”模式,用户凭据必须为 Linux 计算机上的根用户。 适用于 Linux 的 DSC 仅支持 SSL/TLS 连接,使用 New-CimSession 时必须将 –UseSSL 参数设置为 $true。 在 /etc/opt/omi/conf/omiserver.conf 文件中通过 pemfile 和 keyfile 属性指定(DSC 的)OMI 使用的 SSL 证书。 如果 New-CimSession cmdlet 运行于的 Windows 计算机不信任此证书,你可以通过以下 CIMSession 选项选择忽略证书验证:-SkipCACheck -SkipCNCheck -SkipRevocationCheck

运行以下命令以将 DSC 配置推送到 Linux 节点。

Start-DscConfiguration -Path:"C:\temp" -CimSession $Sess -Wait -Verbose

使用请求服务器分发配置

可使用请求服务器将配置分发到 Linux 计算机,与分发到 Windows 计算机类似。 有关使用请求服务器的指南,请参阅 Windows PowerShell Desired State Configuration 请求服务器。 有关通过请求服务器使用 Linux 计算机其他信息和限制条件,请参阅“适用于 Linux 的 Desired State Configuration 发行说明”。

从本地进行配置

适用于 Linux 的 DSC 包括用于从本地 Linux 计算机进行配置的脚本。 这些脚本位于 /opt/microsoft/dsc/Scripts 中,包括以下内容:

  • GetDscConfiguration.py

    返回应用于此计算机的当前配置。 与使用 Windows PowerShell cmdlet Get-DscConfiguration cmdlet 类似。

    # sudo ./GetDscConfiguration.py

  • GetDscLocalConfigurationManager.py

    返回应用于此计算机的当前元配置。 与 cmdlet Get-DSCLocalConfigurationManager cmdlet 类似。

    # sudo ./GetDscLocalConfigurationManager.py

  • InstallModule.py

    安装自定义 DSC 资源模块。 需要包含模块共享对象库和架构 MOF 文件的 .zip 文件的路径。

    # sudo ./InstallModule.py /tmp/cnx_Resource.zip

  • RemoveModule.py

    删除自定义 DSC 资源模块。 需要待删除模块的名称。

    # sudo ./RemoveModule.py cnx_Resource

  • StartDscLocalConfigurationManager.py

    将配置 MOF 文件应用于计算机。 与 Start-DscConfiguration cmdlet 类似。 需要待应用的配置 MOF 的路径。

    # sudo ./StartDscLocalConfigurationManager.py –configurationmof /tmp/localhost.mof

  • SetDscLocalConfigurationManager.py

    将元配置 MOF 文件应用于计算机。 与 Set-DSCLocalConfigurationManager cmdlet 类似。 需要待应用的元配置 MOF 的路径。

    # sudo ./SetDscLocalConfigurationManager.py –configurationmof /tmp/localhost.meta.mof

适用于 Linux 的 PowerShell Desired State Configuration 日志文件

为适用于 Linux 的.DSC 生成了以下日志文件。

日志文件 Directory 说明
omiserver.log /var/opt/omi/log 与 OMI CIM 服务器操作相关的消息。
dsc.log /var/opt/omi/log 与本地配置管理器 (LCM) 操作和 DSC 资源操作相关的消息。