PROJECT
DATE CLIENT01/18/13 PUPPET CAMP SILICONVALLEY
GETTING STARTED W/ PUPPETCHAD METCALF - @METCALFC
INFRASTRUCTURE ENGINEER @ WIBIDATA4 YEARS USING PUPPET - BUILD AND RELEASE - HADOOP/HBASE - INFRASTRUCTURE - OPERATIONS
PUPPET ECOSYSTEMGETTING BIGGER EVERYDAY
LEARNING PUPPET VMSTARTING AS FAST AS YOU CAN DOWNLOAD 580 MEGS
WHICH PUPPET DISTRIBUTIONIT IS A LOT LIKE SUSHI
WHICH PUPPET DISTRIBUTIONYOU CAN ROLL YOUR OWN TO VARYING DEGREES OF SUCCESS
WHICH PUPPET DISTRIBUTIONYOU CAN GO TO YOUR FAVORITE MEGA-MART AND GET SOME PACKAGED AWHILE AGO ALONG WITH SOME FRIED CHICKEN
WHICH PUPPET DISTRIBUTIONOR YOU CAN GO TO AN ACTUAL SUSHI JOINT
PUPPET OPEN SOURCE VS PUPPET ENTERPRISESAME GREAT TASTE
EXTERNAL NODE CLASSIFIERFOREMAN - PUPPET DASHBOARD - PUPPET ENTERPRISE CONSOLE - ROLL YOUR OWN
PUPPETDBSTORECONFIG AND INVENTORY SERVICE STORAGE
HIERAHIERARCHICAL DATABASE - CONFIGURATION DETAILS OUT OF CODE
CONSIDER PROVISIONINGFROM BARE METAL TO PUPPET READY
PROOF OF CONCEPTPROOF OF CONCEPTS NEVER DIE - EVEN IF YOU REALLY WISHED THEY WOULD
Puppet Master PuppetDB ConsoleDashboardForeman
ENC
RazorCobbler
Foreman*
Optional
SCALING PUPPETNO EASY ANSWERS
MODULE TIME?WHEN ARE WE GOING TO DO SOME REAL WORK?
CONFIGURATION AS CODEDOWN TO THE MODULES YOU USE
/etc/puppetlabs/puppet├── modules│ ├── concat│ ├── dhcp│ ├── epel│ ├── hiera│ ├── hiera-puppet│ ├── limits│ ├── mongodb│ ├── mysql│ ├── nodejs│ ├── ntp
PUPPET FORGECLEARING HOUSE FOR MODULES YOU SHOULD BE USING
GITHUBNOT EVERYTHING IS ON THE FORGE... YET.
FORKINGFORK TO EAT NOT TO LIVE - AKA STOP THE FORK
ROLL YOUR OWNDON’T REINVENT THE WHEEL
LEARNING MOREDON’T FORGET IRC #PUPPET - #PUPPET-DEV - MAILING LISTS
class boundary {
require boundary::params require boundary::dependencies
$id = $boundary::params::id $apikey = $boundary::params::apikey $collector = $boundary::params::collector $collector_port = $boundary::params::collector_port
file { '/etc/bprobe/': ensure => directory, mode => '0755', owner => 'root', group => 'root', }
package { 'bprobe': ensure => latest, require => File['/etc/bprobe'], }
PUPPET HAS MORE THEN A DSLSOMETIMES YOU JUST NEED TO WRITE A LITTLE RUBY
class evil { define loop () { notice("${name}") } loop { ['this', 'is', 'evil']:}}
class{"evil":}
$ puppet apply evil.ppnotice: Scope(Evil::Loop[this]): thisnotice: Scope(Evil::Loop[is]): isnotice: Scope(Evil::Loop[evil]): evil
VAGRANTLEARN TO ♥ IT
node_config.vm.provision :puppet do |puppet| puppet.manifests_path = 'provision/manifests' puppet.module_path = 'provision/modules'end
QUESTIONS?YOU CAN FIND ME @METCALFC
Top Related