SlideShare a Scribd company logo
1 of 35
Advanced Application Deployment with Puppet John Coggeshall
About Me CTO, Individual Digital, Inc. (Startup) Author of ext/tidy, PHP 5 Unleashed, Zend Ent. PHP Patterns Twitter: @coogle
What’s Puppet? Puppet is … A deployment tool Client/Server Declarative Resource based Puppet is not.. But can leverage Ant Make
What makes Puppet cool? Centralized, Scalable configuration management for server farms Abstracted from underlying OS (to a point) Configurations can be stored in a VCS (i.e. Subversion) for historical tracking of changes Automated configuration of individual machines based on configuration Auditing of configuration of individual machines
It’s about knowing Puppet helps bridge the gap between system administration and development teams Developers: Virtual machines managed by local Puppet Need new extension? Update Puppet configurations System Admins: System changes are tracked through commits, can be reviewed easily Same Puppet system used as locally Result: Consistent platforms throughout with minimal pain
Puppet from 10,000 feet Communication over HTTPS with signed certificates Reporting from clients back to master / Dashboard ability
Including Development  Same Puppet can run as a stand-alone executable, running off of local checked-out manifests
From Zero to Puppet Setup Puppet Master (Kickstart, etc.) Write Puppet Modules (apache module, etc.) Deploy modules to server Setup puppet client with master Process Catalog
Installing Puppet (Debian) Installing Puppet is easy:  (note: ‘puppetmaster’ package also available stand-alone) For client/server configurations, you’ll also need to sign your client’s certificate Step 1: Attempt to connect to puppet master from client (rejected) Step 2: Use the puppetca tool to sign certificates on master:
About Certificates Certificates are very important to puppet, it’s basically the way authentication is performed Puppet does support the ability to auto-sign certificates of new clients Not Recommended – potentially this would allow anyone to sign-in to your puppet master and potentially acquire configuration files, etc. - a big security risk
Things you need to know Nodes – A machine being configured, identified generally by its hostname Modules – A collection of classes and files all related to each other Class – A collection of resources related to each other Resources – Things like software packages, files, users, etc. Defines – A function-like construct for resources
Resources: Implementation Abstraction Puppet is based on resources Think in terms of a “user”, not the /etc/passwd file Declare what you want done, let puppet worry about how that happens
Resource Types (some) Augeas Computer Cron Exec File Filebucket Group Host Mailalias Nagios Package Service SSH Key User VCS Repo Zone More At: http://docs.puppetlabs.com/references/stable/type.html
Getting Started Basic idea: The global master manifest is site.pp which typically defines the node types puppet can configure Step 1: Define a node by hostname Step 2: Include / declare any configuration to be done to that node Puppet supports includes and modules, making things a lot easier to organize
How I organize puppet You can organize puppet in many ways to suit your needs Can be a bit confusing when getting started How I organize my puppet manifests:
Puppet Modules Puppet Modules are designed to encapsulate a logical segment of the machine’s setup Example modules: MongoDb Users Apache Webserver
Puppet Modules Modules also have access to a simple file service, allowing you to store entire configuration files within the module then transfer those files to the machine
Puppet Module Structure manifests/  - declarations files/ - hosted files init.pp –processed when module is included
How I organize puppet modules Puppet modules have a simple “class” structure I typically create one or more of the following classes for each module: Module::install Module::config Module::service Then, include these modules in the proper order with the base module’s class Every “package” should be a module to avoid dependency problems
Example: Custom login message Task: Update the /etc/issue-standard file so it always displays the IP address of the machine when you connect to it Useful for VMs, inconsequential to deployed boxes While we’re at it, put a scary warning up at login What we need to do: Create a /etc/issue-standard we want to use Create a update-prelogin.sh script to determine IP address and update /etc/issue as necessary Install new standard, as well as pre-login script
Our update script
Creating modules/issue Now we need to create a modules/issue that performs the necessary tasks Step 1: Create issues/files/update-prelogin.sh Step 2: Create init.pp Step 3: Profit
modules/issue/init.pp
Using our module To use our new module for a specific node type, simply include it in the node declaration of site.pp: Inheritance works great too:
Dependencies, Notifications and Subscriptions Resources support the notion of dependencies, notifications, and subscriptions Dependencies – indicate things that have to happen first before the requested resource is processed Notifications – Trigger the activation of another resource after the requested resource is processed Subscriptions – Subscribe to another resource, and process itself when the target resource is processed
Requiring Resources
Notifications / Subscriptions
System Facts with Facter Puppet provides access to a number of variables defining things about the system being configured through Facter
Variables / Conditionals Puppet also supports simple variable/conditional abilities
Installing websites When specifically dealing with websites, you can use a little shell scripting to install your site, then leverage that
Installing Web Apps from VCS
From Source.. Like web sites, you can use similar techniques of copying/running shell scripts for compiling software Easier to get going, but best answer would be to create custom packages in both cases
Installing Node.js
Defines Defines can be thought of in some ways as functions for resources Allows you to factor out common tasks into a single location for maintainability, etc.
Summary and Thank you! This is by no means a complete dissertation, merely an introduction to an advanced deployment technique Further reading: http://docs.puppetlabs.com/guides/language_guide.html http://docs.puppetlabs.com/references/stable/type.html http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Patterns These slides will be available on SlideShare.net Feedback Welcome: http://joind.in/2908

More Related Content

Viewers also liked

Innovate Like A Startup
Innovate Like A StartupInnovate Like A Startup
Innovate Like A StartupDavender Gupta
 
Comment établir vos prix
Comment établir vos prixComment établir vos prix
Comment établir vos prixDavender Gupta
 
Votre marché cible - mythes et réalités
Votre marché cible - mythes et réalitésVotre marché cible - mythes et réalités
Votre marché cible - mythes et réalitésDavender Gupta
 
Comment identifier vos investisseurs
Comment identifier vos investisseursComment identifier vos investisseurs
Comment identifier vos investisseursDavender Gupta
 
Vendre, c'est une question de relation
Vendre, c'est une question de relationVendre, c'est une question de relation
Vendre, c'est une question de relationDavender Gupta
 
Comment financer son startup (Atelier BMO/Startup Canada)
Comment financer son startup (Atelier BMO/Startup Canada)Comment financer son startup (Atelier BMO/Startup Canada)
Comment financer son startup (Atelier BMO/Startup Canada)Davender Gupta
 
Strategy: An Entrepreneur Point Of View
Strategy: An Entrepreneur Point Of ViewStrategy: An Entrepreneur Point Of View
Strategy: An Entrepreneur Point Of ViewDavender Gupta
 
[20081118] How To Trace Code Like Source Insight Through Vim
[20081118] How To Trace Code Like Source Insight Through Vim[20081118] How To Trace Code Like Source Insight Through Vim
[20081118] How To Trace Code Like Source Insight Through VimPayton Chou
 
Identifying Your Customer
Identifying Your CustomerIdentifying Your Customer
Identifying Your CustomerDavender Gupta
 
La création d'entreprise du point de vue entrepreneurial (HEC Montréal)
La création d'entreprise du point de vue entrepreneurial (HEC Montréal)La création d'entreprise du point de vue entrepreneurial (HEC Montréal)
La création d'entreprise du point de vue entrepreneurial (HEC Montréal)Davender Gupta
 
Tutorial 1 - Browser Basics
Tutorial 1 - Browser BasicsTutorial 1 - Browser Basics
Tutorial 1 - Browser Basicsdpd
 
Exercice de validation (correspondance problème-solution)
Exercice de validation (correspondance problème-solution)Exercice de validation (correspondance problème-solution)
Exercice de validation (correspondance problème-solution)Davender Gupta
 
Change by design (設計思考改變世界)
Change by design (設計思考改變世界)Change by design (設計思考改變世界)
Change by design (設計思考改變世界)Justin Wu
 
Ten Questions You Need To Ask Yourself To Launch Successfully
Ten Questions You Need To Ask Yourself To Launch SuccessfullyTen Questions You Need To Ask Yourself To Launch Successfully
Ten Questions You Need To Ask Yourself To Launch SuccessfullyDavender Gupta
 
The Business Model Canvas (outline)
The Business Model Canvas (outline)The Business Model Canvas (outline)
The Business Model Canvas (outline)Davender Gupta
 
Le canevas de proposition de valeur
Le canevas de proposition de valeurLe canevas de proposition de valeur
Le canevas de proposition de valeurDavender Gupta
 
Talk with Steve Blank at true ventures
Talk with Steve Blank at true ventures Talk with Steve Blank at true ventures
Talk with Steve Blank at true ventures Alexander Osterwalder
 
Les affaires... à une vitesse humaine
Les affaires... à une vitesse humaineLes affaires... à une vitesse humaine
Les affaires... à une vitesse humaineDavender Gupta
 

Viewers also liked (20)

Innovate Like A Startup
Innovate Like A StartupInnovate Like A Startup
Innovate Like A Startup
 
Comment établir vos prix
Comment établir vos prixComment établir vos prix
Comment établir vos prix
 
Votre marché cible - mythes et réalités
Votre marché cible - mythes et réalitésVotre marché cible - mythes et réalités
Votre marché cible - mythes et réalités
 
Comment identifier vos investisseurs
Comment identifier vos investisseursComment identifier vos investisseurs
Comment identifier vos investisseurs
 
Vendre, c'est une question de relation
Vendre, c'est une question de relationVendre, c'est une question de relation
Vendre, c'est une question de relation
 
Comment financer son startup (Atelier BMO/Startup Canada)
Comment financer son startup (Atelier BMO/Startup Canada)Comment financer son startup (Atelier BMO/Startup Canada)
Comment financer son startup (Atelier BMO/Startup Canada)
 
Strategy: An Entrepreneur Point Of View
Strategy: An Entrepreneur Point Of ViewStrategy: An Entrepreneur Point Of View
Strategy: An Entrepreneur Point Of View
 
[20081118] How To Trace Code Like Source Insight Through Vim
[20081118] How To Trace Code Like Source Insight Through Vim[20081118] How To Trace Code Like Source Insight Through Vim
[20081118] How To Trace Code Like Source Insight Through Vim
 
Identifying Your Customer
Identifying Your CustomerIdentifying Your Customer
Identifying Your Customer
 
La création d'entreprise du point de vue entrepreneurial (HEC Montréal)
La création d'entreprise du point de vue entrepreneurial (HEC Montréal)La création d'entreprise du point de vue entrepreneurial (HEC Montréal)
La création d'entreprise du point de vue entrepreneurial (HEC Montréal)
 
Tutorial 1 - Browser Basics
Tutorial 1 - Browser BasicsTutorial 1 - Browser Basics
Tutorial 1 - Browser Basics
 
Exercice de validation (correspondance problème-solution)
Exercice de validation (correspondance problème-solution)Exercice de validation (correspondance problème-solution)
Exercice de validation (correspondance problème-solution)
 
Scrum用一半的時間做兩倍的事(書本筆記)
Scrum用一半的時間做兩倍的事(書本筆記)Scrum用一半的時間做兩倍的事(書本筆記)
Scrum用一半的時間做兩倍的事(書本筆記)
 
Change by design (設計思考改變世界)
Change by design (設計思考改變世界)Change by design (設計思考改變世界)
Change by design (設計思考改變世界)
 
Ten Questions You Need To Ask Yourself To Launch Successfully
Ten Questions You Need To Ask Yourself To Launch SuccessfullyTen Questions You Need To Ask Yourself To Launch Successfully
Ten Questions You Need To Ask Yourself To Launch Successfully
 
The Business Model Canvas (outline)
The Business Model Canvas (outline)The Business Model Canvas (outline)
The Business Model Canvas (outline)
 
Le canevas de proposition de valeur
Le canevas de proposition de valeurLe canevas de proposition de valeur
Le canevas de proposition de valeur
 
Talk with Steve Blank at true ventures
Talk with Steve Blank at true ventures Talk with Steve Blank at true ventures
Talk with Steve Blank at true ventures
 
Les affaires... à une vitesse humaine
Les affaires... à une vitesse humaineLes affaires... à une vitesse humaine
Les affaires... à une vitesse humaine
 
Canvas examples
Canvas examplesCanvas examples
Canvas examples
 

Similar to Puppet

Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2Pascal Rapicault
 
Puppet slides for intelligrape
Puppet slides for intelligrapePuppet slides for intelligrape
Puppet slides for intelligrapeSharad Aggarwal
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0Jasmine Conseil
 
Installaling Puppet Master and Agent
Installaling Puppet Master and AgentInstallaling Puppet Master and Agent
Installaling Puppet Master and AgentRanjit Avasarala
 
Puppet Keynote by Ralph Luchs
Puppet Keynote by Ralph LuchsPuppet Keynote by Ralph Luchs
Puppet Keynote by Ralph LuchsNETWAYS
 
final proposal-Lightweight Cloud instance contextualisation tool
final proposal-Lightweight Cloud instance contextualisation toolfinal proposal-Lightweight Cloud instance contextualisation tool
final proposal-Lightweight Cloud instance contextualisation toolParamkusham Shruthi
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolelliando dias
 
Puppet for Developers
Puppet for DevelopersPuppet for Developers
Puppet for Developerssagarhere4u
 
Scalable systems management with puppet
Scalable systems management with puppetScalable systems management with puppet
Scalable systems management with puppetPuppet
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 featuresAngel Ruiz
 
PHP North-East - Automated Deployment
PHP North-East - Automated DeploymentPHP North-East - Automated Deployment
PHP North-East - Automated DeploymentMichael Peacock
 
Automated Deployment
Automated DeploymentAutomated Deployment
Automated Deploymentphpne
 
Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...
Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...
Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...Puppet
 
Inventory your network and clients with PowerShell
Inventory your network and clients with PowerShellInventory your network and clients with PowerShell
Inventory your network and clients with PowerShellConcentrated Technology
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseDevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseEficode
 

Similar to Puppet (20)

Puppet_training
Puppet_trainingPuppet_training
Puppet_training
 
Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
 
Puppet slides for intelligrape
Puppet slides for intelligrapePuppet slides for intelligrape
Puppet slides for intelligrape
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Installaling Puppet Master and Agent
Installaling Puppet Master and AgentInstallaling Puppet Master and Agent
Installaling Puppet Master and Agent
 
Puppet Keynote by Ralph Luchs
Puppet Keynote by Ralph LuchsPuppet Keynote by Ralph Luchs
Puppet Keynote by Ralph Luchs
 
final proposal-Lightweight Cloud instance contextualisation tool
final proposal-Lightweight Cloud instance contextualisation toolfinal proposal-Lightweight Cloud instance contextualisation tool
final proposal-Lightweight Cloud instance contextualisation tool
 
Puppet quick start guide
Puppet quick start guidePuppet quick start guide
Puppet quick start guide
 
Maven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension toolMaven 2.0 - Project management and comprehension tool
Maven 2.0 - Project management and comprehension tool
 
Deployment automation
Deployment automationDeployment automation
Deployment automation
 
Puppet for Developers
Puppet for DevelopersPuppet for Developers
Puppet for Developers
 
Scalable systems management with puppet
Scalable systems management with puppetScalable systems management with puppet
Scalable systems management with puppet
 
Maven 2 features
Maven 2 featuresMaven 2 features
Maven 2 features
 
PHP North-East - Automated Deployment
PHP North-East - Automated DeploymentPHP North-East - Automated Deployment
PHP North-East - Automated Deployment
 
Automated Deployment
Automated DeploymentAutomated Deployment
Automated Deployment
 
Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...
Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...
Puppet Camp Boston 2014: Continuous Integration for Hyper-V with Puppet (Begi...
 
Puppet demo
Puppet demoPuppet demo
Puppet demo
 
Django Deployment
Django DeploymentDjango Deployment
Django Deployment
 
Inventory your network and clients with PowerShell
Inventory your network and clients with PowerShellInventory your network and clients with PowerShell
Inventory your network and clients with PowerShell
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseDevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet Enterprise
 

More from John Coggeshall

Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for DevelopersJohn Coggeshall
 
ZF2 Modules: Events, Services, and of course, modularity
ZF2 Modules: Events, Services, and of course, modularityZF2 Modules: Events, Services, and of course, modularity
ZF2 Modules: Events, Services, and of course, modularityJohn Coggeshall
 
PHP Development for Google Glass using Phass
PHP Development for Google Glass using PhassPHP Development for Google Glass using Phass
PHP Development for Google Glass using PhassJohn Coggeshall
 
Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for DevelopersJohn Coggeshall
 
Development with Vagrant
Development with VagrantDevelopment with Vagrant
Development with VagrantJohn Coggeshall
 
Introduction to Zend Framework 2
Introduction to Zend Framework 2Introduction to Zend Framework 2
Introduction to Zend Framework 2John Coggeshall
 
10 things not to do at a Startup
10 things not to do at a Startup10 things not to do at a Startup
10 things not to do at a StartupJohn Coggeshall
 
Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for DevelopersJohn Coggeshall
 
Building PHP Powered Android Applications
Building PHP Powered Android ApplicationsBuilding PHP Powered Android Applications
Building PHP Powered Android ApplicationsJohn Coggeshall
 
Ria Applications And PHP
Ria Applications And PHPRia Applications And PHP
Ria Applications And PHPJohn Coggeshall
 
Apache Con 2008 Top 10 Mistakes
Apache Con 2008 Top 10 MistakesApache Con 2008 Top 10 Mistakes
Apache Con 2008 Top 10 MistakesJohn Coggeshall
 
Ria Development With Flex And PHP
Ria Development With Flex And PHPRia Development With Flex And PHP
Ria Development With Flex And PHPJohn Coggeshall
 
Top 10 Scalability Mistakes
Top 10 Scalability MistakesTop 10 Scalability Mistakes
Top 10 Scalability MistakesJohn Coggeshall
 
Enterprise PHP: A Case Study
Enterprise PHP: A Case StudyEnterprise PHP: A Case Study
Enterprise PHP: A Case StudyJohn Coggeshall
 
Building Dynamic Web Applications on i5 with PHP
Building Dynamic Web Applications on i5 with PHPBuilding Dynamic Web Applications on i5 with PHP
Building Dynamic Web Applications on i5 with PHPJohn Coggeshall
 
Migrating from PHP 4 to PHP 5
Migrating from PHP 4 to PHP 5Migrating from PHP 4 to PHP 5
Migrating from PHP 4 to PHP 5John Coggeshall
 

More from John Coggeshall (20)

Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for Developers
 
Migrating to PHP 7
Migrating to PHP 7Migrating to PHP 7
Migrating to PHP 7
 
Peek at PHP 7
Peek at PHP 7Peek at PHP 7
Peek at PHP 7
 
ZF2 Modules: Events, Services, and of course, modularity
ZF2 Modules: Events, Services, and of course, modularityZF2 Modules: Events, Services, and of course, modularity
ZF2 Modules: Events, Services, and of course, modularity
 
PHP Development for Google Glass using Phass
PHP Development for Google Glass using PhassPHP Development for Google Glass using Phass
PHP Development for Google Glass using Phass
 
Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for Developers
 
Development with Vagrant
Development with VagrantDevelopment with Vagrant
Development with Vagrant
 
Introduction to Zend Framework 2
Introduction to Zend Framework 2Introduction to Zend Framework 2
Introduction to Zend Framework 2
 
10 things not to do at a Startup
10 things not to do at a Startup10 things not to do at a Startup
10 things not to do at a Startup
 
Virtualization for Developers
Virtualization for DevelopersVirtualization for Developers
Virtualization for Developers
 
Building PHP Powered Android Applications
Building PHP Powered Android ApplicationsBuilding PHP Powered Android Applications
Building PHP Powered Android Applications
 
Ria Applications And PHP
Ria Applications And PHPRia Applications And PHP
Ria Applications And PHP
 
Beyond the Browser
Beyond the BrowserBeyond the Browser
Beyond the Browser
 
Apache Con 2008 Top 10 Mistakes
Apache Con 2008 Top 10 MistakesApache Con 2008 Top 10 Mistakes
Apache Con 2008 Top 10 Mistakes
 
Ria Development With Flex And PHP
Ria Development With Flex And PHPRia Development With Flex And PHP
Ria Development With Flex And PHP
 
Top 10 Scalability Mistakes
Top 10 Scalability MistakesTop 10 Scalability Mistakes
Top 10 Scalability Mistakes
 
Enterprise PHP: A Case Study
Enterprise PHP: A Case StudyEnterprise PHP: A Case Study
Enterprise PHP: A Case Study
 
Building Dynamic Web Applications on i5 with PHP
Building Dynamic Web Applications on i5 with PHPBuilding Dynamic Web Applications on i5 with PHP
Building Dynamic Web Applications on i5 with PHP
 
PHP Security Basics
PHP Security BasicsPHP Security Basics
PHP Security Basics
 
Migrating from PHP 4 to PHP 5
Migrating from PHP 4 to PHP 5Migrating from PHP 4 to PHP 5
Migrating from PHP 4 to PHP 5
 

Recently uploaded

AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxAbida Shariff
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2DianaGray10
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfFIDO Alliance
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxJennifer Lim
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Julian Hyde
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Patrick Viafore
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka DoktorováCzechDreamin
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 

Recently uploaded (20)

AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 

Puppet

  • 1. Advanced Application Deployment with Puppet John Coggeshall
  • 2. About Me CTO, Individual Digital, Inc. (Startup) Author of ext/tidy, PHP 5 Unleashed, Zend Ent. PHP Patterns Twitter: @coogle
  • 3. What’s Puppet? Puppet is … A deployment tool Client/Server Declarative Resource based Puppet is not.. But can leverage Ant Make
  • 4. What makes Puppet cool? Centralized, Scalable configuration management for server farms Abstracted from underlying OS (to a point) Configurations can be stored in a VCS (i.e. Subversion) for historical tracking of changes Automated configuration of individual machines based on configuration Auditing of configuration of individual machines
  • 5. It’s about knowing Puppet helps bridge the gap between system administration and development teams Developers: Virtual machines managed by local Puppet Need new extension? Update Puppet configurations System Admins: System changes are tracked through commits, can be reviewed easily Same Puppet system used as locally Result: Consistent platforms throughout with minimal pain
  • 6. Puppet from 10,000 feet Communication over HTTPS with signed certificates Reporting from clients back to master / Dashboard ability
  • 7. Including Development Same Puppet can run as a stand-alone executable, running off of local checked-out manifests
  • 8. From Zero to Puppet Setup Puppet Master (Kickstart, etc.) Write Puppet Modules (apache module, etc.) Deploy modules to server Setup puppet client with master Process Catalog
  • 9. Installing Puppet (Debian) Installing Puppet is easy: (note: ‘puppetmaster’ package also available stand-alone) For client/server configurations, you’ll also need to sign your client’s certificate Step 1: Attempt to connect to puppet master from client (rejected) Step 2: Use the puppetca tool to sign certificates on master:
  • 10. About Certificates Certificates are very important to puppet, it’s basically the way authentication is performed Puppet does support the ability to auto-sign certificates of new clients Not Recommended – potentially this would allow anyone to sign-in to your puppet master and potentially acquire configuration files, etc. - a big security risk
  • 11. Things you need to know Nodes – A machine being configured, identified generally by its hostname Modules – A collection of classes and files all related to each other Class – A collection of resources related to each other Resources – Things like software packages, files, users, etc. Defines – A function-like construct for resources
  • 12. Resources: Implementation Abstraction Puppet is based on resources Think in terms of a “user”, not the /etc/passwd file Declare what you want done, let puppet worry about how that happens
  • 13. Resource Types (some) Augeas Computer Cron Exec File Filebucket Group Host Mailalias Nagios Package Service SSH Key User VCS Repo Zone More At: http://docs.puppetlabs.com/references/stable/type.html
  • 14. Getting Started Basic idea: The global master manifest is site.pp which typically defines the node types puppet can configure Step 1: Define a node by hostname Step 2: Include / declare any configuration to be done to that node Puppet supports includes and modules, making things a lot easier to organize
  • 15. How I organize puppet You can organize puppet in many ways to suit your needs Can be a bit confusing when getting started How I organize my puppet manifests:
  • 16. Puppet Modules Puppet Modules are designed to encapsulate a logical segment of the machine’s setup Example modules: MongoDb Users Apache Webserver
  • 17. Puppet Modules Modules also have access to a simple file service, allowing you to store entire configuration files within the module then transfer those files to the machine
  • 18. Puppet Module Structure manifests/ - declarations files/ - hosted files init.pp –processed when module is included
  • 19. How I organize puppet modules Puppet modules have a simple “class” structure I typically create one or more of the following classes for each module: Module::install Module::config Module::service Then, include these modules in the proper order with the base module’s class Every “package” should be a module to avoid dependency problems
  • 20. Example: Custom login message Task: Update the /etc/issue-standard file so it always displays the IP address of the machine when you connect to it Useful for VMs, inconsequential to deployed boxes While we’re at it, put a scary warning up at login What we need to do: Create a /etc/issue-standard we want to use Create a update-prelogin.sh script to determine IP address and update /etc/issue as necessary Install new standard, as well as pre-login script
  • 22. Creating modules/issue Now we need to create a modules/issue that performs the necessary tasks Step 1: Create issues/files/update-prelogin.sh Step 2: Create init.pp Step 3: Profit
  • 24. Using our module To use our new module for a specific node type, simply include it in the node declaration of site.pp: Inheritance works great too:
  • 25. Dependencies, Notifications and Subscriptions Resources support the notion of dependencies, notifications, and subscriptions Dependencies – indicate things that have to happen first before the requested resource is processed Notifications – Trigger the activation of another resource after the requested resource is processed Subscriptions – Subscribe to another resource, and process itself when the target resource is processed
  • 28. System Facts with Facter Puppet provides access to a number of variables defining things about the system being configured through Facter
  • 29. Variables / Conditionals Puppet also supports simple variable/conditional abilities
  • 30. Installing websites When specifically dealing with websites, you can use a little shell scripting to install your site, then leverage that
  • 32. From Source.. Like web sites, you can use similar techniques of copying/running shell scripts for compiling software Easier to get going, but best answer would be to create custom packages in both cases
  • 34. Defines Defines can be thought of in some ways as functions for resources Allows you to factor out common tasks into a single location for maintainability, etc.
  • 35. Summary and Thank you! This is by no means a complete dissertation, merely an introduction to an advanced deployment technique Further reading: http://docs.puppetlabs.com/guides/language_guide.html http://docs.puppetlabs.com/references/stable/type.html http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Patterns These slides will be available on SlideShare.net Feedback Welcome: http://joind.in/2908