際際滷

際際滷Share a Scribd company logo
Getting Started with Puppet
@byron_miller 1
@Byron_Miller
@byron_miller 2
#ATXPUG
@byron_miller 3
Meetup! 2nd Tuesday
@byron_miller 4
How I got Started
 Oracle *.*
 Enterprise Linux
 Needed a way to not waste every Monday and
every day I needed to refresh/clone
 Kill technical debt
 Classic Enterprise..
@byron_miller 5
Vocabulary
 Convergence  stabilize over time
 Idempotent  unchanged element when
operated on by itself
 Orchestration  Coordination & Management
of complex systems
 Puppet  The ecosystem
 Manifests & Modules  The code
@byron_miller 6
More Vocabulary
 ENC  External Node Classifier
 Mcollective  orchestration tool set
 Hiera  key value lookup system
 Node  Server/VM
 Facter  node facts
 Types & Providers  Built in resources you
declare in puppet manifests
@byron_miller 7
Theory (is where it starts)
@byron_miller 8
Begin by thinking
 Puppet has a learning curve but making it
work for your organization is up to how you
define getting things done and your future
 The vocabulary and Verbiage of puppet is
well documented & simple with a little
practice
 Think about your work
 Think about your future
@byron_miller 9
Puppet docs
 The Docs
https://docs.puppetlabs.com/
 Types & Providers
https://docs.puppetlabs.com/references/stable/
type.html
@byron_miller 10
Getting Started  Set Goals
 What is your goal(s)?
 How do you measure success or failure?
 What is your Intent?
Know the theory of your desired state
@byron_miller 11
How do you work?
 Is your organization highly constrained &
highly ordered?
 Do you strive for self-regulating systems?
 Is your goal compliance?
 Stability?
 Agility?
@byron_miller 12
Define Workflow
 Simple
 Easy to install & Maintain
 Safe
 Version Control - Git workflow
 Secure
 SSH / SSL / Accountability
 Scalable
 Handle 1000s of nodes
@byron_miller 13
Modules
 Everyones a developer
 Style Guide
 Testable
@byron_miller 14
Long term..
 Simple  Dont add complexity
 Safe  Safe to fail experimentation
 Secure  Auditable
 Scalable  Point in time convergence.
@byron_miller 15
Practice
 Track your theories
 Test your theories
 Experiment
 Experiment again
 Never underestimate the value of POCs.
@byron_miller 16
Module Development
@byron_miller 17
Be Pragmatic
@byron_miller 18
Style
 Make quality a requirement
 Know when to stop (dont over optimize)
DRY  Dont repeat yourself
 Imposed Duplication  Apparent lack of
choice
 Inadvertent Duplication  Not realize that
theyre duplicating information
 Impatient Duplication  lazy / duplicate
because it seems easier
 Interdeveloper Duplication  Multiple people
on teams / multiple teams.
Code
 Keep low level knowledge in code
 Reserve Comments for high level expectations
 Foster an environment where its easier to
find and reuse existing stuff than to write it
yourself.
Scope & Avoid Global data
 Every time you reference global data it ties
you to the other components that share data
 Use Scoping
Manage Complexity
Complexity is generally used to characterize
something with many parts where those parts
interact with each other in multiple ways.
Orthogonal - Safe to Fail
 Independent / lightly coupled systems
 Eliminates effects of unrelated things
 Design self contained things
 Increased productivity & contained risk
Prototype (experiment)
 Architecture
 New functionality in existing systems
 Structure or contents of external data
 Third party tools or components
 Performance issues
 User interface / experience / design
Experiments
 Worry less about correctness, completeness,
robustness and style.
 Focus on design / definition
 Is coupling minimized?
 Can you identify potential sources of
duplication?
Style Guides
 https://docs.puppetlabs.com/guides/style_gui
de.html
Test
 Loosely coupled systems easier to test 
interactions between components are limited.
 Unit testing is easier
 Test in CI pipeline
 Beaker / rspec / puppet lint
Refactor
 Avoid code rot. Dont let bad code fester and
turn all your code into abandonware
 Code rot will keep you from staying current,
maintaining your skills and generally cause
people to shy away from platform for new
shiny thing..
Its code
 Version control
 Test
 Refactor
 Share.
 forge
Module Template
 puppet module generate  use the boiler
plate scaffolding
 Use Garethrs boiler plate  nice & updated
https://github.com/garethr/puppet-module-
skeleton
Data Separation
 Hiera
 Yaml, Mysql, GPG etc..
 ENC
 Puppet PE
 Foreman
 Homemade
 ?
 Single source of truth.. Anyone have any?
Parameterized Classes
 Great for ENCs
 Easy to set default values
 Portable / Shareable
 Just do it..
Class Inheritance
 Use within a module to reduce repetition
(DRY)
 Inheriting from other modules decreases
modularity, but hard to avoid
 ENC confusion
Code Defensively
 Catch unexpected events before they break
things  gracefully bow out if you dont support
platform
 Default case fail on unsupported platforms
 Plan for Puppet Future parser
 Some changes / restrictions
 Expressions, Lambdas, Iterations & more
https://docs.puppetlabs.com/puppet/latest/refere
nce/experiments_future.html
Its code but
 Dont think of it as object oriented from a
programmers perspective
 Its a Domain Specific Language (DSL) used
to describe a desired state.
@byron_miller 36
Practice
 Vagrant / VM instances
 Build / test / deploy
 Pull modules from forge
 Read
 Test
 Deploy
 experiment
@byron_miller 37
Operations
@byron_miller 38
More Thinking
 How do we work?
 What should we automate?
 What are our goals?
 Systems thinking..
 Sense Making..
@byron_miller 39
Sense Making
@byron_miller 40
Simple Domain
 Start with what you know
 Relieve pain points
 Remove constraints
 Cause  effect relationships  you can codify
this
@byron_miller 41
Chaos
@byron_miller 42
Simple -> Chaos
 When simple breaks
 All hell breaks loose.
@byron_miller 43
Infrastructure
 as code..
Busting out some Deming..
As a System of profound knowledge
A. Appreciation for a system
B. Theory of Variation
C. Theory of Knowledge
D. Psychology
@byron_miller 44
Systems Approach
Taking a systems approach results in viewing the
organization in terms of many internal and
external interrelated connections and
interactions as opposed to discrete and
independent departments or processes
governed by various chains of command.
Appreciation for a system..
@byron_miller 45
Variation
Why did something go wrong? How can we
repeat success?
Common Cause  predictable variation within a
system
Special Cause  unique event outside the system
@byron_miller 46
Knowledge
 Theory, Experimentation, Statistical analysis,
conveyed meaning, processes.
Information is not knowledge
-Deming
@byron_miller 47
Psychology
 Human Systems
 Drive out Fear
 Motivation
@byron_miller 48
Management Is..
 Prediction
 Theory
 What causes positive interactions?
 What removes conflict?
 Understanding & Conveying meaning of a
system
 People..
@byron_miller 49
Think of ecology
 Adopt an ecological metaphor
 Codify stories
 Feedback loops
 Iterations
 Testing
 Reporting
@byron_miller 50
The system
Intent..
 What causes behaviors outside the system?
The obligation of any component is to
contribute its best to the system but it will not
do that unless the system is managed
@byron_miller 51
Future Backwards
@byron_miller 52
Where we want to be
Future Backwards: Perspectives of people
within an organization give them a limited view
of the present, and such entrained patterns of
past perception can determine its future.
@byron_miller 53
Your future
Getting there..
 Flow
 Measure
 Retrospectives
 Involve Stakeholders
 Sense -> Categorize -> Respond
Bias against creativity is fueled by uncertainty
-Deming
@byron_miller 54
Puppet Operations
 Develop your System to allow
experimentation, upkeep, maintenance and
operational agility.
 Keep it Simple
 Grow & Learn
 Practice all the time
 Practice More
@byron_miller 55
Ops Pipeline
 Build Build Build
 Just like code rot, dont have server rot
CI
 Puppet Lint
 Beaker/Rspec/ServerSpec
 Rubocop
@byron_miller 56
Keep it simple
 Decouple!
 Use Roles & Profiles (the one pattern Ill always
recommend)
 Hiera is your friend, but dont go too nuts
 Keep your ENC simple - categorization
@byron_miller 57
Use the feedback loops
 Pay attention to pipeline
 Dont let things rot
 Seek out improvements
 Share lessons learned
 Get feedback
 Puppet Reports..
 Puppet Dashboard..
 Event Inspector (PE).. (and other tools)
@byron_miller 58
Dont stop Thinking
 Maintain a consistency of understanding and
effort
 Dont focus on local optimums
 Quality starts here
 Quality starts with intent
 No system whatever the effort put in will be
free from accident/incident/error
@byron_miller 59
Enable People
 Puppet enables me to codify to my future
 Puppet enables me to know my past
@byron_miller 60
Practice
 Test Upgrades
 Test new forge modules
 Safe to fail experimentation
 Serverspec.. Beaker..
@byron_miller 61
Keep trying
 Look at logs
 puppet --debug verbose
 Talk to community
 Use the dashboard
 puppet --help
@byron_miller 62
Community
 Google Groups
 Twitter
 Ask puppetlabs
 Online Documentation
 IRC
 User Groups!!
 Sh*t Gary Says - http://garylarizza.com/
@byron_miller 63
Questions?
Organizations which design systems are constrained to
produce designs which are copies of the communication
structures of these organizations.
- M. Conway
@byron_miller 64
Ad

Recommended

Puppet Camp DC 2014: Continuous Deployment of Dynamic Environments Using Hier...
Puppet Camp DC 2014: Continuous Deployment of Dynamic Environments Using Hier...
Puppet
Puppet Camp Chicago 2014: Puppet at backstop another year of lessons
Puppet Camp Chicago 2014: Puppet at backstop another year of lessons
Puppet
Puppet Camp Austin 2015: How I learned to stop worrying and love the ENC
Puppet Camp Austin 2015: How I learned to stop worrying and love the ENC
Puppet
Demystifying TLS
Demystifying TLS
Puppet
Puppet Camp Austin 2015: Getting Started with Puppet
Puppet Camp Austin 2015: Getting Started with Puppet
Puppet
Puppet Camp Dallas 2014: Configuration Management in the Enterprise
Puppet Camp Dallas 2014: Configuration Management in the Enterprise
Puppet
200,000 Lines Later: Our Journey to Manageable Puppet Code
200,000 Lines Later: Our Journey to Manageable Puppet Code
David Danzilio
No IT Left Behind - Connecting the Software-Defined Data Center to Multi-Moda...
No IT Left Behind - Connecting the Software-Defined Data Center to Multi-Moda...
Intelligent Software Solutions
Crafty communications - Dealing with the pesky people parts of communications
Crafty communications - Dealing with the pesky people parts of communications
Asher Glynn
Feedback loops between tooling and culture
Feedback loops between tooling and culture
Chris Winters
Puppet for SysAdmins
Puppet for SysAdmins
Puppet
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in Turin
Alessandro Nadalin
A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013
Alessandro Nadalin
re:Invent OPN306 AWS Lambda Powertools Lessons 10M downloads.pdf
re:Invent OPN306 AWS Lambda Powertools Lessons 10M downloads.pdf
Heitor Lessa
"How do you think when you're coding?", Jon Skeet
"How do you think when you're coding?", Jon Skeet
Fwdays
Hacking Public Relations
Hacking Public Relations
Edelman Digital
Working Effectively with Legacy Code
Working Effectively with Legacy Code
slicklash
Startup Systems Engineer's Instruction manual - SREcon17 Europe
Startup Systems Engineer's Instruction manual - SREcon17 Europe
effie mouzeli
Shut Up And Eat Your Veg
Shut Up And Eat Your Veg
Garth Gilmour
Ten years of [Puppet] installations. What now?
Ten years of [Puppet] installations. What now?
Alessandro Franceschi
Using Puppet - Real World Configuration Management
Using Puppet - Real World Configuration Management
James Turnbull
PuppetConf 2016: Successful Puppet Implementation in Large Organizations Ja...
PuppetConf 2016: Successful Puppet Implementation in Large Organizations Ja...
Puppet
Dev to Delivery with Puppet - PuppetConf 2014
Dev to Delivery with Puppet - PuppetConf 2014
Puppet
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and Flickr
John Allspaw
When Things Go Bump in the Night
When Things Go Bump in the Night
ahamilton55
Code Camp NYC 2017 - How to deal with everything... | Chris Ozog - Codesushi
Code Camp NYC 2017 - How to deal with everything... | Chris Ozog - Codesushi
Krzysztof (Chris) Ozog
Emergent Patterns in DevOps
Emergent Patterns in DevOps
George Miranda
Puppetizing Your Organization
Puppetizing Your Organization
Robert Nelson
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule

More Related Content

Similar to PuppetCamp Austin 2015 Talk - Getting started with puppet (20)

Crafty communications - Dealing with the pesky people parts of communications
Crafty communications - Dealing with the pesky people parts of communications
Asher Glynn
Feedback loops between tooling and culture
Feedback loops between tooling and culture
Chris Winters
Puppet for SysAdmins
Puppet for SysAdmins
Puppet
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in Turin
Alessandro Nadalin
A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013
Alessandro Nadalin
re:Invent OPN306 AWS Lambda Powertools Lessons 10M downloads.pdf
re:Invent OPN306 AWS Lambda Powertools Lessons 10M downloads.pdf
Heitor Lessa
"How do you think when you're coding?", Jon Skeet
"How do you think when you're coding?", Jon Skeet
Fwdays
Hacking Public Relations
Hacking Public Relations
Edelman Digital
Working Effectively with Legacy Code
Working Effectively with Legacy Code
slicklash
Startup Systems Engineer's Instruction manual - SREcon17 Europe
Startup Systems Engineer's Instruction manual - SREcon17 Europe
effie mouzeli
Shut Up And Eat Your Veg
Shut Up And Eat Your Veg
Garth Gilmour
Ten years of [Puppet] installations. What now?
Ten years of [Puppet] installations. What now?
Alessandro Franceschi
Using Puppet - Real World Configuration Management
Using Puppet - Real World Configuration Management
James Turnbull
PuppetConf 2016: Successful Puppet Implementation in Large Organizations Ja...
PuppetConf 2016: Successful Puppet Implementation in Large Organizations Ja...
Puppet
Dev to Delivery with Puppet - PuppetConf 2014
Dev to Delivery with Puppet - PuppetConf 2014
Puppet
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and Flickr
John Allspaw
When Things Go Bump in the Night
When Things Go Bump in the Night
ahamilton55
Code Camp NYC 2017 - How to deal with everything... | Chris Ozog - Codesushi
Code Camp NYC 2017 - How to deal with everything... | Chris Ozog - Codesushi
Krzysztof (Chris) Ozog
Emergent Patterns in DevOps
Emergent Patterns in DevOps
George Miranda
Puppetizing Your Organization
Puppetizing Your Organization
Robert Nelson
Crafty communications - Dealing with the pesky people parts of communications
Crafty communications - Dealing with the pesky people parts of communications
Asher Glynn
Feedback loops between tooling and culture
Feedback loops between tooling and culture
Chris Winters
Puppet for SysAdmins
Puppet for SysAdmins
Puppet
The rocket internet experience @ PHP.TO.START 2013 in Turin
The rocket internet experience @ PHP.TO.START 2013 in Turin
Alessandro Nadalin
A Rocket Internet experience @ ForumPHP Paris 2013
A Rocket Internet experience @ ForumPHP Paris 2013
Alessandro Nadalin
re:Invent OPN306 AWS Lambda Powertools Lessons 10M downloads.pdf
re:Invent OPN306 AWS Lambda Powertools Lessons 10M downloads.pdf
Heitor Lessa
"How do you think when you're coding?", Jon Skeet
"How do you think when you're coding?", Jon Skeet
Fwdays
Hacking Public Relations
Hacking Public Relations
Edelman Digital
Working Effectively with Legacy Code
Working Effectively with Legacy Code
slicklash
Startup Systems Engineer's Instruction manual - SREcon17 Europe
Startup Systems Engineer's Instruction manual - SREcon17 Europe
effie mouzeli
Shut Up And Eat Your Veg
Shut Up And Eat Your Veg
Garth Gilmour
Ten years of [Puppet] installations. What now?
Ten years of [Puppet] installations. What now?
Alessandro Franceschi
Using Puppet - Real World Configuration Management
Using Puppet - Real World Configuration Management
James Turnbull
PuppetConf 2016: Successful Puppet Implementation in Large Organizations Ja...
PuppetConf 2016: Successful Puppet Implementation in Large Organizations Ja...
Puppet
Dev to Delivery with Puppet - PuppetConf 2014
Dev to Delivery with Puppet - PuppetConf 2014
Puppet
Dev and Ops Collaboration and Awareness at Etsy and Flickr
Dev and Ops Collaboration and Awareness at Etsy and Flickr
John Allspaw
When Things Go Bump in the Night
When Things Go Bump in the Night
ahamilton55
Code Camp NYC 2017 - How to deal with everything... | Chris Ozog - Codesushi
Code Camp NYC 2017 - How to deal with everything... | Chris Ozog - Codesushi
Krzysztof (Chris) Ozog
Emergent Patterns in DevOps
Emergent Patterns in DevOps
George Miranda
Puppetizing Your Organization
Puppetizing Your Organization
Robert Nelson

Recently uploaded (20)

Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
Key Requirements to Successfully Implement Generative AI in Edge DevicesOpt...
Key Requirements to Successfully Implement Generative AI in Edge DevicesOpt...
Edge AI and Vision Alliance
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
Improving Data Integrity: Synchronization between EAM and ArcGIS Utility Netw...
Improving Data Integrity: Synchronization between EAM and ArcGIS Utility Netw...
Safe Software
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
Security Tips for Enterprise Azure Solutions
Security Tips for Enterprise Azure Solutions
Michele Leroux Bustamante
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
Information Security Response Team Nepal_npCERT_Vice_President_Sudan_Jha.pdf
Information Security Response Team Nepal_npCERT_Vice_President_Sudan_Jha.pdf
ICT Frame Magazine Pvt. Ltd.
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
10 Key Challenges for AI within the EU Data Protection Framework.pdf
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
Key Requirements to Successfully Implement Generative AI in Edge DevicesOpt...
Key Requirements to Successfully Implement Generative AI in Edge DevicesOpt...
Edge AI and Vision Alliance
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
Securing AI - There Is No Try, Only Do!.pdf
Securing AI - There Is No Try, Only Do!.pdf
Priyanka Aash
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
Improving Data Integrity: Synchronization between EAM and ArcGIS Utility Netw...
Improving Data Integrity: Synchronization between EAM and ArcGIS Utility Netw...
Safe Software
Lessons Learned from Developing Secure AI Workflows.pdf
Lessons Learned from Developing Secure AI Workflows.pdf
Priyanka Aash
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
Security Tips for Enterprise Azure Solutions
Security Tips for Enterprise Azure Solutions
Michele Leroux Bustamante
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
Information Security Response Team Nepal_npCERT_Vice_President_Sudan_Jha.pdf
Information Security Response Team Nepal_npCERT_Vice_President_Sudan_Jha.pdf
ICT Frame Magazine Pvt. Ltd.
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
10 Key Challenges for AI within the EU Data Protection Framework.pdf
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
Ad

PuppetCamp Austin 2015 Talk - Getting started with puppet

  • 1. Getting Started with Puppet @byron_miller 1
  • 5. How I got Started Oracle *.* Enterprise Linux Needed a way to not waste every Monday and every day I needed to refresh/clone Kill technical debt Classic Enterprise.. @byron_miller 5
  • 6. Vocabulary Convergence stabilize over time Idempotent unchanged element when operated on by itself Orchestration Coordination & Management of complex systems Puppet The ecosystem Manifests & Modules The code @byron_miller 6
  • 7. More Vocabulary ENC External Node Classifier Mcollective orchestration tool set Hiera key value lookup system Node Server/VM Facter node facts Types & Providers Built in resources you declare in puppet manifests @byron_miller 7
  • 8. Theory (is where it starts) @byron_miller 8
  • 9. Begin by thinking Puppet has a learning curve but making it work for your organization is up to how you define getting things done and your future The vocabulary and Verbiage of puppet is well documented & simple with a little practice Think about your work Think about your future @byron_miller 9
  • 10. Puppet docs The Docs https://docs.puppetlabs.com/ Types & Providers https://docs.puppetlabs.com/references/stable/ type.html @byron_miller 10
  • 11. Getting Started Set Goals What is your goal(s)? How do you measure success or failure? What is your Intent? Know the theory of your desired state @byron_miller 11
  • 12. How do you work? Is your organization highly constrained & highly ordered? Do you strive for self-regulating systems? Is your goal compliance? Stability? Agility? @byron_miller 12
  • 13. Define Workflow Simple Easy to install & Maintain Safe Version Control - Git workflow Secure SSH / SSL / Accountability Scalable Handle 1000s of nodes @byron_miller 13
  • 14. Modules Everyones a developer Style Guide Testable @byron_miller 14
  • 15. Long term.. Simple Dont add complexity Safe Safe to fail experimentation Secure Auditable Scalable Point in time convergence. @byron_miller 15
  • 16. Practice Track your theories Test your theories Experiment Experiment again Never underestimate the value of POCs. @byron_miller 16
  • 19. Style Make quality a requirement Know when to stop (dont over optimize)
  • 20. DRY Dont repeat yourself Imposed Duplication Apparent lack of choice Inadvertent Duplication Not realize that theyre duplicating information Impatient Duplication lazy / duplicate because it seems easier Interdeveloper Duplication Multiple people on teams / multiple teams.
  • 21. Code Keep low level knowledge in code Reserve Comments for high level expectations Foster an environment where its easier to find and reuse existing stuff than to write it yourself.
  • 22. Scope & Avoid Global data Every time you reference global data it ties you to the other components that share data Use Scoping
  • 23. Manage Complexity Complexity is generally used to characterize something with many parts where those parts interact with each other in multiple ways.
  • 24. Orthogonal - Safe to Fail Independent / lightly coupled systems Eliminates effects of unrelated things Design self contained things Increased productivity & contained risk
  • 25. Prototype (experiment) Architecture New functionality in existing systems Structure or contents of external data Third party tools or components Performance issues User interface / experience / design
  • 26. Experiments Worry less about correctness, completeness, robustness and style. Focus on design / definition Is coupling minimized? Can you identify potential sources of duplication?
  • 28. Test Loosely coupled systems easier to test interactions between components are limited. Unit testing is easier Test in CI pipeline Beaker / rspec / puppet lint
  • 29. Refactor Avoid code rot. Dont let bad code fester and turn all your code into abandonware Code rot will keep you from staying current, maintaining your skills and generally cause people to shy away from platform for new shiny thing..
  • 30. Its code Version control Test Refactor Share. forge
  • 31. Module Template puppet module generate use the boiler plate scaffolding Use Garethrs boiler plate nice & updated https://github.com/garethr/puppet-module- skeleton
  • 32. Data Separation Hiera Yaml, Mysql, GPG etc.. ENC Puppet PE Foreman Homemade ? Single source of truth.. Anyone have any?
  • 33. Parameterized Classes Great for ENCs Easy to set default values Portable / Shareable Just do it..
  • 34. Class Inheritance Use within a module to reduce repetition (DRY) Inheriting from other modules decreases modularity, but hard to avoid ENC confusion
  • 35. Code Defensively Catch unexpected events before they break things gracefully bow out if you dont support platform Default case fail on unsupported platforms Plan for Puppet Future parser Some changes / restrictions Expressions, Lambdas, Iterations & more https://docs.puppetlabs.com/puppet/latest/refere nce/experiments_future.html
  • 36. Its code but Dont think of it as object oriented from a programmers perspective Its a Domain Specific Language (DSL) used to describe a desired state. @byron_miller 36
  • 37. Practice Vagrant / VM instances Build / test / deploy Pull modules from forge Read Test Deploy experiment @byron_miller 37
  • 39. More Thinking How do we work? What should we automate? What are our goals? Systems thinking.. Sense Making.. @byron_miller 39
  • 41. Simple Domain Start with what you know Relieve pain points Remove constraints Cause effect relationships you can codify this @byron_miller 41
  • 43. Simple -> Chaos When simple breaks All hell breaks loose. @byron_miller 43
  • 44. Infrastructure as code.. Busting out some Deming.. As a System of profound knowledge A. Appreciation for a system B. Theory of Variation C. Theory of Knowledge D. Psychology @byron_miller 44
  • 45. Systems Approach Taking a systems approach results in viewing the organization in terms of many internal and external interrelated connections and interactions as opposed to discrete and independent departments or processes governed by various chains of command. Appreciation for a system.. @byron_miller 45
  • 46. Variation Why did something go wrong? How can we repeat success? Common Cause predictable variation within a system Special Cause unique event outside the system @byron_miller 46
  • 47. Knowledge Theory, Experimentation, Statistical analysis, conveyed meaning, processes. Information is not knowledge -Deming @byron_miller 47
  • 48. Psychology Human Systems Drive out Fear Motivation @byron_miller 48
  • 49. Management Is.. Prediction Theory What causes positive interactions? What removes conflict? Understanding & Conveying meaning of a system People.. @byron_miller 49
  • 50. Think of ecology Adopt an ecological metaphor Codify stories Feedback loops Iterations Testing Reporting @byron_miller 50
  • 51. The system Intent.. What causes behaviors outside the system? The obligation of any component is to contribute its best to the system but it will not do that unless the system is managed @byron_miller 51
  • 53. Where we want to be Future Backwards: Perspectives of people within an organization give them a limited view of the present, and such entrained patterns of past perception can determine its future. @byron_miller 53
  • 54. Your future Getting there.. Flow Measure Retrospectives Involve Stakeholders Sense -> Categorize -> Respond Bias against creativity is fueled by uncertainty -Deming @byron_miller 54
  • 55. Puppet Operations Develop your System to allow experimentation, upkeep, maintenance and operational agility. Keep it Simple Grow & Learn Practice all the time Practice More @byron_miller 55
  • 56. Ops Pipeline Build Build Build Just like code rot, dont have server rot CI Puppet Lint Beaker/Rspec/ServerSpec Rubocop @byron_miller 56
  • 57. Keep it simple Decouple! Use Roles & Profiles (the one pattern Ill always recommend) Hiera is your friend, but dont go too nuts Keep your ENC simple - categorization @byron_miller 57
  • 58. Use the feedback loops Pay attention to pipeline Dont let things rot Seek out improvements Share lessons learned Get feedback Puppet Reports.. Puppet Dashboard.. Event Inspector (PE).. (and other tools) @byron_miller 58
  • 59. Dont stop Thinking Maintain a consistency of understanding and effort Dont focus on local optimums Quality starts here Quality starts with intent No system whatever the effort put in will be free from accident/incident/error @byron_miller 59
  • 60. Enable People Puppet enables me to codify to my future Puppet enables me to know my past @byron_miller 60
  • 61. Practice Test Upgrades Test new forge modules Safe to fail experimentation Serverspec.. Beaker.. @byron_miller 61
  • 62. Keep trying Look at logs puppet --debug verbose Talk to community Use the dashboard puppet --help @byron_miller 62
  • 63. Community Google Groups Twitter Ask puppetlabs Online Documentation IRC User Groups!! Sh*t Gary Says - http://garylarizza.com/ @byron_miller 63
  • 64. Questions? Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. - M. Conway @byron_miller 64

Editor's Notes

  • #9: Theory gives us the philosophical rails we need to have a successful implementation. It helps us think through what matters to the teams, the business and the operations of the systems that puppet is managing.
  • #10: Puppet has a learning curve, but it is fairly simple
  • #12: Is your goal to automate specific tasks, scale growth? Build out hundreds or thousands of servers? What are your success criteria's? How do you define your intent and how to establish that? I like to create a story in a wiki to describe the state of the system myself.
  • #13: Organization type will help you know your boundaries and deliverables. If you have a highly ordered/constrained work environment you may focus more on controls in your pipeline, how you audit changes and restrict who has access to one. If you have a self-regulated system a Pull Request github style If no one has a firm grasp of puppet you may constrain your own system as you gain experience.
  • #14: Workflow philosophy
  • #15: Module Philosophy.. - everyone is a developer, everyone should adhere to style guide and everything should be testable and tested.
  • #16: Start simple, but plan for long term goals have them in back of your mind. Dont add complexity for sake of complexity. For some people as they grow scalability is less of an issue and long term your goals may be point in time convergence. Not every node needing to check in every x minutes, but orchestrated puppet runs satisfying business needs.
  • #17: I would never under estimate the value of a proof of concept and experimenting with your theories in fact, Id wager many of us have gone awry or had regrets because our initial design is what became production
  • #20: Your entire success lies in making quality a requirement. If you have bad code, you will have a bad time. If no one can read it, understand it, embrace it, use it or it just doesnt work your entire ecosystem will reflect this. On the flipside I wouldnt look at the puppet DSC in the light of say a pythonista or rubyist looking for the most elegant way to do something in least amount of code. Puppet DSC should be readable and simple
  • #24: Decouple!
  • #31: Worth repeating. Puppet manifests are code, treat it as such.
  • #41: Kin-ev-in cynafin many places
  • #47: Common cause can address with experimentation and puppet Special Cause
  • #50: What does it mean to be in operations? Managing what?
  • #53: Helps give an overview of the hopes and fears of their organization and helps them understand which entrained patterns of past perception are influencing its future.
  • #54: The ecology of getting work done has more impact on delivering your future than the tech/tools themselves. ASHEN methodology
  • #60: Were not striving for perfection, I choose to strive for getting the most work done with least resistance and most consistency.
  • #61: Puppet enables me to operate in Complex and Complicated domains to seek out innovation & emergent properties of system