Updated labo-4.txt

kenvb authored
revision bbcd9249c20e706b6df5323252ed571c41afdca9
beginner-labos/labo-4
# Labo 4: Een pull server-, en client configureren in een AD omgeving

Configuraties pushen is wel leuk, maar het is leuker om alle servers te laten verwijzen naar 1 server waar ze hun configs kunnen komen binnenhalen. We configureren een simpele pull server en laten onze 2de server vanaf nu zijn eigen configuraties binnenhalen.

# Labo 4a: Een pull server configureren in een AD omgeving
In deel a configureren we de server.

## Benodigdheden

- 1 x DC Windows 2012R2 met WMF 5.0 (en de resource kit wave 10 geïnstalleerd).
- 1x Server 2012R2 met WMF 5.0

##
Doe

Onze pull server kunnen we heel omslachtig configureren, maar er zijn dsc resources die het meeste voor ons doen. Dus maken we daar ook gebruik van.
We volgen grotendeels deze handleiding: https://www.penflip.com/powershellorg/the-dsc-book/blob/master/configuring-pull-servers.txt . Onze configuratie staat iets verder.
Vanwege problemen met de oorspronkelijke XPsDesiredStateConfiguration, hebben we de meest recente (30/05/2016) gebruikt. Hier te vinden: https://github.com/PowerShell/xPSDesiredStateConfiguration
Mochten er nog problemen zijn, installeer dan volgende Windows Update: Windows8.1-KB2883200-x64
Hieronder is de gebruikte code:
```
configuration CreatePullServer
{
param
(
[string[]]$ComputerName = 'localhost'
)

Import-DSCResource -ModuleName xPSDesiredStateConfiguration

Node $ComputerName
{
WindowsFeature DSCServiceFeature
{
Ensure = "Present"
Name = "DSC-Service"
}

xDscWebService PSDSCPullServer
{
Ensure = "Present"
EndpointName = "PSDSCPullServer"
Port = 8080
PhysicalPath = "$env:SystemDrive\inetpub\wwwroot\PSDSCPullServer"
CertificateThumbPrint = "AllowUnencryptedTraffic"
ModulePath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules"
ConfigurationPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration"
State = "Started"
DependsOn = "[WindowsFeature]DSCServiceFeature"
}

}}

CreatePullServer -outputpath c:\pullserver
```
Onze .mof file wordt bewaard in de c:\pullserver folder en dus voeren we deze uit.
```
Start-DscConfiguration C:\pullserver –wait –force -verbose
```
Dankzij –wait -verbose kunnen we de hele configuratie meevolgen.
Om te controleren of alles werkt, surf naar http://naamvanjeserverDC:8080/PSDSCPullServer.svc . Je zou dan de inhoud van het bestand moeten kunnen lezen.
Labo 4b: Een dhcp server zijn configuratie laten “pullen”.
Nu we in labo 4a een pull-server hebben gecreëerd gaan we onze dhcp server zijn config laten overhalen. Zoals je misschien reeds gezien hebt, gebruiken we een http-server, de configs zijn dus in cleartext. Goed voor een labo omgeving en niet aan te raden voor productie.
We gaan een server configureren als client van onze pull-server. Hiervoor moeten we de LCM eerst goed instellen en ook een GUID genereren. Nu we een pullserver gebruiken, worden GUIDS en niet meer de hostnames gebruikt voor configuratiebestandsnamen.
Benodigdheden

• 1 x DC Windows 2012R2 met WMF 5.0 (en de resource kit wave 10 geïnstalleerd).
o Labo 4a hebben uitgevoerd.
• 1x Server 2012R2 met WMF 5.0
Ons voorbeeld is gebaseerd op de LCM config met een configurationid: https://msdn.microsoft.com/en-us/powershell/dsc/pullclient
Doe
We creëren eerst een guid, op een simpele manier. We zouden dit ook kunnen automatiseren in ons LCM config script.
New-Guid

Nu maken we onze LCM config en gebruiken de zojuist gegenereerde guid voor de instelling “ConfigurationID” en verwijzen we de serverURL naar de correcte locatie.
```
[DSCLocalConfigurationManager()]
configuration PullClientConfigID
{
Node dhcp
{
Settings
{
RefreshMode = 'Pull'
ConfigurationID = '4f486303-6d66-4656-a3e5-9a443b7216e4'
RefreshFrequencyMins = 30
RebootNodeIfNeeded = $true

}
ConfigurationRepositoryWeb DC-PullSrv
{
ServerURL = 'http://dc:8080/PSDSCPullServer.svc'
AllowUnsecureConnection = $true
}
}
}
PullClientConfigID
```
Met ons reeds gekend cmdlet, starten we de configuratie van de LCM van onze pull-client. Er is wel 1 groot verschil: ditmaal doen we het remote.
```
Set-DscLocalConfigurationManager -Path C:\PullClientConfigID -ComputerName dhcp
```
Met onderstaand cmdlet kunnen we nagaan of onze instellingen doorgevoerd zijn.
```
Get-DscLocalConfigurationManager -CimSession dhcp
```
Vervolgens maken we een nieuwe dhcp scope aan met onze xdhcpserver resource, zoals in labo 3. Creëer hiervan het .mof bestand.
Eerst gaan we het “hostname.mof” bestand omzetten naar ons “guid.mof” bestand. Dit is de eerder aangemaakte guid van dit labo.
```
Copy-Item C:\DSCDHCP2\dhcp.mof C:\DSCDHCP2\4f486303-6d66-4656-a3e5-9a443b7216e4.mof
```
We moeten ook een checksum maken van dit nieuw aangemaakte bestand. Deze checksum wordt in een “.checksum” bestand bewaard en moet in dezelfde folder komen als het configuratiebestand.
```
New-DscChecksum C:\DSCDHCP2\4f486303-6d66-4656-a3e5-9a443b7216e4.mof
```
Vervolgens kopieren we de 2 bestanden naar de dscresource folder
```
Copy-Item C:\DSCDHCP2\4f486303-6d66-4656-a3e5-9a443b7216e4*.* 'C:\Program Files\WindowsPowerShell\DscService\Configuration' -Verbose
```
Vermits er slechts elke 30 minuten wordt gecontroleerd of het mof-bestand geupdate is, forceren we een update van onze kant. Vanop onze DC, voeren we het volgende cmlet uit.
```
Update-DscConfiguration -ComputerName dhcp
```