Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Types, speed and migration
Search
Daniele Sluijters
February 05, 2016
Technology
0
52
Types, speed and migration
An introduction to Puppet 4 and how to upgrade given at Puppet Camp Amsterdam 2016.
Daniele Sluijters
February 05, 2016
Tweet
Share
Other Decks in Technology
See All in Technology
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
Greatest Disaster Hits in Web Performance
guaca
0
220
Bedrock PolicyでAmazon Bedrock Guardrails利用を強制してみた
yuu551
0
220
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
220
20260204_Midosuji_Tech
takuyay0ne
1
150
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
180
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
110
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
130
GitLab Duo Agent Platform × AGENTS.md で実現するSpec-Driven Development / GitLab Duo Agent Platform × AGENTS.md
n11sh1
0
130
ZOZOにおけるAI活用の現在 ~開発組織全体での取り組みと試行錯誤~
zozotech
PRO
5
5.3k
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
2.2k
Featured
See All Featured
Odyssey Design
rkendrick25
PRO
1
490
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
Amusing Abliteration
ianozsvald
0
100
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
180
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
190
Between Models and Reality
mayunak
1
190
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
49
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Transcript
Types, speed and migration An introduction to Puppet 4 and
how to upgrade.
I am that guy ‣Daenney ‣Puppet for ~5 years ‣puppetlabs/apt
‣pypuppetdb & Puppetboard ‣“You broke the tests” ‣Vox Pupuli
Vox Pupuli 60 Modules & tooling 50 Puppeteers Join the
revolution!
Types
Puppet 0.24 - 3.8 It’s whatever I feel like.
notice(md5("240610708") == md5("QNKCDZO")) md5('QNKCDZO'): 0e830400451993494058024219903391 md5('240610708'): 0e462097431906509019562988736854
Puppet 4 It’s exactly what it is supposed to be.
Untyped class parameters Are of type "Any"
class a ( $maven_version = [] ) { notice($maven_version) }
class { 'a': maven_version => '1.0.3', } Notice: Scope(Class[A]): 1.0.3
Typed class parameters
class a ( Array $maven_version = [] ) { notice($maven_version)
} class { 'a': maven_version => '1.0.3', } Error: Expected parameter 'maven_version' of 'Class[A]' to have type Array[Data], got String.
Variables Are typed to their value
class a { $var = {} case $var { Hash:
{ notice('a hash')} default: { notice('not a hash')} } } Notice: Scope(Class[A]): a hash
$array_of_things.each | Integer $index, Variant[String, Hash] $value | { …
}
case $magic_thingy { Undef: { $_magic_thingy = [] } Array:
{ $_magic_thingy = $_magic_thingy } Hash: { $_magic_thingy = [$_magic_thingy] } String: { $_magic_thingy = [$_magic_thingy] } default: { fail('magic_thingy can only be: String, Array, Hash or unset') } }
Complex Types
Struct[{ policy => Enum[changed, always, daily, weekly], timeout => Optional[Integer],
]} $update = { 'policy' => 'changed' }
Splat
$p_opts = { 'ensure' => 'latest', } package { 'fish':
* => $p_opts, require => Apt::Source['fish'], }
Docs https://docs.puppetlabs.com/puppet/ 4.3/reference/lang_data.html
Speed Comes in two forms
Development speed Early, accurate feedback.
Compilation speed 15 - 40% faster since 4.2.0
Staying compatible with 3 and 4 is frustrating.
This is how we did it. With >10k nodes.
Step 1: breathe
Step 2: get to 3.8
Step 2.5: upgrade modules Vox Pupuli and Puppetlabs modules Just
Work™
Step 3: future parser Do not enable this on Puppet
< 3.7.4
http://entroz.deviantart.com/art/You-Shall-Not-Pass-330127651
Step 4: upgrade to 4
Step 5: …
https://flic.kr/p/7h9HWP
Spin up a new master Point agents to the new
master and babysit them.
Pre-compile and compare catalogs Catalog Preview: http://is.gd/mod_catalog_preview Puppet Catalog differ:
http://is.gd/catalog_diff Puppet Catalog diff viewer: http://is.gd/catalog_diff_viewer
We did it in… 1 — 2 weeks of prep
1 week of rollout 2 — 3 days of cleanup 0 production incidents
But… we cheated Migrated to future parser over a year
go :-).
Q? Maybe A.