Tuesday, August 4, 2020

Setup a Pull Server

HTTP Pull Server Setup:
----
  1. Windows 2012 R2 VM
  2. IIS
  3. xPSDesiredStateConfiguration
  4. Windows 10 client machine


Copy DSCPullServer.ps1,New-PullServer.ps1 in the same folder and run New-PullServer.ps1




#DSCPullServer.ps1
param
(
[Parameter(Mandatory=$false)]
[String] $NodeName = 'localhost',

[Parameter(Mandatory)]
[String] $Key
)
Configuration PullServerConfiguration
{
Import-DSCResource -ModuleName xPSDesiredStateConfiguration
Node $NodeName
{
LocalConfigurationManager
{
ConfigurationMode = 'ApplyAndAutoCorrect'
RefreshMode = 'Push'
RebootNodeifNeeded = $true
}
WindowsFeature DSCServiceFeature
{
Ensure = 'Present';
Name = 'DSC-Service'
}
xDscWebService PullServer
{
Ensure = 'Present';
EndpointName = 'PullServer';
Port = 80;
            PhysicalPath             = "$env:SystemDrive\inetpub\PullServer";
            CertificateThumbPrint    = 'AllowUnencryptedTraffic';
            ModulePath               = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules";
            ConfigurationPath        = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration";
            State                    = 'Started'
            DependsOn                = '[WindowsFeature]DSCServiceFeature'        
            UseSecurityBestPractices = $false                 
        }
        File RegistrationKeyFile
        {
            Ensure          = 'Present'
            Type            = 'File'
            DestinationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\RegistrationKeys.txt"
            Contents        = $Key
        }
    }
}

PullServerConfiguration


#New-PullServer.ps1
#--------------
$ErrorActionPreference = 'Stop'
if((Get-ExecutionPolicy) -eq 'Restricted')
{
throw 'Execution policy should be set atleast to RemoteSigned..'
}
if(-not(Test-WSMan -ErrorAction SilentlyContinue))
{
set-WSManQuickConfig -Force
}
if(-not(Get-Module -Name PackageManagement -ListAvailable))
{
throw 'PackageManagement module should be installed to proceed'
}

if(-not(Get-Module -Name xPSDesiredStateConfiguration -ListAvailable))
{
Install-Module -Name xPSDesiredStateConfiguration -Confirm:$false -Verbose
}

#Use [Guid]::NewGuid() | select -ExpandProperty Guid to generate a new key and paste the key here
$registrationKey = 'c944ce11-0ffe-467b-bb22-fd1cd2fd76k7'

.\DSCPullServer.ps1 -NodeName 'localhost' -Key $registrationKey

Set-DscLocalConfigurationManager -Path .\PullServerConfiguration -Verbose
Start-DscConfiguration .\PullServerConfiguration -Verbose -Force


Get-DscLocalConfigurationManager -->configs applied on a machine
And in the ISS, there is a PullServer website created.

Open port 80 on the VM with the firewall to access the IIS website hosted.

No comments:

Post a Comment