getting started with puppet - chad metcalf

Post on 29-Jun-2015

944 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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