SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Destaque

[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
Payton Chou
 
Identifying Your Customer
Identifying Your CustomerIdentifying Your Customer
Identifying Your Customer
Davender Gupta
 
Tutorial 1 - Browser Basics
Tutorial 1 - Browser BasicsTutorial 1 - Browser Basics
Tutorial 1 - Browser Basics
dpd
 
Change by design (設計思考改變世界)
Change by design (設計思考改變世界)Change by design (設計思考改變世界)
Change by design (設計思考改變世界)
Justin Wu
 
Le canevas de proposition de valeur
Le canevas de proposition de valeurLe canevas de proposition de valeur
Le canevas de proposition de valeur
Davender 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
 

Destaque (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
 

Semelhante a Puppet

Managing Your Runtime With P2
Managing Your Runtime With P2Managing Your Runtime With P2
Managing Your Runtime With P2
Pascal Rapicault
 
Installaling Puppet Master and Agent
Installaling Puppet Master and AgentInstallaling Puppet Master and Agent
Installaling Puppet Master and Agent
Ranjit Avasarala
 
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
Paramkusham 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 tool
elliando dias
 
PHP North-East - Automated Deployment
PHP North-East - Automated DeploymentPHP North-East - Automated Deployment
PHP North-East - Automated Deployment
Michael Peacock
 
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
Concentrated Technology
 

Semelhante a 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
 

Mais de John Coggeshall

Mais de 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
 

Último

+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@
 

Último (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
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)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL 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...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
+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...
 
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
 
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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
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
 
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
 

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