Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Managing Windows with Puppet
Search
Liam Bennett
September 07, 2015
Technology
1.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Managing Windows with Puppet
Liam Bennett
September 07, 2015
More Decks by Liam Bennett
See All by Liam Bennett
Everything is an orchestration problem
liamjbennett
2
1.7k
Puppet for Services
liamjbennett
0
200
cfgmgmt2015 - Testing with Beaker
liamjbennett
0
35
Testing with Beaker: The story for windows
liamjbennett
0
38
Other Decks in Technology
See All in Technology
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
2.6k
AI時代だからこそ、スケールしないことをやろう
yutashigemura
1
130
2026_devsumi_ozono.pdf
o3
2
350
家のリアーキテクト・リファクタリング
suguruooki
0
110
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
220
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
240
20260912_スクラムにジェネラリストは必要か
ryugen04
0
320
AI時代のAPI品質を支えるガードレール / API Guardrails for API quality in the AI era
yokawasa
1
210
Reactの設計論
uhyo
14
7.9k
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
300
AIで仕事のやり方を変える
matsu7874
3
1k
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
190
Featured
See All Featured
How to make the Groovebox
asonas
2
2.4k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
270
The browser strikes back
jonoalderson
0
1.7k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Leo the Paperboy
mayatellez
9
2.3k
Between Models and Reality
mayunak
4
450
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
820
Paper Plane (Part 1)
katiecoart
PRO
1
11k
The Cult of Friendly URLs
andyhume
79
7k
ラッコキーワード サービス紹介資料
rakko
1
4.8M
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
490
A better future with KSS
kneath
240
18k
Transcript
Managing Windows with Puppet Experiences from the trenches
@liamjbennett
None
None
None
None
Your turn
Not talking about
The puppet tool chain
Powershell
Puppet for all the things
This talk
The basic puppet types for windows The Good … and
some of the new ones
Gotchas for Windows The Bad
Testing on Windows The Ugly
file { 'c:/mysql/my.ini': ensure => 'file', mode => '0660', owner
=> 'mysql', group => 'Administrators', source => 'N:/software/mysql/my.ini', } The Types I Like package { 'Git version 1.8.4': ensure => installed, source => 'N:/software/git-1.8.4.exe', install_options => '0660', } service { 'mysql': ensure => 'running', enable => true, }
exec { 'random script': command =>'cmd.exe /c type c:\path\to\file.txt', }
The Types I Don’t Like user { 'bob': ensure => present, groups => ['Users','Administrators'], password => 'ouch', } schedule_task { 'another task': enable => true, command =>'cmd.exe /c type c:\path\to\file.txt’, trigger => { schedule => daily, } }
windowsfeature { 'Web-WebServer': installsubfeatures => true, } Other useful stuff
registry_key { 'HKLM\System\CurrentControlSet\Services\Puppet': ensure => present, } exec { 'rename-guest': command => '$(SOME_POWERSHELL)', provider => powershell } reboot { 'after': subscribe => Package['SomePackage'] }
Other useful stuff iis::manage_app_pool { 'my_application_pool': enable_32_bit => true, managed_runtime_version
=> 'v4.0' } iis::manage_site { 'www.mysite.com': site_path => 'C:\inetpub\wwwroot\mysite', port => '80', ip_address => '*', host_header => 'www.mysite.com', app_pool => 'my_application_pool', } iis::manage_virtual_application { 'application1': site_name => 'www.mysite.com', site_path => 'C:\inetpub\wwwroot\application1', app_pool => 'my_application_pool', }
The Gotchas
File Paths file { 'c:/path/to/file.txt': } file { 'c:\path\to\file.txt': }
file { "c:\\path\\to\\file.txt": }
file/acl file { 'c:/mysql/my.ini': ensure => 'file', mode => '0660',
owner => 'mysql', group => 'Administrators', source => 'N:/software/mysql/my.ini', } acl { 'c:/mysql/my.ini': permissions => [ { identity => 'Administrator', rights => ['full'] }, { identity => 'Users', rights => ['read','execute'] } ], }
puppetlabs/acl
WOW3264 re-direction C:\Windows\System32\ C:\Windows\SysWOW64\
UAC Manually running puppet in a non- admin context ->
Don’t do this.
WinRM Quotas winrm set winrm/config @{MaxTimeoutms="1800000"} winrm set winrm/config/winrs @{MaxMemoryPerShellMB=""}
Reboots Can’t install a package because of “waiting for reboot”
state
puppetlabs/reboot
WTF Bugs KB2773898 - access denied installing msu KB2918614 -
windows update that broke msi installs KB2842230 - ignores MaxMemoryPerShellMB
Testing
• rspec-puppet • beaker (with winrm) • serverspec • vagrant/packer
• booting 4GB images
Questions? And thanks for listening
@liamjbennett
[email protected]
liamjbennett.me @OpenTableTechUK tech.opentable.co.uk