getting started with puppet - chad metcalf

28
PROJECT DATE CLIENT 01/18/13 PUPPET CAMP SILICON VALLEY GETTING STARTED W/ PUPPET CHAD METCALF - @METCALFC

Upload: puppet-labs

Post on 29-Jun-2015

944 views

Category:

Technology


1 download

DESCRIPTION

Chad Metcalf of Wibidata talks about "Getting Started with Puppet" at Puppet Camp Silicon Valley 2012.

TRANSCRIPT

Page 1: Getting Started With Puppet - Chad Metcalf

PROJECT

DATE CLIENT01/18/13 PUPPET CAMP SILICONVALLEY

GETTING STARTED W/ PUPPETCHAD METCALF - @METCALFC

Page 2: Getting Started With Puppet - Chad Metcalf

INFRASTRUCTURE ENGINEER @ WIBIDATA4 YEARS USING PUPPET - BUILD AND RELEASE - HADOOP/HBASE - INFRASTRUCTURE - OPERATIONS

Page 3: Getting Started With Puppet - Chad Metcalf

PUPPET ECOSYSTEMGETTING BIGGER EVERYDAY

Page 4: Getting Started With Puppet - Chad Metcalf

LEARNING PUPPET VMSTARTING AS FAST AS YOU CAN DOWNLOAD 580 MEGS

Page 5: Getting Started With Puppet - Chad Metcalf

WHICH PUPPET DISTRIBUTIONIT IS A LOT LIKE SUSHI

Page 6: Getting Started With Puppet - Chad Metcalf

WHICH PUPPET DISTRIBUTIONYOU CAN ROLL YOUR OWN TO VARYING DEGREES OF SUCCESS

Page 7: Getting Started With Puppet - Chad Metcalf

WHICH PUPPET DISTRIBUTIONYOU CAN GO TO YOUR FAVORITE MEGA-MART AND GET SOME PACKAGED AWHILE AGO ALONG WITH SOME FRIED CHICKEN

Page 8: Getting Started With Puppet - Chad Metcalf

WHICH PUPPET DISTRIBUTIONOR YOU CAN GO TO AN ACTUAL SUSHI JOINT

Page 9: Getting Started With Puppet - Chad Metcalf

PUPPET OPEN SOURCE VS PUPPET ENTERPRISESAME GREAT TASTE

Page 10: Getting Started With Puppet - Chad Metcalf

EXTERNAL NODE CLASSIFIERFOREMAN - PUPPET DASHBOARD - PUPPET ENTERPRISE CONSOLE - ROLL YOUR OWN

Page 11: Getting Started With Puppet - Chad Metcalf

PUPPETDBSTORECONFIG AND INVENTORY SERVICE STORAGE

Page 12: Getting Started With Puppet - Chad Metcalf

HIERAHIERARCHICAL DATABASE - CONFIGURATION DETAILS OUT OF CODE

Page 13: Getting Started With Puppet - Chad Metcalf

CONSIDER PROVISIONINGFROM BARE METAL TO PUPPET READY

Page 14: Getting Started With Puppet - Chad Metcalf

PROOF OF CONCEPTPROOF OF CONCEPTS NEVER DIE - EVEN IF YOU REALLY WISHED THEY WOULD

Puppet Master PuppetDB ConsoleDashboardForeman

ENC

RazorCobbler

Foreman*

Optional

Page 15: Getting Started With Puppet - Chad Metcalf

SCALING PUPPETNO EASY ANSWERS

Page 16: Getting Started With Puppet - Chad Metcalf

MODULE TIME?WHEN ARE WE GOING TO DO SOME REAL WORK?

Page 17: Getting Started With Puppet - Chad Metcalf

CONFIGURATION AS CODEDOWN TO THE MODULES YOU USE

Page 18: Getting Started With Puppet - Chad Metcalf

/etc/puppetlabs/puppet├── modules│ ├── concat│ ├── dhcp│ ├── epel│ ├── hiera│ ├── hiera-puppet│ ├── limits│ ├── mongodb│ ├── mysql│ ├── nodejs│ ├── ntp

Page 19: Getting Started With Puppet - Chad Metcalf

PUPPET FORGECLEARING HOUSE FOR MODULES YOU SHOULD BE USING

Page 20: Getting Started With Puppet - Chad Metcalf

GITHUBNOT EVERYTHING IS ON THE FORGE... YET.

Page 21: Getting Started With Puppet - Chad Metcalf

FORKINGFORK TO EAT NOT TO LIVE - AKA STOP THE FORK

Page 22: Getting Started With Puppet - Chad Metcalf

ROLL YOUR OWNDON’T REINVENT THE WHEEL

Page 23: Getting Started With Puppet - Chad Metcalf

LEARNING MOREDON’T FORGET IRC #PUPPET - #PUPPET-DEV - MAILING LISTS

Page 24: Getting Started With Puppet - Chad Metcalf

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'], }

Page 25: Getting Started With Puppet - Chad Metcalf

PUPPET HAS MORE THEN A DSLSOMETIMES YOU JUST NEED TO WRITE A LITTLE RUBY

Page 26: Getting Started With Puppet - Chad Metcalf

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

Page 27: Getting Started With Puppet - Chad Metcalf

VAGRANTLEARN TO ♥ IT

node_config.vm.provision :puppet do |puppet| puppet.manifests_path = 'provision/manifests' puppet.module_path = 'provision/modules'end

Page 28: Getting Started With Puppet - Chad Metcalf

QUESTIONS?YOU CAN FIND ME @METCALFC