SlideShare ist ein Scribd-Unternehmen logo
1 von 64
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
• Everyone’s a developer
• Style Guide
• Testable
@byron_miller 14
Long term..
• Simple – Don’t 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 POC’s.
@byron_miller 16
Module Development
@byron_miller 17
Be Pragmatic
@byron_miller 18
Style
• Make quality a requirement
• Know when to stop (don’t over optimize)
DRY – Don’t repeat yourself
• Imposed Duplication – Apparent lack of
choice
• Inadvertent Duplication – Not realize that
they’re 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 it’s 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. Don’t 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..
It’s code
• Version control
• Test
• Refactor
• Share.
• forge
Module Template
• “puppet module generate” – use the boiler
plate scaffolding
• Use Garethr’s 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 don’t 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
It’s code but…
• Don’t think of it as “object oriented” from a
programmers perspective
• It’s 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, don’t have server rot
CI
• Puppet Lint
• Beaker/Rspec/ServerSpec
• Rubocop
@byron_miller 56
Keep it simple
• Decouple!
– Use Roles & Profiles (the one “pattern” I’ll always
recommend)
– Hiera is your friend, but don’t go too nuts
– Keep your ENC simple - categorization
@byron_miller 57
Use the feedback loops
• Pay attention to pipeline
– Don’t let things rot
– Seek out improvements
– Share lessons learned
– Get feedback
• Puppet Reports..
• Puppet Dashboard..
• Event Inspector (PE).. (and other tools)
@byron_miller 58
Don’t stop Thinking
• Maintain a consistency of understanding and
effort
• Don’t 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

Weitere ähnliche Inhalte

Ähnlich wie PuppetCamp Austin 2015 Talk - Getting started with puppet

Automated Testing with Databases
Automated Testing with DatabasesAutomated Testing with Databases
Automated Testing with Databases
Stephen Ritchie
 
Reviewing CPAN modules
Reviewing CPAN modulesReviewing CPAN modules
Reviewing CPAN modules
neilbowers
 
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cppQuickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
Clare Macrae
 
Clean code, Feb 2012
Clean code, Feb 2012Clean code, Feb 2012
Clean code, Feb 2012
cobyst
 

Ähnlich wie PuppetCamp Austin 2015 Talk - Getting started with puppet (20)

Clean code presentation
Clean code presentationClean code presentation
Clean code presentation
 
PENETRATION TESTING FROM A HOT TUB TIME MACHINE
PENETRATION TESTING FROM A HOT TUB TIME MACHINEPENETRATION TESTING FROM A HOT TUB TIME MACHINE
PENETRATION TESTING FROM A HOT TUB TIME MACHINE
 
Clean code
Clean codeClean code
Clean code
 
Intro to Python for C# Developers
Intro to Python for C# DevelopersIntro to Python for C# Developers
Intro to Python for C# Developers
 
Automated Testing with Databases
Automated Testing with DatabasesAutomated Testing with Databases
Automated Testing with Databases
 
TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)TDD and Related Techniques for Non Developers (2012)
TDD and Related Techniques for Non Developers (2012)
 
[TDC 2018 - Trilha XP] Feature flags e releases controlados
[TDC 2018 - Trilha XP] Feature flags e releases controlados[TDC 2018 - Trilha XP] Feature flags e releases controlados
[TDC 2018 - Trilha XP] Feature flags e releases controlados
 
TDC2018SP | Trilha UX - Feature flags e Releases controlados
TDC2018SP | Trilha UX - Feature flags e Releases controladosTDC2018SP | Trilha UX - Feature flags e Releases controlados
TDC2018SP | Trilha UX - Feature flags e Releases controlados
 
Anti-patterns
Anti-patternsAnti-patterns
Anti-patterns
 
Get lean tutorial
Get lean tutorialGet lean tutorial
Get lean tutorial
 
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learned
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learnedRebuilding Legacy Apps with Domain-Driven Design - Lessons learned
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learned
 
CPAN Curation
CPAN CurationCPAN Curation
CPAN Curation
 
Reviewing CPAN modules
Reviewing CPAN modulesReviewing CPAN modules
Reviewing CPAN modules
 
Five Things I Learned While Building Anomaly Detection Tools - Toufic Boubez ...
Five Things I Learned While Building Anomaly Detection Tools - Toufic Boubez ...Five Things I Learned While Building Anomaly Detection Tools - Toufic Boubez ...
Five Things I Learned While Building Anomaly Detection Tools - Toufic Boubez ...
 
Eurosport's Kodakademi #2
Eurosport's Kodakademi #2Eurosport's Kodakademi #2
Eurosport's Kodakademi #2
 
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
 
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cppQuickly and Effectively Testing Legacy c++ Code with Approval Tests   mu cpp
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cpp
 
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship CultureTechnical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
 
Object Oriented Programming in Swift Ch0 - Encapsulation
Object Oriented Programming in Swift Ch0 - EncapsulationObject Oriented Programming in Swift Ch0 - Encapsulation
Object Oriented Programming in Swift Ch0 - Encapsulation
 
Clean code, Feb 2012
Clean code, Feb 2012Clean code, Feb 2012
Clean code, Feb 2012
 

KĂźrzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

KĂźrzlich hochgeladen (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

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 • Everyone’s a developer • Style Guide • Testable @byron_miller 14
  • 15. Long term.. • Simple – Don’t 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 POC’s. @byron_miller 16
  • 19. Style • Make quality a requirement • Know when to stop (don’t over optimize)
  • 20. DRY – Don’t repeat yourself • Imposed Duplication – Apparent lack of choice • Inadvertent Duplication – Not realize that they’re 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 it’s 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. Don’t 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. It’s code • Version control • Test • Refactor • Share. • forge
  • 31. Module Template • “puppet module generate” – use the boiler plate scaffolding • Use Garethr’s 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 don’t 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. It’s code but… • Don’t think of it as “object oriented” from a programmers perspective • It’s 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, don’t have server rot CI • Puppet Lint • Beaker/Rspec/ServerSpec • Rubocop @byron_miller 56
  • 57. Keep it simple • Decouple! – Use Roles & Profiles (the one “pattern” I’ll always recommend) – Hiera is your friend, but don’t go too nuts – Keep your ENC simple - categorization @byron_miller 57
  • 58. Use the feedback loops • Pay attention to pipeline – Don’t 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. Don’t stop Thinking • Maintain a consistency of understanding and effort • Don’t 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

Hinweis der Redaktion

  1. 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.
  2. Puppet has a learning curve, but it is fairly simple
  3. 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.
  4. 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.
  5. Workflow philosophy
  6. Module Philosophy.. - everyone is a developer, everyone should adhere to style guide and everything should be testable and tested.
  7. Start simple, but plan for long term goals – have them in back of your mind. Don’t 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.
  8. I would never under estimate the value of a proof of concept and experimenting with your theories in fact, I’d wager many of us have gone awry or had regrets because our initial design is what became “production”
  9. 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 doesn’t work your entire ecosystem will reflect this. On the flipside I wouldn’t 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
  10. Decouple!
  11. Worth repeating. Puppet manifests are code, treat it as such.
  12. Kin-ev-in – cynafin – “many places”
  13. Common cause – can address with experimentation and puppet Special Cause
  14. What does it mean to be in operations? Managing what?
  15. 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.
  16. The ecology of “getting work done” has more impact on delivering “your future” than the tech/tools themselves. “ASHEN” methodology
  17. We’re not striving for perfection, I choose to strive for getting the most work done with least resistance and most consistency.
  18. Puppet enables me to operate in “Complex and Complicated” domains to seek out innovation & emergent properties of system