Slide 1

Slide 1 text

[email protected] @glennsarti

Slide 2

Slide 2 text

Me • Senior Software Engineer at Puppet Specialising in Windows • 15 years in Desktop Engineering and IT Navy, Government, Mining, Finance, Corporate • DevOps advocate @glennsarti

Slide 3

Slide 3 text

1. Simple developer tools Day to day helpful things 2. PS Module for VM Pooler Using the VM Pooler API and a WPF GUI 3. The Powershell Module for Puppet A story of next level shenanigans @glennsarti

Slide 4

Slide 4 text

Simple developer tools @glennsarti

Slide 5

Slide 5 text

Demo time? @glennsarti

Slide 6

Slide 6 text

PS Module for VM Pooler @glennsarti

Slide 7

Slide 7 text

What is VM Pooler? “Provide configurable 'pools' of instantly available (running) virtual machines” @glennsarti

Slide 8

Slide 8 text

@glennsarti

Slide 9

Slide 9 text

It has a REST API so … Invoke-RESTMethod time! @glennsarti

Slide 10

Slide 10 text

But where’s the demo?

Slide 11

Slide 11 text

The PowerShell Module for Puppet … @glennsarti

Slide 12

Slide 12 text

… Next level shenanigans @glennsarti

Slide 13

Slide 13 text

@glennsarti

Slide 14

Slide 14 text

v1.0.6 @glennsarti

Slide 15

Slide 15 text

exec { 'Delete thing': command => 'Remove-Item C:\first.txt', onlyif => 'Test-Path C:\first.txt', provider => powershell, } exec { 'Create thing': command => 'New-Item C:\2nd.txt', unless => 'Test-Path C:\2nd.txt', provider => powershell, } @glennsarti

Slide 16

Slide 16 text

@glennsarti EXEC powershell.exe powershell.exe powershell.exe powershell.exe EXEC

Slide 17

Slide 17 text

Benefits & Problems @glennsarti

Slide 18

Slide 18 text

v2.0.0 @glennsarti

Slide 19

Slide 19 text

@glennsarti EXEC powershell.exe EXEC RS+ RS+ RS+ RS+

Slide 20

Slide 20 text

Benefits @glennsarti

Slide 21

Slide 21 text

v2.0.2 @glennsarti

Slide 22

Slide 22 text

@glennsarti EXEC powershell.exe EXEC RS+ RS+ RS+ RS+

Slide 23

Slide 23 text

@glennsarti EXEC powershell.exe (+) EXEC RS RS RS RS

Slide 24

Slide 24 text

Benefits @glennsarti

Slide 25

Slide 25 text

… on the 4th August 2016 @glennsarti

Slide 26

Slide 26 text

(MODULES-3690) Powershell module hangs on latest Powershell (5.1.14394.1000) @glennsarti

Slide 27

Slide 27 text

@glennsarti PowerShell GH Issue #2068 (Curly) PowerShell GH Issue #2071 (STDIN)

Slide 28

Slide 28 text

v2.1.0 @glennsarti

Slide 29

Slide 29 text

puppet @glennsarti EXEC powershell.exe (+) EXEC RS RS RS RS Named Pipes

Slide 30

Slide 30 text

Benefits & Problems @glennsarti

Slide 31

Slide 31 text

v2.x.0 (In progress) @glennsarti

Slide 32

Slide 32 text

puppet @glennsarti EXEC powershell.exe (+) EXEC RS RS RS RS Named Pipes

Slide 33

Slide 33 text

puppet @glennsarti EXEC Powershell Core EXEC RS RS RS RS Pipes/Sockets

Slide 34

Slide 34 text

Benefits & Problems @glennsarti

Slide 35

Slide 35 text

@glennsarti MODULES-3945 https://tickets.puppetlabs.com/browse/MODULES-3945

Slide 36

Slide 36 text

@glennsarti Require a fix in Dotnet Core CLR Add-Type reference assembly bug https://github.com/PowerShell/PowerShell/issues/1616

Slide 37

Slide 37 text

@glennsarti PowerShell needs to build with later Dotnet Core version https://github.com/PowerShell/PowerShell/pull/3398

Slide 38

Slide 38 text

@glennsarti Unable to determine CLR version within PowerShell https://github.com/PowerShell/PowerShell/issues/1984

Slide 39

Slide 39 text

@glennsarti Dotnet Core missing support for Unix Domain Sockets Can’t pass in a domain socket name https://github.com/dotnet/corefx/commit/fcc5cc9d78

Slide 40

Slide 40 text

@glennsarti Loopback behaviour IP4 vs IP6

Slide 41

Slide 41 text

v2.2.0 (In progress) @glennsarti

Slide 42

Slide 42 text

puppet @glennsarti EXEC powershell.exe EXEC /usr/bin/powershell /usr/bin/powershell /usr/bin/powershell /usr/bin/powershell POSIX Windows

Slide 43

Slide 43 text

Benefits & Problems @glennsarti

Slide 44

Slide 44 text

Demo?

Slide 45

Slide 45 text

https://github.com/puppetlabs/puppetlabs-powershell @glennsarti http://glennsarti.github.io/ https://speakerdeck.com/glennsarti All images are copyright of their respective owners