Updated labo-4.txt

kenvb authored
revision 1cdbfd6c3c746ef29ef1ca03d93155eba36c6bf2
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 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://DC: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. We gebruiken een http-server. De configs zijn dus in cleartext. Dit is een 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).
- 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
```
Noteer deze GUID ergens apart voor toekomstig gebruik.


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. Zorg ervoor dat deze uniek genoeg is (aparte config, unieke scope, unieke scopename). 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. c:\dscdhcp2\ is de folder waarnaar ik mijn bestanden gezet heb.
```
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 dscresourceconfiguration 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
```
Indien alles goed uitgevoerd is, moet er een 2de dhcp scope zijn bijgekomen.