From 88bfb032232ffd2643b05ef49cee8a20fe58e9a6 Mon Sep 17 00:00:00 2001 From: "olivier.miossec" Date: Thu, 3 Oct 2019 00:22:45 +0200 Subject: [PATCH 1/3] ADD Exemples --- doc/exemple/README.md | 84 +++++++++++++++++++++++++++ doc/exemple/docker/dockerfile | 12 ++++ doc/exemple/docker/installmodule.ps1 | 5 ++ doc/exemple/docker/webserver.ps1 | 52 +++++++++++++++++ doc/exemple/media/docker.PNG | Bin 0 -> 66124 bytes doc/exemple/webserverinstall.ps1 | 35 +++++++++++ 6 files changed, 188 insertions(+) create mode 100644 doc/exemple/README.md create mode 100644 doc/exemple/docker/dockerfile create mode 100644 doc/exemple/docker/installmodule.ps1 create mode 100644 doc/exemple/docker/webserver.ps1 create mode 100644 doc/exemple/media/docker.PNG create mode 100644 doc/exemple/webserverinstall.ps1 diff --git a/doc/exemple/README.md b/doc/exemple/README.md new file mode 100644 index 0000000..90d81d2 --- /dev/null +++ b/doc/exemple/README.md @@ -0,0 +1,84 @@ +# Exemples + +This section include exemples on how you can use Requirements + +## Web Server + +This exemple show how to set up IIS and SSL binding with a selfsigned certificat on Windows 2016/2019 server using PowerShell 5.1. + +To perform the operation you can simply use .\webserverinstall.ps1 as administrator + +You will need to install the Requirements module first. + +```powershell +install-module -name Requirements -Scope CurrentUser +``` + +```powershell +#Requires -RunAsAdministrator + +import-module -name Requirements + +$Requirement = @( + + @{ + Name = "WebServer" + Describe = "Web Server feature is present in the system" + Test = { (Get-WindowsFeature -Name web-server -ErrorAction SilentlyContinue).installed } + Set = { Add-WindowsFeature Web-Server | Out-Null; Start-Sleep 1 } + }, + @{ + Name = "Localcert" + Describe = "Create a selfsigned certificat for intranet.mydomain.com" + Test = { + "CN=intranet.mydomain.com" -in (Get-ChildItem "Cert:\LocalMachine\My").Subject + } + Set = { New-SelfSignedCertificate -DnsName intranet.mydomain.com -CertStoreLocation cert:\LocalMachine\My } + DependsOn = "WebServer" + }, + @{ + Name = "LocalhttpsBinding" + Describe = "Create a selfsigned certificat for intranet.mydomain.com" + Test = { + $CertObject = (Get-ChildItem "Cert:\LocalMachine\My" -ErrorAction SilentlyContinue) | where-object subject -eq CN=intranet.mydomain.com + $CertStringHash = $CertObject.GetCertHashString() + + Import-Module IISAdministration + $WebSites = Get-IISServerManager + + ($WebSites.sites["Default web site"].Bindings.GetEnumerator() | where-object protocol -eq https) -ne $null -And ($WebSites.sites["Default web site"].Bindings | where-object protocol -eq https).RawAttributes.certificateHash -eq $CertStringHash + } + Set = { + Import-Module IISAdministration + $CertObject = (Get-ChildItem "Cert:\LocalMachine\My" -ErrorAction SilentlyContinue) | where-object subject -eq CN=intranet.mydomain.com + $Certhash = $CertObject.GetCertHash() + + $WebSites = Get-IISServerManager + if ($WebSites.Sites["Default Web Site"].Bindings.Count -eq 2 ) { + $WebSites.Sites["Default Web Site"].Bindings.RemoveAt(1) + } + $WebSites.Sites["Default Web Site"].Bindings.Add("*:443:", $Certhash, "My", "0") + + $WebSites.CommitChanges() + } + DependsOn = "WebServer","Localcert" + } +) + + +$Requirement | Invoke-Requirement | format-table +``` + +## Web Server in Docker + +the Requirements module work also in a Windows container. + +To Build it. + +``` +docker build -t webserver:1 . +``` + +It produce: + + ![Docker Output](media/docker.PNG) diff --git a/doc/exemple/docker/dockerfile b/doc/exemple/docker/dockerfile new file mode 100644 index 0000000..05c337e --- /dev/null +++ b/doc/exemple/docker/dockerfile @@ -0,0 +1,12 @@ +FROM mcr.microsoft.com/windows/servercore:ltsc2019 AS buildPowerShellCore + +SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] + + +COPY installmodule.ps1 /installmodule.ps1 + +RUN powershell .\installmodule.ps1 + +COPY webserver.ps1 /webserver.ps1 + +RUN powershell .\webserver.ps1 \ No newline at end of file diff --git a/doc/exemple/docker/installmodule.ps1 b/doc/exemple/docker/installmodule.ps1 new file mode 100644 index 0000000..b802484 --- /dev/null +++ b/doc/exemple/docker/installmodule.ps1 @@ -0,0 +1,5 @@ +Get-PackageProvider -Name Nuget -ForceBootstrap | Out-Null +Set-PSRepository -Name PSGallery -InstallationPolicy Trusted + + +install-module -name Requirements -Force \ No newline at end of file diff --git a/doc/exemple/docker/webserver.ps1 b/doc/exemple/docker/webserver.ps1 new file mode 100644 index 0000000..f659993 --- /dev/null +++ b/doc/exemple/docker/webserver.ps1 @@ -0,0 +1,52 @@ +import-module -name Requirements + + +$Requirement = @( + + @{ + Name = "WebServer" + Describe = "Web Server feature is present in the system" + Test = { (Get-WindowsFeature -Name web-server -ErrorAction SilentlyContinue).installed } + Set = { Add-WindowsFeature Web-Server | Out-Null; Start-Sleep 1 } + }, + @{ + Name = "Localcert" + Describe = "Create a selfsigned certificat for intranet.mydomain.com" + Test = { + "CN=intranet.mydomain.com" -in (Get-ChildItem "Cert:\LocalMachine\My").Subject + } + Set = { New-SelfSignedCertificate -DnsName intranet.mydomain.com -CertStoreLocation cert:\LocalMachine\My } + DependsOn = "WebServer" + }, + @{ + Name = "LocalhttpsBinding" + Describe = "Create a selfsigned certificat for intranet.mydomain.com" + Test = { + + $CertObject = (Get-ChildItem "Cert:\LocalMachine\My" -ErrorAction SilentlyContinue) | where-object subject -eq CN=intranet.mydomain.com + $CertStringHash = $CertObject.GetCertHashString() + + Import-Module IISAdministration + $WebSites = Get-IISServerManager + + ($WebSites.sites["Default web site"].Bindings.GetEnumerator() | where-object protocol -eq https) -ne $null -And ($WebSites.sites["Default web site"].Bindings | where-object protocol -eq https).RawAttributes.certificateHash -eq $CertStringHash + } + Set = { + Import-Module IISAdministration + $CertObject = (Get-ChildItem "Cert:\LocalMachine\My" -ErrorAction SilentlyContinue) | where-object subject -eq CN=intranet.mydomain.com + $Certhash = $CertObject.GetCertHash() + + $WebSites = Get-IISServerManager + if ($WebSites.Sites["Default Web Site"].Bindings.Count -eq 2 ) { + $WebSites.Sites["Default Web Site"].Bindings.RemoveAt(1) + } + $WebSites.Sites["Default Web Site"].Bindings.Add("*:443:", $Certhash, "My", "0") + + $WebSites.CommitChanges() + } + DependsOn = "WebServer","Localcert" + } +) + + +$Requirement | Invoke-Requirement | format-table diff --git a/doc/exemple/media/docker.PNG b/doc/exemple/media/docker.PNG new file mode 100644 index 0000000000000000000000000000000000000000..36c11e4c087d0557a2f7ae6dad0430dc97e7193f GIT binary patch literal 66124 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 b74esBw>?x5)D;^_QJiN^UU0zM``!8v6K20R literal 0 HcmV?d00001 diff --git a/doc/exemple/webserverinstall.ps1 b/doc/exemple/webserverinstall.ps1 new file mode 100644 index 0000000..7aa78f8 --- /dev/null +++ b/doc/exemple/webserverinstall.ps1 @@ -0,0 +1,35 @@ +import-module -name Requirements + + + +$Requirement = @( + + @{ + Name = "WebServer" + Describe = "Web Server feature is present in the system" + Test = { (Get-WindowsFeature -Name web-server -ErrorAction SilentlyContinue).installed } + Set = { Add-WindowsFeature Web-Server | Out-Null; Start-Sleep 1 } + }, + @{ + Name = "Localcert" + Describe = "Create a selfsigned certificat for internal.mydomain.com" + Test = { + "CN=internal.mydomain.com" -in (Get-ChildItem "Cert:\LocalMachine\My").Subject + } + Set = { New-SelfSignedCertificate -DnsName internal.mydomain.com -CertStoreLocation cert:\LocalMachine\My } + DependsOn = "WebServer" + }, + @{ + Name = "LocalWebSite" + Describe = "Create a web site binding with the certificat for internal.mydomain.com" + Test = { + Import-Module IISAdministration + $CertObject = (Get-ChildItem "Cert:\LocalMachine\My") | where-object subject -eq CN=internal.mydomain.com + + } + Set = { $mySystem.Add(1) | Out-Null; Start-Sleep 1 } + DependsOn = "WebServer","Localcert" + } +) + +$requirements | Invoke-Requirement \ No newline at end of file From 2656c7658de474c93d00c1cf309bc60753a6e704 Mon Sep 17 00:00:00 2001 From: "olivier.miossec" Date: Thu, 3 Oct 2019 00:23:16 +0200 Subject: [PATCH 2/3] correction to examples --- doc/exemple/webserverinstall.ps1 | 35 -------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 doc/exemple/webserverinstall.ps1 diff --git a/doc/exemple/webserverinstall.ps1 b/doc/exemple/webserverinstall.ps1 deleted file mode 100644 index 7aa78f8..0000000 --- a/doc/exemple/webserverinstall.ps1 +++ /dev/null @@ -1,35 +0,0 @@ -import-module -name Requirements - - - -$Requirement = @( - - @{ - Name = "WebServer" - Describe = "Web Server feature is present in the system" - Test = { (Get-WindowsFeature -Name web-server -ErrorAction SilentlyContinue).installed } - Set = { Add-WindowsFeature Web-Server | Out-Null; Start-Sleep 1 } - }, - @{ - Name = "Localcert" - Describe = "Create a selfsigned certificat for internal.mydomain.com" - Test = { - "CN=internal.mydomain.com" -in (Get-ChildItem "Cert:\LocalMachine\My").Subject - } - Set = { New-SelfSignedCertificate -DnsName internal.mydomain.com -CertStoreLocation cert:\LocalMachine\My } - DependsOn = "WebServer" - }, - @{ - Name = "LocalWebSite" - Describe = "Create a web site binding with the certificat for internal.mydomain.com" - Test = { - Import-Module IISAdministration - $CertObject = (Get-ChildItem "Cert:\LocalMachine\My") | where-object subject -eq CN=internal.mydomain.com - - } - Set = { $mySystem.Add(1) | Out-Null; Start-Sleep 1 } - DependsOn = "WebServer","Localcert" - } -) - -$requirements | Invoke-Requirement \ No newline at end of file From c5bc9365fbb18f38d4f259d8bf8dedd3917e7fff Mon Sep 17 00:00:00 2001 From: "olivier.miossec" Date: Thu, 3 Oct 2019 00:28:45 +0200 Subject: [PATCH 3/3] Spelling in exaples sections --- doc/{exemple => examples}/README.md | 6 +++--- doc/{exemple => examples}/docker/dockerfile | 0 doc/{exemple => examples}/docker/installmodule.ps1 | 0 doc/{exemple => examples}/docker/webserver.ps1 | 0 doc/{exemple => examples}/media/docker.PNG | Bin 5 files changed, 3 insertions(+), 3 deletions(-) rename doc/{exemple => examples}/README.md (95%) rename doc/{exemple => examples}/docker/dockerfile (100%) rename doc/{exemple => examples}/docker/installmodule.ps1 (100%) rename doc/{exemple => examples}/docker/webserver.ps1 (100%) rename doc/{exemple => examples}/media/docker.PNG (100%) diff --git a/doc/exemple/README.md b/doc/examples/README.md similarity index 95% rename from doc/exemple/README.md rename to doc/examples/README.md index 90d81d2..a2f7189 100644 --- a/doc/exemple/README.md +++ b/doc/examples/README.md @@ -1,10 +1,10 @@ -# Exemples +# Examples -This section include exemples on how you can use Requirements +This section include examples on how you can use Requirements ## Web Server -This exemple show how to set up IIS and SSL binding with a selfsigned certificat on Windows 2016/2019 server using PowerShell 5.1. +This example show how to set up IIS and SSL binding with a selfsigned certificat on Windows 2016/2019 server using PowerShell 5.1. To perform the operation you can simply use .\webserverinstall.ps1 as administrator diff --git a/doc/exemple/docker/dockerfile b/doc/examples/docker/dockerfile similarity index 100% rename from doc/exemple/docker/dockerfile rename to doc/examples/docker/dockerfile diff --git a/doc/exemple/docker/installmodule.ps1 b/doc/examples/docker/installmodule.ps1 similarity index 100% rename from doc/exemple/docker/installmodule.ps1 rename to doc/examples/docker/installmodule.ps1 diff --git a/doc/exemple/docker/webserver.ps1 b/doc/examples/docker/webserver.ps1 similarity index 100% rename from doc/exemple/docker/webserver.ps1 rename to doc/examples/docker/webserver.ps1 diff --git a/doc/exemple/media/docker.PNG b/doc/examples/media/docker.PNG similarity index 100% rename from doc/exemple/media/docker.PNG rename to doc/examples/media/docker.PNG