Powershell DSC和 WMF 5.0 Preview - Push 模式

豆子最近开始学习Powershell DSC。

MVA上有很多相关的课程,最新的入门课程是基于 WMF 5.0 Preview 来实现的。

https://www.microsoftvirtualacademy.com/en-US/training-courses/getting-started-with-powershell-desired-state-configuration-dsc--8672?l=YZHpImG1_7204984382

5.0以后,微软在DSC这一块又做了很多改进。比如说,微软设置了一个central repository的网站 https://www.powershellgallery.com/  这样用户可以直接下载需要的Powershell 模块。可以看见该网站目前提供了800多个模块可以下载;

下载的方式很简单,在安装了WMF 5.0 Preview的机器上执行 Save-module 就可以下载;Install-modue就可以直接安装。安全起见,一般建议先使用save-module下载之后确认脚本无误再执行安装。

比如

简单的熟悉了一下Powershell Gallery之后,开始进入正题。

Powershell DSC 和传统的脚本不同,他不需要告诉系统具体的安装和配置步骤,只需要告诉系统期望的一种状态,然后告知从哪里可以获取对应的资源来实现这种状态,Local Configuration Manager就会自动处理了。

作为入门课程,首先学习了最基本的Push模式,基本流程很简单,配置LCM 的Meta.mof文件,这个Meta文件会告诉LCM多久检测一次,如果检查到状态更改,如何处理等等;然后再对客户端生成一个mof配置文件,告诉他需要的状态和资源,最后通过start-dscconfiguration推送到客户端即可。

实验环境,两台windows 2012 R2的服务器,都安装了WMF 5.0 Preview 版本。豆子需要自动安装一个IIS作为测试

首先看看客户端(sydittest)的默认LCM配置,他的模式是applyandmonitor,出现问题会通知管理员,但是不会自动校正

我们需要创建一个新的LCM meta配置文件,并把模式更改为applyandautocorrect, 如下所示。

注意!下面是5.0的新格式

[DSCLocalConfigurationManager()]
Configuration LCMPUSH 
{
Node $Computername
{
SEttings
{
AllowModuleOverwrite = $True
            ConfigurationMode = ‘ApplyAndAutoCorrect‘
RefreshMode = ‘Push‘
}
}
}
$Computername = ‘sydittest‘
# Create the Computer.Meta.Mof in folder
LCMPush -OutputPath c:\DSC\LCM

Powershell 4.0的旧格式如下,当然两者都是工作的

Configuration LCMPUSH 
{
Node $Computername
{
LocalConfigurationManager
{
AllowModuleOverwrite = $True
            ConfigurationMode = ‘ApplyAndAutoCorrect‘
RefreshMode = ‘Push‘
}
}
}
$Computername = ‘sydittest1‘
# Create the Computer.Meta.Mof in folder
LCMPush -OutputPath c:\DSC\LCM

执行脚本,生成 meta.mof 文件

然后把生成的meta.mof文件推送给客户端

稍等片刻,发现状态模式已经发生改变了。

客户端查看生成的配置文件

LCM的meta配置好了,我们接下来看看资源(resource)

目前我已经安装了以下资源,下面的实验里面需要用到windowsfeature这个资源

可以查看调用该资源的语法结构是什么

创建一个simpleconfig.ps1脚本,如下所示,他会生成一个sydittest.mof文件,这个是我们需要的配置文件,最后要推送给客户端

configuration ConfigName {
    Node $ComputerName {
        WindowsFeature IIS{
            Name = ‘web-server‘
            Ensure = ‘Present‘
        }
    }
}
$computername = ‘sydittest‘
ConfigName -OutputPath c:\DSC\Config

执行一下,生成mof文件

推送给客户端之前,先测试一下IIS,可以看见没有安装

推送给客户端,注意 -verbose会显示具体的步骤;-wait会在前台执行

测试一下发现IIS已经自动安装了

客户端确认一下,的确已经安装了

尝试手动删除看看,删除之后要求重启

重启之后,发现IIS又自动安装上了,实验成功!

时间: 2024-10-08 17:37:37

Powershell DSC和 WMF 5.0 Preview - Push 模式的相关文章

PowerShell DSC(一)简单的推模式

最近因为公司业务需要一直在学习开源平台的内容,比如OpenStack和Docker等等,看着看着就对puppet和chef产生了一些兴趣,随之顺其自然的就发现其实在Windows平台也有自己原生的自动化运维解决方案,它就是PowerShell DSC(desired state configuration),按照字面理解就是"期望的配置状态",我本人对puppet和chef没有太多深入的研究,但是对比了一下两者与PowerShell DSC的实现机制发现的确是大同小异,在此也不讨论谁先

Powershell DSC 5.0 - Pull 模式 (SMB)

相对于Push模式,Pull 服务器模式一般有三种方式,分别是SMB,Http和Https. Pull模式的基本流程是配置Node的LCM,配置服务器,然后推送配置文件给节点,节点会定期检查状态,如果状态不对,会从Pull server哪里下载新的配置文件.Pull server会验证guid值,然后对比客户端和服务器配置文件的checksum,如果匹配就算了,如果不匹配,下载新的给客户端节点. 首先看看最简单的SMB方式. 首先创建一个文件 c:\DSCSMB 然后分配共享权限 确认一下 Ok

编译调试 .NET Core 5.0 Preview 并分析 Span 的实现原理

很久没有写过 .NET Core 相关的文章了,目前关店在家休息所以有些时间写一篇新的??.这次的文章主要介绍如何在 Linux 上编译调试最新的 .NET Core 5.0 Preview 与简单分析 Span 的实现原理.微软从 .NET Core 5.0 开始把 GIT 仓库 coreclr 与 corefx 合并移动到了 runtime 仓库,原有仓库仅用于维护 .NET Core 3.x,你可以从以下地址查看最新的源代码: https://github.com/dotnet/runti

PowerShell DSC(二)拆分配置信息

PowerShell DSC的配置文件支持"分离"的格式,这是什么意思呢?好比说企业有一套合规性要求,这套要求无论是对开发测试环境还是生产环境都是一致的,但是显然开发测试与生产环境的规模大小以及硬件配置等等是不一样的,这也就导致了在DSC中定义的内容可以分为"What"和"Where",即管理员要做什么和在哪做. ###################################################################

用VS Code体验调试.NET Core 2.0 Preview (传统三层架构)

准备工作 VS Code下载地址:https://vscode.cdn.azure.cn/stable/379d2efb5539b09112c793d3d9a413017d736f89/VSCodeSetup-ia32-1.13.1.exe .NET Core 2.0 Preview下载地址:https://download.microsoft.com/download/6/1/B/61B3E81F-5509-48D2-BB4F-5189E23CD29A/dotnet-sdk-2.0.0-pre

在CentOS 7.2下安装Hyperledger fabric 1.0.0 preview版本的solo模式

在CentOS 7.2下安装Hyperledger fabric 1.0.0 preview版本的solo模式 一. 安装centos和docker 等组件 A. 安装centos x86-64 Minimal(IP:192.168.2.10) 内核版本需要3.10 以上.centos 7 完全支持. 查看内核信息 $ uname -a Linux localhost.localdomain 3.10.0-514.6.1.el7.x86_64 B. 安装docker, 版本1.12.5(略过)

Android Studio 2.0 Preview发布,附下载地址,支持即时运行和GPU Profiler

Android Studio 2.0 Preview 发布,此版本最重要的两个更新是:即时运行和 GPU Profiler. 即时运行:更快的构建和部署:Settings/Preferences > Build > Execution > Deployment > Instant Run GPU Profiler 下载: Windows: https://dl.google.com/dl/android/studio/ide-zips/2.0.0.0/android-studio-

asp.net core 1.1 项目升级至 asp.net core 2.0 preview 2

这两天把一个 asp.net core 1.1 的项目迁移到了 asp.net core 2.0 preview 2 ,在这篇随笔中记录一下. 如果项目在有 global.json 文件,需要删除或修改为 .net 2.0 preview 2 的 sdk 版本号. 对于类库项目的 .csproj,需要把 TagetFramework 改为 netstandard2.0 ,比如 <PropertyGroup> <TargetFramework>netstandard1.6</T

.NET Core 3.0 Preview 5 亮点之一:发布单文件可执行程序

在阅读 Announcing .NET Core 3.0 Preview 5 时发现了 .NET Core 3.0 Preview 5 的一个新特性 —— Publishing Single EXEs ,可以通过 dotnet publish 命令将整个 .net core 应用发布为一个可执行文件.一个期待很久的特性,终于随着 .NET Core 3.0 Preview 5 来了,赶紧体验一下. 用 dotnet new mvc --no-https 创建一个 asp.net core 应用,