love / hate puppet (puppet gotchas)

Download Love / Hate Puppet (Puppet Gotchas)

Post on 05-Dec-2014

2.675 views

Category:

Technology

4 download

Embed Size (px)

DESCRIPTION

Stephen Johnson's talk on "Love / Hate Puppet (Puppet Gotchas)" from Puppet Camp Melbourne 2013.

TRANSCRIPT

  • 1. Love / Hate Puppet Stephen Johnson Stephen@puppetlabs.com
  • 2. Background Puppetlabs employ for a a year I have been using Puppet since 0.24 Currently working on the hiera_debug and rseencle projects
  • 3. What is this Its not a puppet bashing Interesting Puppet behavior What i love about puppet
  • 4. Interesting Behavior Type Casting Type Equality Inconsistencies Scoping
  • 5. Type Casting (FTW) $wibble = 3 (String) $wibble2 = 2 (String) $wtf = $wibble + wibble2 ?
  • 6. Int
  • 7. Type Equality $wibble = 3 $wibble2 = 2 $wibble3 = $wibble + $wibble2 $wibbletest = 5 is $wibble3 == $wibbletest
  • 8. Yes
  • 9. Type Equality 2 $wibble = true $wibble2 = true is $wibble == $wibble2
  • 10. No
  • 11. Type Equality 3 $wibble = 0 $wibble2 = -1 are they equal to true
  • 12. Yes
  • 13. Totally Confused Now
  • 14. Type Equality There are many many more Be careful with data lookups from hiera
  • 15. Inconsistencies Noop on a class
  • 16. Noop on class class{testtwo: noop => true ;} All the resources are noop surely
  • 17. The code
  • 18. The output
  • 19. Scoping Thank good for 3.0 Removing dynamic scoping
  • 20. 2.7 Dynamic scoping is very very very dangerous Always use full scoped values
  • 21. 3.0 It has been removed Full scope variables
  • 22. Facts Top level variables Do not trust them as sent from client Dont use if $::hostname == Export FACTER_hostname=puppetmaster puppet agent -t See my blog on thatbytes.co.uk
  • 23. Is not all bad All languages have interesting behavior Look at the famous WAT talk from Gary Bernhardt www.destroyallsoftware.com/talks/wat
  • 24. What i love Exported Resources Puppet Hiera
  • 25. Exported Resources Nagios is so hard to setup all those cong les Dns is so hard we have to track all those ip address
  • 26. Nagios Automated Nagios node webserver { @@file { "/etc/nagios/conf.d/$::fqdn.apachecheck.conf": content => "nagios check stuff n", tag => "nagioscheck", } } node nagiosmachine { File }
  • 27. Export the resource @@file { "/etc/nagios/conf.d/$::fqdn.apachecheck.conf": content => template(apache/nagioscheck.erb), tag => "nagioscheck", } Tagged with nagioscheck Have a apache::nagios class ?
  • 28. Collect the resource File Using the tag previously In your nagios::server class
  • 29. How does that work Puppetdb Stores congs Scalable AWESOMENESS
  • 30. Puppet Automation Abstraction Repeatable Reportable AWESOMEABLE
  • 31. Puppet gets you Knowledge Version controlled infrastructure Convergence Reporting Query-ability Removing the snowakes
  • 32. Hiera Puppet modules without hard-coded data are easily shared and more re-usable Infrastructure conguration can be managed without needing to edit Puppet code The data problem
  • 33. Bad Dataif ( $::environment == dev ) { $ntpserver = 192.168.2.1} else { if ( $::fqdn == host4.mycorp.com) { $ntpserver = 127.0.0.1 } else { $ntpserver = 213.21.6.4 }}
  • 34. Good Data$ntpserver = hiera(ntpserver) :hierarchy: - %{operatingsystem} - %{environment} - %{fqdn} - common
  • 35. Remove Data from Code Hiera uses information to determine a hierarchy Top down hierarchy for overriding conguration values based on roles, environments, locations.... or anything else And do this without any coding!
  • 36. Puppet 3.0 Hiera is integrated into the core product Introduces data mapping for parameterized classes Backwards compatible
  • 37. Hiera_Debug
  • 38. Hiera What where the variables How looked the variables up
  • 39. Debug File
  • 40. Learn more git://github.com/nfagerlund/evil-made- manifest.git