1. Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4Dive into Puppet 4
A new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetizeA new way to puppetize
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
Belgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User GroupBelgian Puppet User Group
September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015September 10, 2015
2. $::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user$::user
Julien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien PivottoJulien Pivotto
• Open-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.euOpen-Source consultant at inuits.eu
• Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011Puppet User since 2011
• Speaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at PuppetcampsSpeaker/attendee at Puppetcamps
• Member of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUGMember of the Belgian PUG
• Puppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributorPuppet core contributor
• Puppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributorPuppet(labs) modules contributor
• @roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie@roidelapluie on irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/githubon irc/twitter/github
5. Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011Puppetmaster since 2011
• PPPPPPPPPPPPPPPPPuppet 2.6/2.7
• RRRRRRRRRRRRRRRRReports stored with activerecord
• PPPPPPPPPPPPPPPPPuppet Dashboard
• NNNNNNNNNNNNNNNNNo hiera
• NNNNNNNNNNNNNNNNNo PuppetDB
6. Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011Puppet 2.7 - June 2011
• RRRRRRRRRRRRRRRRRuby 1.9 support
• AAAAAAAAAAAAAAAAApache 2.0 Licence
• TTTTTTTTTTTTTTTTThe end of "random" catalog order
• SSSSSSSSSSSSSSSSSupport for network devices
• DDDDDDDDDDDDDDDDDeprecation of dynamic variables
7. Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012Puppet 3.0.0 - October 2012
• SSSSSSSSSSSSSSSSSupport for 3rd parties gems
• NNNNNNNNNNNNNNNNNative hiera support
• AAAAAAAAAAAAAAAAAutomatic hiera lookups
• RRRRRRRRRRRRRRRRRemove dynamic scope lookup
• SSSSSSSSSSSSSSSSSemantic versioning
10. The big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big pictureThe big picture
• NNNNNNNNNNNNNNNNNew DSL language
• AAAAAAAAAAAAAAAAAll-in-one Package
• PPPPPPPPPPPPPPPPPuppetserver
11. A new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSLA new DSL
Apache 2.0 License
https://github.com/ke4qqq/puppet-cloudstack
12. Domain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific Language
The goal of the Puppet DSL stays
the same: describe the final state of
your infrastructure.
13. The new DSL gets closer to other
programming languages: types,
iterations, predictive ordering…
16. Puppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.xPuppet 3.x
Notice: Compiled catalog for nitrogen in environment
production in 0.02 seconds
Notice: User
Notice: /Stage[main]/Main/Notify[User]/message: defined
'message ' as 'User '
Notice: Belgian
Notice: /Stage[main]/Main/Notify[Belgian]/message:
defined 'message ' as 'Belgian '
Notice: Group
Notice: /Stage[main]/Main/Notify[Group]/message: defined
'message ' as 'Group '
Notice: Puppet
Notice: /Stage[main]/Main/Notify[Puppet]/message:
defined 'message ' as 'Puppet '
Notice: Finished catalog run in 0.02 seconds
17. Puppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.xPuppet 4.x
Notice: Compiled catalog for nitrogen in environment
production in 0.23 seconds
Notice: Belgian
Notice: /Stage[main]/Main/Notify[Belgian]/message:
defined 'message ' as 'Belgian '
Notice: Puppet
Notice: /Stage[main]/Main/Notify[Puppet]/message:
defined 'message ' as 'Puppet '
Notice: User
Notice: /Stage[main]/Main/Notify[User]/message: defined
'message ' as 'User '
Notice: Group
Notice: /Stage[main]/Main/Notify[Group]/message: defined
'message ' as 'Group '
Notice: Applied catalog in 0.01 seconds
19. Puppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 orderingPuppet 4 ordering
• TTTTTTTTTTTTTTTTTime saver
• """""""""""""""""Hides" complexity
• AAAAAAAAAAAAAAAAAlign with other languages
• SSSSSSSSSSSSSSSSStill supports Require, Notify, …
• """""""""""""""""real" dependencies should still be
explicitely set (e.g cron job only installed if
packages is installed)
20. (Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types(Native) Data Types
Licensed under a Creative Commons Attribution 2.0 License
https://www.flickr.com/photos/ionics/6338281766
21. Data types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not newData types are not new
• PPPPPPPPPPPPPPPPPreviously included in stdlib, 3rd party
module
• ssssssssssssssssstdlib contains functions to convert data
types, check data types
• NNNNNNNNNNNNNNNNNothing in Puppet Core
• DDDDDDDDDDDDDDDDDifficult to check the type of all the
parameters
28. Abstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data TypesAbstract Data Types
Licensed under a Creative Commons Attribution 2.0 License
https://www.flickr.com/photos/webtreatsetc/4666231979
39. Playing with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with typesPlaying with types
Licensed under a Creative Commons Attribution 2.0 License
https://www.flickr.com/photos/jdhancock/7439512656
40. Types in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditionsTypes in conditions
# Comparison
i f $m =~ Boolean {
$manage = $m
} e l s i f $m !~ Enum [ ’ t r u e ’ , ’ f a l s e ’ ] {
f a i l ( ’ Bad v a l u e ’ )
}
41. Types in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statementsTypes in case statements
case $user {
I n t e g e r : { $uid = $user }
Boolean : { $ c r e a t e = $user }
d e f a u l t : { f a i l ( ’ Bad Data Type ’ ) }
}
42. Types in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parametersTypes in parameters
class p r o f i l e _ m y s q l (
Boolean $manage_service,
Enum [ ’ mysql ’ , ’ mariadb ’ ] $service_name,
Optional [ S t r i n g [ 8 ] ] $root_password,
) {
}
43. Type checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checkingType checking
# NOT CORRECT:
S t r i n g $runmode = $ f a c t s [ ’ runmode ’ ]
# Corre ct :
$runmode = a s s e r t _ t y p e ( S t r i n g , $ f a c t s [ ’
runmode ’ ] )
49. Puppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 Function
# http :// puppet−on−the−edge . blogspot . se
Puppet : : Functions . c r e a t e _ f u n c t i o n ( : min ) do
d i s p a t c h : min do
param ’ Numeric ’ , : a
param ’ Numeric ’ , : b
end
def min ( x , y )
x <= y ? x : y
end
end
50. Puppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 FunctionPuppet 4 Function
# http :// puppet−on−the−edge . blogspot . se
Puppet : : Functions . create_function ( : min) do
dispatch : min do
param ’ Numeric ’ , : a
param ’ Numeric ’ , : b
end
dispatch : min_s do
param ’ String ’ , : s1
param ’ String ’ , : s2
end
def min(x , y)
x <= y ? x : y
end
def min_s(x , y)
cmp = (x . downcase <=> y . downcase )
cmp <= 0 ? x : y
end
end
51. Loops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functionsLoops and new built-in functions
Licensed under a Creative Commons Attribution-ShareAlike 2.0 License
https://www.flickr.com/photos/squeaks2569/8114399667
52. Loops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: ArrayLoops: Array
class vh o s t s ( Array [ S t r i n g ] $packages, ) {
$packages . each | S t r i n g $package | {
package {
” vhost−${package} ” :
ensure => p r e s e n t ,
}
}
}
55. with: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scopewith: "private" scope
# ’ p r i v a t e ’ v a r i a b l e s
with ( ’ ldap ’ , ’ s e c r e t ’ ) | $ u s e r , $password | {
f i l e {
’ / etc / s e c r e t s ’ :
content => ” ${user} : $ { s e c r e t } ” ,
}
}
62. EPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templates
f i l e {
’ pt−heartbeat −c o n f i g ’ :
show_diff => f a l s e ,
content => epp ( ’ pth / pth . epp ’ , {
database => $ d a t a b a s e ,
socket => $ s o c k e t ,
u s e r => $ u s e r ,
password => $password,
} ) ,
}
63. EPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templatesEPP templates
<%− |
S t r i n g $database ,
S t r i n g $password ,
S t r i n g $socket ,
S t r i n g $user ,
| −%>
u s e r=<%= $user %>
password=<%= $password %>
socket=<%= $socket %>
database=<%= $database %>
host=l o c a l h o s t
create −t a b l e
70. The case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of FedoraThe case of Fedora
• FFFFFFFFFFFFFFFFFedora 23 ships Puppet 4
• NNNNNNNNNNNNNNNNNOT using the AIO package
• MMMMMMMMMMMMMMMMMight be rebuilt one day for EL
71. Migration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuffMigration and stuff
Licensed under a Creative Commons Attribution-ShareAlike 2.0 License
https://www.flickr.com/photos/photos/26116471@N03/6362329323
74. Update your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clientsUpdate your clients
• hhhhhhhhhhhhhhhhhttps://github.com/puppetlabs/puppetlabs-
puppet_agent
• DDDDDDDDDDDDDDDDDo not forget to edit your cronjobs (change
PATH to /usr/bin:/opt/puppetlabs/bin)
• pppppppppppppppppuppet will be in /opt/puppetlabs/bin
75. Everything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yetEverything is not there yet
• PPPPPPPPPPPPPPPPPuppetboard and Foreman does not work
yet (new PuppetDB API)
• GGGGGGGGGGGGGGGGGood news: Puppetexplorer does (I have not
tested)
77. Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)Good job :-)
• GGGGGGGGGGGGGGGGGood job, Puppetlabs (and community)
• TTTTTTTTTTTTTTTTThe new DSL was a hard work
• IIIIIIIIIIIIIIIIIt works well
• IIIIIIIIIIIIIIIII have seen only minor bugs
• IIIIIIIIIIIIIIIIIt is still a lot backward-compatible (with
clean code…)
• PPPPPPPPPPPPPPPPPlease open-source the toolchain
78. Regarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSLRegarding the new DSL
• AAAAAAAAAAAAAAAAA lot of new powers
• IIIIIIIIIIIIIIIIIt's a language
• TTTTTTTTTTTTTTTTTime to write new recommendations, best
practices
• IIIIIIIIIIIIIIIIIt can look awesome or horrible
• PPPPPPPPPPPPPPPPPuppet lint and code review to the rescue!
79. Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?Is it time to move?
• IIIIIIIIIIIIIIIIIf you have a test environment, yes
• OOOOOOOOOOOOOOOOOtherwise I would still wait for more
bugfixes
• BBBBBBBBBBBBBBBBBut we are already at 4.2.1
• YYYYYYYYYYYYYYYYYou should a least prepare yourself
• IIIIIIIIIIIIIIIII recommend
github.com/theforeman/puppet-puppet to
manage puppet
80. The new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSLThe new DSL
• WWWWWWWWWWWWWWWWWill not be everywhere
• AAAAAAAAAAAAAAAAA lot of stuff could be done with stdlib
• FFFFFFFFFFFFFFFFFirst in roles, profiles, node manifests
• WWWWWWWWWWWWWWWWWaiting for PL to decomission 3.x for the
rest
• MMMMMMMMMMMMMMMMMaybe we will see puppet4-only modules
(but is that what we want?)
81. Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4Puppet 4
• FFFFFFFFFFFFFFFFFull of new features
• NNNNNNNNNNNNNNNNNow has a powerful DSL
• SSSSSSSSSSSSSSSSStays declarative
• IIIIIIIIIIIIIIIIIs more predictive