天天看點

Powershell DSC 5.0 - Pull 模式 (HTTPS)

Powershell DSC 的Pull模式除了SMB以外,還可以使用HTTP或者HTTPS。這兩個配置幾乎一樣,Https需要多配置一個證書。基本流程是配置pull server,配置節點的LCM,配置需要實作的狀态,然後推送測試。

首先,我們需要一個web server的證書。我已經有PKI在域裡了,是以從IIS生成一個證書非常容易。

<a href="http://s3.51cto.com/wyfs02/M02/73/AB/wKiom1YDl__Ql2PKAALSdY0MGS0241.jpg" target="_blank"></a>

生成證書,綁定IIS之後,我需要擷取該證書的指紋以便寫入配置檔案

<a href="http://s3.51cto.com/wyfs02/M02/73/A8/wKioL1YDmAKhkismAADdnb8dkx4361.jpg" target="_blank"></a>

和SMB一樣,我需要下載下傳導入子產品

注意證書指紋的配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

<code>configuration HTTPSPullServer</code>

<code>{</code>

<code>    </code><code># Modules must exist on target pull server</code>

<code>    </code><code>Import-DSCResource</code> <code>-ModuleName xPSDesiredStateConfiguration</code>

<code>    </code><code>Node sydit01</code>

<code>    </code><code>{</code>

<code>        </code><code>WindowsFeature DSCServiceFeature</code>

<code>        </code><code>{</code>

<code>            </code><code>Ensure = </code><code>"Present"</code>

<code>            </code><code>Name   = </code><code>"DSC-Service"</code>

<code>        </code><code>}</code>

<code>        </code><code>WindowsFeature IISConsole {</code>

<code>            </code><code>Name   = </code><code>"Web-Mgmt-Console"</code>

<code>        </code><code>xDscWebService PSDSCPullServer</code>

<code>            </code><code>Ensure                  = </code><code>"Present"</code>

<code>            </code><code>EndpointName            = </code><code>"PSDSCPullServer"</code>

<code>            </code><code>Port                    = 8080</code>

<code>            </code><code>PhysicalPath            = </code><code>"$env:SystemDrive\inetpub\wwwroot\PSDSCPullServer"</code>

<code>            </code><code>CertificateThumbPrint   = </code><code>'56B5DC192DE9AB004AE6FB3C96F7C00684537028'</code>

<code>            </code><code>ModulePath              = </code><code>"$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules"</code>

<code>            </code><code>ConfigurationPath       = </code><code>"$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration"</code>

<code>            </code><code>State                   = </code><code>"Started"</code>

<code>            </code><code>DependsOn               = </code><code>"[WindowsFeature]DSCServiceFeature"</code>

<code>        </code><code>xDscWebService PSDSCComplianceServer</code>

<code>            </code><code>EndpointName            = </code><code>"PSDSCComplianceServer"</code>

<code>            </code><code>Port                    = 9080</code>

<code>            </code><code>PhysicalPath            = </code><code>"$env:SystemDrive\inetpub\wwwroot\PSDSCComplianceServer"</code>

<code>            </code><code>CertificateThumbPrint   = </code><code>"AllowUnencryptedTraffic"</code>

<code>            </code><code>IsComplianceServer      = </code><code>$true</code>

<code>            </code><code>DependsOn               = (</code><code>"[WindowsFeature]DSCServiceFeature"</code><code>,</code><code>"[xDSCWebService]PSDSCPullServer"</code><code>)</code>

<code>    </code><code>}</code>

<code>}</code>

<code># Generate MOF</code>

<code>HTTPSPullServer -OutputPath C:\DSC\HTTPS</code>

生成Pull Server的配置檔案

<a href="http://s3.51cto.com/wyfs02/M00/73/AB/wKiom1YDmACDc9KIAAD5dyBW0vY293.jpg" target="_blank"></a>

推送到指定的HTTPS伺服器上

<a href="http://s3.51cto.com/wyfs02/M00/73/A8/wKioL1YDmAOiKWUmAANfMfVFGlA011.jpg" target="_blank"></a>

推送之後,需要測試一下是否成功

<a href="http://s3.51cto.com/wyfs02/M01/73/AB/wKiom1YDmAHihqrQAABYzziYClw254.jpg" target="_blank"></a>

可以看見已經成功配置了

<a href="http://s3.51cto.com/wyfs02/M00/73/AB/wKiom1YDmALyzvcQAALqKcaZMOs257.jpg" target="_blank"></a>

接下來需要配置節點的LCM檔案

<code>[DSCLocalConfigurationManager()]</code>

<code>Configuration LCM_HTTPSPULL </code>

<code>    </code><code>param</code>

<code>        </code><code>(</code>

<code>            </code><code>[</code><code>Parameter</code><code>(</code><code>Mandatory</code><code>=</code><code>$true</code><code>)]</code>

<code>            </code><code>[string[]]</code><code>$ComputerName</code><code>,</code>

<code>            </code><code>[string]</code><code>$guid</code>

<code>        </code><code>)      </code>

<code>Node </code><code>$ComputerName</code> <code>{</code>

<code>Settings {</code>

<code>AllowModuleOverwrite = </code><code>$True</code>

<code>            </code><code>ConfigurationMode = </code><code>'ApplyAndAutoCorrect'</code>

<code>RefreshMode = </code><code>'Pull'</code>

<code>ConfigurationID = </code><code>$guid</code>

<code>            </code><code>}</code>

<code>            </code><code>ConfigurationRepositoryWeb DSCHTTPS {</code>

<code>       </code> 

<code>                </code><code>ServerURL = </code><code>'https://sydit01.omnicom.com.au:8080/PSDSCPullServer.svc'</code>

<code>                </code><code>CertificateID = </code><code>'56B5DC192DE9AB004AE6FB3C96F7C00684537028'</code>

<code>                </code><code>AllowUnsecureConnection = </code><code>$False</code>

<code># Computer list </code>

<code>$ComputerName</code><code>=</code><code>'sydittest'</code>

<code># Create Guid for the computers</code>

<code>$guid</code><code>=</code><code>[guid]</code><code>::NewGuid()</code>

<code># Create the Computer.Meta.Mof in folder</code>

<code>LCM_HTTPSPULL -ComputerName </code><code>$ComputerName</code> <code>-Guid </code><code>$guid</code> <code>-OutputPath c:\DSC\HTTPS</code>

生成LCM的meta.mof檔案

<a href="http://s3.51cto.com/wyfs02/M01/73/A8/wKioL1YDmAWgwblbAACkKo_tBn8476.jpg" target="_blank"></a>

推送給節點

<a href="http://s3.51cto.com/wyfs02/M02/73/AB/wKiom1YDmAPRXtSzAALwKTJAypo785.jpg" target="_blank"></a>

接下來,配置我們需要實作的狀态,這裡的例子是確定SMTP服務始終不會安裝。

<code>configuration SMTP {</code>

<code>    </code><code>Node HTTPSComputers {</code>

<code>        </code><code>WindowsFeature SMTP{</code>

<code>            </code><code>Name = </code><code>'SMTP-Server'</code>

<code>            </code><code>Ensure = </code><code>'Absent'</code>

<code>SMTP -OutputPath C:\DSC\HTTPS</code>

生成mof檔案

<a href="http://s3.51cto.com/wyfs02/M02/73/A8/wKioL1YDmAehbPpOAAEu7qm_cDY125.jpg" target="_blank"></a>

和SMB一樣,HTTPS Pull Server 也是使用GUID和checksum來校驗的,是以需要改名字,生成配置檔案的校驗碼

<a href="http://s3.51cto.com/wyfs02/M00/73/AB/wKiom1YDmAWz3hPuAAF35kBr-G0481.jpg" target="_blank"></a>

最後來測試一下,首先看看用戶端(節點)已經安裝了SMTP

<a href="http://s3.51cto.com/wyfs02/M00/73/A8/wKioL1YDmAjwGOsaAAC-NdumuNI037.jpg" target="_blank"></a>

更新一下狀态,發現他開始自動解除安裝

<a href="http://s3.51cto.com/wyfs02/M01/73/AB/wKiom1YDmAfDw8a2AAZ6UCvLuRk374.jpg" target="_blank"></a>

再檢視一下,已經成功解除安裝(提示需要重新開機)

<a href="http://s3.51cto.com/wyfs02/M02/73/A8/wKioL1YDmAryu3olAACp3taPY2o094.jpg" target="_blank"></a>

實驗成功。

本文轉自 beanxyz 51CTO部落格,原文連結:http://blog.51cto.com/beanxyz/1697842,如需轉載請自行聯系原作者

繼續閱讀