SlideShare a Scribd company logo
1 of 75
Download to read offline
Writing and Sharing Great Modules
                              with the Puppet Forge


     @ryanycoleman - Product Owner - Puppet Forge


Tuesday, April 9, 13
About Me




#PuppetCamp
Tuesday, April 9, 13

Ryan was a RedHat sysadmin for Penn State before joining Puppet Labs
as a professional services engineer. Now is product owner for the Forge.
#PuppetCamp
Tuesday, April 9, 13

The Puppet Forge is a community driven web service for contributing and finding Puppet
modules.
#PuppetCamp
Tuesday, April 9, 13

The following are examples of what you will find on the Forge.
#PuppetCamp
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Tuesday, April 9, 13
Forge Module Count

     4000


     3000


     2000


      1000


              0
                       End Q3   End Q4   ~End Q1   ~End Q2   ~End Q3   ~End Q4




#PuppetCamp
Tuesday, April 9, 13
#PuppetCamp
Tuesday, April 9, 13
#PuppetCamp
Tuesday, April 9, 13
#PuppetCamp
Tuesday, April 9, 13
Best Good Practices



#PuppetCamp
Tuesday, April 9, 13
PL Style Guide
#PuppetCamp
Tuesday, April 9, 13
#PuppetCamp
Tuesday, April 9, 13
#PuppetCamp
Tuesday, April 9, 13
#PuppetCamp
Tuesday, April 9, 13
#PuppetCamp
Tuesday, April 9, 13
Code VS Data



#PuppetCamp
Tuesday, April 9, 13

As you get further along with your Puppet Deployments, separating your code (puppet
resources) from the data (what package, what version) becomes increasingly important.
Tuesday, April 9, 13

Imagine that you’re doing a research project in the library.
Tuesday, April 9, 13

You’ve got some books that help accomplish your goal.
Separate
                        Code
                        From
                        Data



Tuesday, April 9, 13

But you don’t write in those books. You keep your notes -- your data -- separate.
Tuesday, April 9, 13
Tuesday, April 9, 13

So where do you express your data and how does Puppet find it?
Automatic Data Lookup
                        Built into Puppet 3




Tuesday, April 9, 13
Tuesday, April 9, 13

The answer, use Hiera!

Seriously, these docs rock. Read them. http://docs.puppetlabs.com/hiera/1/index.html
It’s MAGIC
                                                      But also, it’s not...




#PuppetCamp
Tuesday, April 9, 13

But first, let’s take a closer look at a Puppet run.
Tuesday, April 9, 13
Tuesday, April 9, 13
Hello! I’m James_Bond
                          running the RedHat
                       license to kill downtime.



Tuesday, April 9, 13
Good to know!


                         Hmm, what does
                       James_Bond need to
                            enforce?.




Tuesday, April 9, 13
James_Bond?



                                   Enforce    External Node
                                    Forge       Classifier

                  OK, what do I
                 need for Forge?

                 Modules Modules
                 Modules Modules



Tuesday, April 9, 13
forge::package?

                                                                         Data
                                                                       Bindings

                                                   Hiera


                            Hiearchy
                                                                   Backends
                         $clientcert

                       $operatingsystem
                                                         JSON           YAML
                                                        MySQL Foreman
                           common


Tuesday, April 9, 13

The Puppet Master needs forge::package. To get this data...
- It consults its data bindings terminus (abstraction for looking up data)
- Default lookup to Hiera (key/value store for data)
- Hiera consults its back-end data stores (defaults to yaml)
- Hiera returns result of lookup to master (key/value or could not find)
forge::package?

                                                                         Data
                                                                       Bindings
                                          It’s screen!

                                                   Hiera


                            Hiearchy
                                                                   Backends
                         $clientcert

                       $operatingsystem
                                                         JSON           YAML
                                                        MySQL            Redis
                           common


Tuesday, April 9, 13

The Puppet Master needs forge::package. To get this data...
- It consults its data bindings terminus (abstraction for looking up data)
- Default lookup to Hiera (key/value store for data)
- Hiera consults its back-end data stores (defaults to yaml)
- Hiera returns result of lookup to master (key/value or could not find)
? $forge::package
                 Hiearchy
             $clientcert                                            $james_bond

      $operatingsystem                                                   $RedHat

                   common                                                common




Tuesday, April 9, 13

Hiera will examine the lookup order of its data backends and its lookup hierarchy. If you
specified a variable lookup in your hierarchy, Hiera will use available facts when choosing the
backend file to lookup.
Expressing the configuration of hiera
                       data backends and lookup hierarchy




Tuesday, April 9, 13

Hiera lets you express data in some structured format (which is pluggable).

You then establish a hierarchy of lookup, however you like, usually based on facts.
Ok, so how do I use it
   with my Puppet
        classes?

#PuppetCamp
Tuesday, April 9, 13

Thankfully, Puppet 3 has made implementing Hiera really simple.
In the early days...




Tuesday, April 9, 13

Please don’t use the hiera() function. Consider it legacy.
In the early days...




Tuesday, April 9, 13

This is better, as the user can override this default parameter value.

With this, you’re locked into hiera.
Here’s the magic!




Tuesday, April 9, 13

But really, just get yourself onto Puppet 3 and take advantage of automatic Hiera!
Data Lookup Order
       •       Use explicit class declaration
               values

       •       Query Data Binding

       •       Use the default value from
               class.

       •       Fail compilation with an error if
               no value can be found.




Tuesday, April 9, 13

This slide could be more visual vs text-based
Data Bindings
                                 don’t lock yourself in




#PuppetCamp
Tuesday, April 9, 13

Additionally, protect yourself from a potential loss of Hiera.
Built into Puppet 3




Tuesday, April 9, 13

data_bindings were implemented to be an abstraction for data lookup, defaulting to hiera for
now
Tuesday, April 9, 13

There’s already an alternative out there, for consulting foreman as your data backend
Tuesday, April 9, 13

But really, just get yourself onto Puppet 3 and take advantage of automatic Hiera!
Tuesday, April 9, 13

Hiera backends are pluggable too. Here are two examples.
Tuesday, April 9, 13
Best Practices


                       • Confirm to the Style Guide
                       • Use Parameterized Classes
                       • Don’t use hiera() directly

#PuppetCamp
Tuesday, April 9, 13

Re-cap.
The
                       Team


Tuesday, April 9, 13
What have we been
                        up to?


                       • Re-launch and Re-design



Tuesday, April 9, 13

Though we’re small, we’ve been really busy!
Tuesday, April 9, 13
Tuesday, April 9, 13

Lots of little features add up to a substantially nicer to use Forge.
Tuesday, April 9, 13

Download counts, now in your search results!
GitHub-based Module Publish




          ryan@puppetlabs.com
Tuesday, April 9, 13

Edit your Modulefile, push your commit and we’ll do the publishing! Coming soon to a
repository near you.
What’s Next?




          A Full & Public API
Tuesday, April 9, 13

Also coming soon, an actual API for doing all sorts of things with the Forge.
What’s Next?




Tuesday, April 9, 13

Just an experimental mock-up of search results. Actual feature will absolutely look and
behave differently.
On-Premise Forge?




Tuesday, April 9, 13

Private Forge has been a common request. The requests I get are two-fold.

A) How can I install public Forge content on a master that can’t reach the outside.
B) How can I contribute company-specific content to a Forge-like thing inside my firewall
On-Premise Forge?




Tuesday, April 9, 13

Private Forge has been a common request. The requests I get are two-fold.

A) How can I install public Forge content on a master that can’t reach the outside.
B) How can I contribute company-specific content to a Forge-like thing inside my firewall
On-Premise Forge?




Tuesday, April 9, 13

Private Forge has been a common request. The requests I get are two-fold.

A) How can I install public Forge content on a master that can’t reach the outside.
B) How can I contribute company-specific content to a Forge-like thing inside my firewall
On-Premise Forge?




Tuesday, April 9, 13

Private Forge has been a common request. The requests I get are two-fold.

A) How can I install public Forge content on a master that can’t reach the outside.
B) How can I contribute company-specific content to a Forge-like thing inside my firewall
On-Premise Forge?




Tuesday, April 9, 13

Private Forge has been a common request. The requests I get are two-fold.

A) How can I install public Forge content on a master that can’t reach the outside.
B) How can I contribute company-specific content to a Forge-like thing inside my firewall
On-Premise Forge?




Tuesday, April 9, 13

Private Forge has been a common request. The requests I get are two-fold.

A) How can I install public Forge content on a master that can’t reach the outside.
B) How can I contribute company-specific content to a Forge-like thing inside my firewall
PulpProject.org




Tuesday, April 9, 13

RedHat’s Pulp Project is repository management software that recently added support for
Puppet Modules.
• Manage Modules on-premise
                       • Mirror Public Forge
                       • BUT, please work with me on this
                         • Email me or comment on #5033
                           • ryan@puppetlabs.com

Tuesday, April 9, 13

If you’re interested in this, email ryan@puppetlabs.com or add your thoughts to https://
projects.puppetlabs.com/issues/5033.

We’re going to do something in this space, but want to hear more from you on what you
need.
Want to help?




#PuppetCamp
Tuesday, April 9, 13

If you want to add your influence to our products, join the Puppet Labs Test Pilots program!

https://puppetlabs.com/community/puppet-test-pilots-program/
• Sharpen your skills
                       • Get Certified
                       • Online learning on the way
                       • puppetlabs.com/education


#PuppetCamp
Tuesday, April 9, 13

Our education courses are carefully crafted and delivered by our fabulous education team
and professional services team.

Advanced course coming to LA 3/19

Browse upcoming events at http://puppetlabs.eventbrite.com/
Tuesday, April 9, 13
Thank You!

              Please email (or tweet) feedback and questions

                       ryan@puppetlabs.com - @ryanycoleman

                              forge.puppetlabs.com
                                puppetlabs.com/jobs




#PuppetCamp
Tuesday, April 9, 13

Seriously, join our team. It’ll be awesome.

More Related Content

More from Puppet

Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping groundPuppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Puppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet
 
Bolt on Windows - James Pogran
Bolt on Windows - James PogranBolt on Windows - James Pogran
Bolt on Windows - James PogranPuppet
 
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...Puppet
 

More from Puppet (20)

Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Puppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav Hadzhiev
 
Bolt on Windows - James Pogran
Bolt on Windows - James PogranBolt on Windows - James Pogran
Bolt on Windows - James Pogran
 
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
 

Recently uploaded

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 

Recently uploaded (20)

How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 

Writing and Sharing Great Modules on the Puppet Forge

  • 1. Writing and Sharing Great Modules with the Puppet Forge @ryanycoleman - Product Owner - Puppet Forge Tuesday, April 9, 13
  • 2. About Me #PuppetCamp Tuesday, April 9, 13 Ryan was a RedHat sysadmin for Penn State before joining Puppet Labs as a professional services engineer. Now is product owner for the Forge.
  • 3. #PuppetCamp Tuesday, April 9, 13 The Puppet Forge is a community driven web service for contributing and finding Puppet modules.
  • 4. #PuppetCamp Tuesday, April 9, 13 The following are examples of what you will find on the Forge.
  • 16. Forge Module Count 4000 3000 2000 1000 0 End Q3 End Q4 ~End Q1 ~End Q2 ~End Q3 ~End Q4 #PuppetCamp Tuesday, April 9, 13
  • 26. Code VS Data #PuppetCamp Tuesday, April 9, 13 As you get further along with your Puppet Deployments, separating your code (puppet resources) from the data (what package, what version) becomes increasingly important.
  • 27. Tuesday, April 9, 13 Imagine that you’re doing a research project in the library.
  • 28. Tuesday, April 9, 13 You’ve got some books that help accomplish your goal.
  • 29. Separate Code From Data Tuesday, April 9, 13 But you don’t write in those books. You keep your notes -- your data -- separate.
  • 31. Tuesday, April 9, 13 So where do you express your data and how does Puppet find it?
  • 32. Automatic Data Lookup Built into Puppet 3 Tuesday, April 9, 13
  • 33. Tuesday, April 9, 13 The answer, use Hiera! Seriously, these docs rock. Read them. http://docs.puppetlabs.com/hiera/1/index.html
  • 34. It’s MAGIC But also, it’s not... #PuppetCamp Tuesday, April 9, 13 But first, let’s take a closer look at a Puppet run.
  • 37. Hello! I’m James_Bond running the RedHat license to kill downtime. Tuesday, April 9, 13
  • 38. Good to know! Hmm, what does James_Bond need to enforce?. Tuesday, April 9, 13
  • 39. James_Bond? Enforce External Node Forge Classifier OK, what do I need for Forge? Modules Modules Modules Modules Tuesday, April 9, 13
  • 40. forge::package? Data Bindings Hiera Hiearchy Backends $clientcert $operatingsystem JSON YAML MySQL Foreman common Tuesday, April 9, 13 The Puppet Master needs forge::package. To get this data... - It consults its data bindings terminus (abstraction for looking up data) - Default lookup to Hiera (key/value store for data) - Hiera consults its back-end data stores (defaults to yaml) - Hiera returns result of lookup to master (key/value or could not find)
  • 41. forge::package? Data Bindings It’s screen! Hiera Hiearchy Backends $clientcert $operatingsystem JSON YAML MySQL Redis common Tuesday, April 9, 13 The Puppet Master needs forge::package. To get this data... - It consults its data bindings terminus (abstraction for looking up data) - Default lookup to Hiera (key/value store for data) - Hiera consults its back-end data stores (defaults to yaml) - Hiera returns result of lookup to master (key/value or could not find)
  • 42. ? $forge::package Hiearchy $clientcert $james_bond $operatingsystem $RedHat common common Tuesday, April 9, 13 Hiera will examine the lookup order of its data backends and its lookup hierarchy. If you specified a variable lookup in your hierarchy, Hiera will use available facts when choosing the backend file to lookup.
  • 43. Expressing the configuration of hiera data backends and lookup hierarchy Tuesday, April 9, 13 Hiera lets you express data in some structured format (which is pluggable). You then establish a hierarchy of lookup, however you like, usually based on facts.
  • 44. Ok, so how do I use it with my Puppet classes? #PuppetCamp Tuesday, April 9, 13 Thankfully, Puppet 3 has made implementing Hiera really simple.
  • 45. In the early days... Tuesday, April 9, 13 Please don’t use the hiera() function. Consider it legacy.
  • 46. In the early days... Tuesday, April 9, 13 This is better, as the user can override this default parameter value. With this, you’re locked into hiera.
  • 47. Here’s the magic! Tuesday, April 9, 13 But really, just get yourself onto Puppet 3 and take advantage of automatic Hiera!
  • 48. Data Lookup Order • Use explicit class declaration values • Query Data Binding • Use the default value from class. • Fail compilation with an error if no value can be found. Tuesday, April 9, 13 This slide could be more visual vs text-based
  • 49. Data Bindings don’t lock yourself in #PuppetCamp Tuesday, April 9, 13 Additionally, protect yourself from a potential loss of Hiera.
  • 50. Built into Puppet 3 Tuesday, April 9, 13 data_bindings were implemented to be an abstraction for data lookup, defaulting to hiera for now
  • 51. Tuesday, April 9, 13 There’s already an alternative out there, for consulting foreman as your data backend
  • 52. Tuesday, April 9, 13 But really, just get yourself onto Puppet 3 and take advantage of automatic Hiera!
  • 53. Tuesday, April 9, 13 Hiera backends are pluggable too. Here are two examples.
  • 55. Best Practices • Confirm to the Style Guide • Use Parameterized Classes • Don’t use hiera() directly #PuppetCamp Tuesday, April 9, 13 Re-cap.
  • 56. The Team Tuesday, April 9, 13
  • 57. What have we been up to? • Re-launch and Re-design Tuesday, April 9, 13 Though we’re small, we’ve been really busy!
  • 59. Tuesday, April 9, 13 Lots of little features add up to a substantially nicer to use Forge.
  • 60. Tuesday, April 9, 13 Download counts, now in your search results!
  • 61. GitHub-based Module Publish ryan@puppetlabs.com Tuesday, April 9, 13 Edit your Modulefile, push your commit and we’ll do the publishing! Coming soon to a repository near you.
  • 62. What’s Next? A Full & Public API Tuesday, April 9, 13 Also coming soon, an actual API for doing all sorts of things with the Forge.
  • 63. What’s Next? Tuesday, April 9, 13 Just an experimental mock-up of search results. Actual feature will absolutely look and behave differently.
  • 64. On-Premise Forge? Tuesday, April 9, 13 Private Forge has been a common request. The requests I get are two-fold. A) How can I install public Forge content on a master that can’t reach the outside. B) How can I contribute company-specific content to a Forge-like thing inside my firewall
  • 65. On-Premise Forge? Tuesday, April 9, 13 Private Forge has been a common request. The requests I get are two-fold. A) How can I install public Forge content on a master that can’t reach the outside. B) How can I contribute company-specific content to a Forge-like thing inside my firewall
  • 66. On-Premise Forge? Tuesday, April 9, 13 Private Forge has been a common request. The requests I get are two-fold. A) How can I install public Forge content on a master that can’t reach the outside. B) How can I contribute company-specific content to a Forge-like thing inside my firewall
  • 67. On-Premise Forge? Tuesday, April 9, 13 Private Forge has been a common request. The requests I get are two-fold. A) How can I install public Forge content on a master that can’t reach the outside. B) How can I contribute company-specific content to a Forge-like thing inside my firewall
  • 68. On-Premise Forge? Tuesday, April 9, 13 Private Forge has been a common request. The requests I get are two-fold. A) How can I install public Forge content on a master that can’t reach the outside. B) How can I contribute company-specific content to a Forge-like thing inside my firewall
  • 69. On-Premise Forge? Tuesday, April 9, 13 Private Forge has been a common request. The requests I get are two-fold. A) How can I install public Forge content on a master that can’t reach the outside. B) How can I contribute company-specific content to a Forge-like thing inside my firewall
  • 70. PulpProject.org Tuesday, April 9, 13 RedHat’s Pulp Project is repository management software that recently added support for Puppet Modules.
  • 71. • Manage Modules on-premise • Mirror Public Forge • BUT, please work with me on this • Email me or comment on #5033 • ryan@puppetlabs.com Tuesday, April 9, 13 If you’re interested in this, email ryan@puppetlabs.com or add your thoughts to https:// projects.puppetlabs.com/issues/5033. We’re going to do something in this space, but want to hear more from you on what you need.
  • 72. Want to help? #PuppetCamp Tuesday, April 9, 13 If you want to add your influence to our products, join the Puppet Labs Test Pilots program! https://puppetlabs.com/community/puppet-test-pilots-program/
  • 73. • Sharpen your skills • Get Certified • Online learning on the way • puppetlabs.com/education #PuppetCamp Tuesday, April 9, 13 Our education courses are carefully crafted and delivered by our fabulous education team and professional services team. Advanced course coming to LA 3/19 Browse upcoming events at http://puppetlabs.eventbrite.com/
  • 75. Thank You! Please email (or tweet) feedback and questions ryan@puppetlabs.com - @ryanycoleman forge.puppetlabs.com puppetlabs.com/jobs #PuppetCamp Tuesday, April 9, 13 Seriously, join our team. It’ll be awesome.