New Approach: Software
Defined Infrastructure
1. DEFINE 2. SIMULATE
}
Re-usable infrastructure-as-code Before deploying changes
4. REPORT 3. ENFORCE
CURRENT
STATE
DESIRED
STATE
Insight into changes Automatically and reliably
Lifecycle of a Puppet Run
Node
1 Facts
The node sends
normalized data
about itself to the
Puppet Master.
SSL secure 2 Catalog
Puppet uses the Facts to
encryption compile a Catalog that
on all data specifies how the node
transport should be configured.
Report 3
The node
reports back
to Puppet
indicating the
configuration is
complete, which
is visible in the Puppet
Puppet Dashboard. Master 4 Report Collector
(Puppet or 3rd party tool)
Report
can also send data
to third party tools.
Puppet PUPPET FORGE CONTENT MARKETPLACE
Architecture
PUPPET MASTER SERVER
GUI & Admin &
Reporting Content
Workflows Security
PUPPET OPEN SOURCE PLATFORM
PUPPET PUPPET PUPPET
AGENT AGENT AGENT
Web Server Application Server Database Server
Hardware Virtual Machine Cloud
Strong Community
Forum Members Jan 2012 Feb 2013
puppet-users list 3588 5402
puppet-dev list 724 971
ask.puppetlabs.com N/A 383
#puppet 600 980
Repository Jan 2012 Feb 2013
Puppet Forks 236 496
Puppet Watchers 526 1185
Easy to Get Involved
• Help with Documentation
• Ask/Answer questions
• http://ask.puppetlabs.com
• mailing lists
• IRC
• Help with bug triage
• Contribute code
• Contribute modules on the Forge
• Visit https://puppetlabs.com/community to learn
more
GUI for Puppet
Time-based
display for insight
into rate of
change
High level
status for
nodes
Detailed node
status to pinpoint
specific issues
PE Live Management
Choose nodes to
clone to ensure
consistency
Browse for Preview the
managed impact before
nodes in your you clone
infrastructure nodes
VM/Cloud Provisioning
1. Create VM node capacity
using VMware vSphere or AWS
2. Automatically install
the Puppet Agent on new nodes
3. Configure nodes
using existing definitions
VMware vSphere or AWS
Respond quickly to business demands while maintaining
configuration consistency across environments
Puppet 3 Developments
• Removal of dynamic scoping
• Extensions loaded from gems
• Full Ruby 1.9.3 support
• Pluginsync by default
• Data Separation with data binding
• Performance improvements
• Better version numbers
• More platform support
• Code loading improvements
• Even more documentation
Scope
# dynamic scoping is gone
class parent {
$var = "from parent"
include included
}
class included {
notify { $var: } ## NOT GONNA WORK
notify { $parent::var: } ## YUP
}
Builtin Data Binding
class ntp($server = hiera(ntp_server,
‘time.apple.com’)) {
...
}
# can be changed to
class ntp($ntpserver = ‘time.apple.com’) {
...
}
Puppet Armatures (ARM)
• Proposals to enhance / add features to Puppet or
other projects in the Puppet eco-system
• ARM is a process for collecting, reviewing, sorting,
and recording the result of proposals for
enhancements
• Used for work that require 2+ weeks effort, has
significant changes, is in high demand, or contains
changes to Puppet Language / evaluation semantics
• Community-focused process to improve openness
and transparency for Puppet Labs-funded and
contributor efforts
github.com/puppetlabs/armatures
Continuous Release
• Agents in packages, real packages
• MCO does it, so you can make them too
• Continuously built, continuously released
Usability
• Better docs
• More Complete applications
• Out of the box usability
• But still the framework it always was
• Full integration into puppet training
Better Query, More Storage
• PuppetDB 1.1 released
• Enhanced Query API for
facts, subqueries, regular
expressions
• Report Storage
• Report Query in an
experimental API
Razor Present and Future
• Security audits, fixes in the 0.9.0 release
• Not yet ready for prime time
• Help us get it there
• File bugs, contribute to the community