SlideShare a Scribd company logo
Multiple approaches to 
managing your Puppet 
modules 
Puppet Camp Seattle 
2014-11-11 
Seattle, WA 
LearnPuppet.com 
Garrett Honeycutt 
gh@learnpuppet.com 
@learnpuppet
# whoami 
http://www.linkedin.com/in/garretthoneycutt 
© 2014 GH Solutions, LLC
LearnPuppet.com 
Audits 
Consulting 
Training 
Advanced Topics with Test Driven Development 
© 2014 GH Solutions, LLC
@fossetcon 
© 2014 GH Solutions, LLC
© 2014 GH Solutions, LLC
What is a Module? 
© 2014 GH Solutions, LLC
Modules 
A module is a self contained directory structure for encapsulating 
puppet code. 
© 2014 GH Solutions, LLC
Metadata 
# Modulefile 
name 'ghoneycutt-nscd' 
version '1.0.2' 
source 'git://github.com/ghoneycutt/puppet-module-nscd.git' 
author 'ghoneycutt' 
license 'Apache License, Version 2.0' 
summary 'manage NSCD - name service cache daemon' 
description 'Manage every aspect of NSCD - name service cache daemon' 
project_page 'https://github.com/ghoneycutt/puppet-module-nscd' 
dependency 'puppetlabs/stdlib', '>= 3.2.0' 
© 2014 GH Solutions, LLC
Metadata 
# metadata.json 
{ 
"name": "ghoneycutt-nscd", 
"version": "1.0.2", 
"author": "ghoneycutt", 
"summary": "manage NSCD - name service cache daemon", 
"license": "Apache License, Version 2.0", 
"source": "git://github.com/ghoneycutt/puppet-module-nscd.git", 
"project_page": "https://github.com/ghoneycutt/puppet-module-nscd", 
"issues_url": "https://github.com/ghoneycutt/puppet-module-nscd/issues", 
"description": "Manage every aspect of NSCD - name service cache daemon", 
"dependencies": [ 
{"name":"puppetlabs/stdlib","version_requirement":">= 3.2.0"} 
] 
} 
© 2014 GH Solutions, LLC
Skeleton 
Provides a template for generating new modules 
https://github.com/ghoneycutt/puppet-module-skeleton 
$ git clone https://github.com/ghoneycutt/puppet-module-skeleton 
$ VARDIR=`puppet config print vardir` 
$ mkdir -p $VARDIR/puppet-module/skeleton/ 
$ rsync -avp --exclude .git puppet-module-skeleton/  
$VARDIR/puppet-module/skeleton/ 
© 2014 GH Solutions, LLC
Generate a module 
$ cd /etc/puppet/modules 
$ puppet module generate <forgename>-<modulename> 
$ mv <forgename-modulename> <modulename> 
© 2014 GH Solutions, LLC
Components 
ghoneycutt-motd 
ghoneycutt-motd/.fixtures.yml 
ghoneycutt-motd/.gitignore 
ghoneycutt-motd/.travis.yml 
ghoneycutt-motd/Gemfile 
ghoneycutt-motd/LICENSE 
ghoneycutt-motd/Modulefile 
ghoneycutt-motd/README.md 
ghoneycutt-motd/Rakefile 
ghoneycutt-motd/manifests 
ghoneycutt-motd/manifests/init.pp 
ghoneycutt-motd/spec 
ghoneycutt-motd/spec/classes 
ghoneycutt-motd/spec/classes/init_spec.rb 
ghoneycutt-motd/spec/fixtures 
ghoneycutt-motd/spec/fixtures/manifests 
ghoneycutt-motd/spec/fixtures/manifests/site.pp 
ghoneycutt-motd/spec/fixtures/modules 
ghoneycutt-motd/spec/spec_helper.rb 
ghoneycutt-motd/tests 
ghoneycutt-motd/tests/init.pp
In the beginning 
© 2014 GH Solutions, LLC
In the beginning... 
Things were simple. We stuck all of our modules into one repo. 
Luke told me it was a good idea and we spent time puppetizing 
the setup. 
© 2014 GH Solutions, LLC
In the beginning... 
That was 2008. 
© 2014 GH Solutions, LLC
There are better ways! 
© 2014 GH Solutions, LLC
Looking back 
Everyone has to be on the same release cycle or you get 
dependency issues. 
© 2014 GH Solutions, LLC
Scale 
This scales to one organization with one release cycle who are 
not concerned with others using their code. 
© 2014 GH Solutions, LLC
Pro's 
Easy to get started 
© 2014 GH Solutions, LLC
Con's 
Everything is released at the same time 
Promotes forking 
Merge hell 
© 2014 GH Solutions, LLC
Analysis 
Avoid at all costs. 
Separate repo for each module 
© 2014 GH Solutions, LLC
Puppetfile 
© 2014 GH Solutions, LLC
Puppetfile 
Simple file that lists your modules, where to get them, and at what version. 
# git repo 
mod 'nscd', 
:git => 'git://github.com/ghoneycutt/puppet-module-nscd.git', 
:ref => 'v1.0.0' 
© 2014 GH Solutions, LLC
Puppetfile 
Also supports the Puppet Forge 
# puppet forge 
forge 'https://forgeapi.puppetlabs.com' 
mod 'puppetlabs/stdlib', '4.2.1' 
© 2014 GH Solutions, LLC
Puppetfile 
Can be validated and kept under revision control. 
ruby -c Puppetfile 
© 2014 GH Solutions, LLC
ghoneycutt's puppet-modules 
https://github.com/ghoneycutt/puppet-modules 
All of the modules and their dependencies that I write, use, and support. 
apache inittab pam ruby 
apt localization passenger selinux 
common make pe_gem ssh 
concat motd portage stdlib 
dnsclient mysql postgresql sysklogd 
facter network puppet timezone 
firewall nfs puppetdb types 
gcc nisclient r10k utils 
git nrpe rancid vcsrepo 
hosts nscd redhat vim 
htpasswd nsswitch rpcbind wget 
inifile ntp rsyslog xinetd 
© 2014 GH Solutions, LLC
modulepath 
© 2014 GH Solutions, LLC
Puppet < 3.6 
Search path for modules 
modulepath = 
/etc/puppet/environments/$environment/modules:/etc/puppet/modules 
© 2014 GH Solutions, LLC
Puppet >= 3.6 
modulepath is deprecated 
Warning: Setting modulepath is deprecated in puppet.conf. See 
http://links.puppetlabs.com/env-settings-deprecations (at 
/usr/lib/ruby/site_ruby/1.8/puppet/settings.rb:1095:in 
`issue_deprecations') 
© 2014 GH Solutions, LLC
Puppet >= 3.6 
environmentpath = /etc/puppet/environments 
basemodulepath = /etc/puppet/modules 
© 2014 GH Solutions, LLC
environmentpath 
A search path for directory environments. Under $environmentpath are directories for each 
$environment and under those are modules and manifests. 
/etc/puppet/environments 
├── dev 
│ ├── manifests 
│ │ └── site.pp 
│ └── modules 
│ ├── apache 
│ ├── ... 
│ └── zookeeper 
├── fix_it 
│ ├── manifests 
│ │ └── site.pp 
│ └── modules 
│ ├── apache 
│ ├── ... 
│ └── zookeeper 
└── production 
├── manifests 
│ └── site.pp 
└── modules 
├── apache 
├── ... 
└── zookeeper 
© 2014 GH Solutions, LLC
basemodulepath 
Search path for global modules. This is essentially appended to the modulepath. 
basemodulepath = /var/local/ghoneycutt-modules 
© 2014 GH Solutions, LLC
Puppet Forge 
© 2014 GH Solutions, LLC
Managed by Ryan 
Coleman 
@ryanycoleman
Puppet Forge 
Repo of puppet modules with dependency tracking. 
© 2014 GH Solutions, LLC
2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle
Puppet Forge -- Demo Time 
search 
# puppet module search openstack 
install 
# puppet module install puppetlabs-openstack 
© 2014 GH Solutions, LLC
Search by metadata 
© 2014 GH Solutions, LLC
Pro's 
Great way to find new modules 
Can filter by OS and Puppet version 
Can install from command line 
Resolves dependencies 
© 2014 GH Solutions, LLC
Con's 
Installing from the command line leaves 
you without something to track in 
version control. 
Resolving dependencies based on 
modules' metadata can be troublesome. 
© 2014 GH Solutions, LLC
Analysis 
Use the forge to find modules 
Install from the command line when 
developing to make note of your 
dependencies 
Potentially use forge in your Puppetfile 
© 2014 GH Solutions, LLC
librarian-puppet 
© 2014 GH Solutions, LLC
Written by Tim Sharpe 
@rodjek 
© 2014 GH Solutions, LLC
librarian-puppet 
Iterates through Puppetfile and recursively solves dependencies 
for you. 
© 2014 GH Solutions, LLC
Installation 
# sudo gem install -V librarian-puppet 
Usage 
# cd /path/to/dir_with_Puppetfile 
# librarian-puppet install -v 
© 2014 GH Solutions, LLC
Pro's 
Uses a Puppetfile, so you have 
something in version control 
Handles dependencies 
© 2014 GH Solutions, LLC
Con's 
Handles dependencies - this is a 
nightmare with a large set of diverse 
modules 
© 2014 GH Solutions, LLC
Analysis 
After experiencing a lot of frustration with the dependency 
management, I gave up on this and moved to librarian-puppet-simple. 
Big props to Tim for writing this and Puppetfile which has 
became a standard. 
© 2014 GH Solutions, LLC
librarian-puppet-simple 
© 2014 GH Solutions, LLC
Written by Dan Bode 
@bodepd 
© 2014 GH Solutions, LLC
librarian-puppet-simple 
Iterates through Puppetfile without any dependency management. 
© 2014 GH Solutions, LLC
Installation 
# sudo gem install -V librarian-puppet-simple 
Usage 
Similar to librarian-puppet 
# cd /path/to/dir_with_Puppetfile 
# librarian-puppet install -v 
© 2014 GH Solutions, LLC
Pro's 
No dependency management 
Uses a Puppetfile, so you have 
something in version control 
© 2014 GH Solutions, LLC
Con's 
..nope.. 
© 2014 GH Solutions, LLC
Analysis 
Dan is my hero. After becoming frustrated with librarian-puppet's 
dependency management, this tool simply iterates over a list of 
modules, which is awesomely simple. 
© 2014 GH Solutions, LLC
r10k 
© 2014 GH Solutions, LLC
Written by Adrien Thebo 
@nullfinch 
© 2014 GH Solutions, LLC
r10k 
Creates an environment for every branch in your puppet-modules 
git repo. 
© 2014 GH Solutions, LLC
Installation 
There's a module for that https://github.com/acidprime/r10k 
© 2014 GH Solutions, LLC
Work flow 
[foo@laptop]# git checkout -b fixit  
vi Puppetfile  
ruby -c Puppetfile  
git commit -a  
git push origin fixit 
[root@puppet]# r10k deploy environment -vp &&  
service httpd graceful 
© 2014 GH Solutions, LLC
Automate deploy step with ssh keys 
# Hiera entry using ghoneycutt/ssh 
ssh::keys: 
r10k: 
ensure: 'present' 
user: 'root' 
type: 'rsa' 
key: 'AAAAB3Nz....' 
options: 'command="/usr/bin/r10k deploy environment -vp  
&& /sbin/service httpd graceful"' 
# ~/.ssh/config on your workstation 
Host r10k 
User root 
Hostname puppet.example.com 
IdentityFile /Users/gh/.ssh/r10k 
[foo@laptop]# ssh r10k 
© 2014 GH Solutions, LLC
Add a rake task 
# Rakefile 
task :deploy do 
sh 'ssh r10k' end 
[foo@laptop]# rake deploy 
© 2014 GH Solutions, LLC
MCollective 
include r10k::mcollective from acidprime/r10k 
[foo@laptop]$ mco r10k synchronize 
© 2014 GH Solutions, LLC
Pro's 
Make's it really easy to do development 
Do not need access to the puppet 
master 
Uses a Puppetfile, so you have 
something in version control 
© 2014 GH Solutions, LLC
Con's 
..nope.. 
You need a centralized git repo, which hopefully you already have 
:) 
© 2014 GH Solutions, LLC
Analysis 
Thebo is my hero, r10k provides an easy work flow for developers 
to make changes in their environment all without shell access on 
the puppet master. 
© 2014 GH Solutions, LLC
Continued Learning 
© 2014 GH Solutions, LLC
Continued Learning 
Puppet modules 
Use my modules https://github.com/ghoneycutt/puppet-modules 
and send me pull requests. 
© 2014 GH Solutions, LLC
Continued Learning 
Ruby 
Follow facter and submit pull requests. 
© 2014 GH Solutions, LLC
Continued Learning 
Ask and Solve Puppet questions 
https://ask.puppetlabs.com - Recommend the weekly digest. 
© 2014 GH Solutions, LLC
Continued Learning 
Puppet modules 
Use my modules https://github.com/ghoneycutt/puppet-modules 
and send me pull requests. 
Ruby 
Follow facter and submit pull requests. 
Ask and Solve Puppet questions 
https://ask.puppetlabs.com - Recommend the weekly digest. 
© 2014 GH Solutions, LLC
Multiple approaches to 
managing your Puppet 
modules 
Puppet Camp Seattle 
2014-11-11 
Seattle, WA 
LearnPuppet.com 
Garrett Honeycutt 
gh@learnpuppet.com 
@learnpuppet
Ad

More Related Content

What's hot (20)

Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Cisco DevNet
 
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Evgeny Antyshev
 
Nas 也可以揀土豆
Nas 也可以揀土豆Nas 也可以揀土豆
Nas 也可以揀土豆
KAI CHU CHUNG
 
Rest, sockets em golang
Rest, sockets em golangRest, sockets em golang
Rest, sockets em golang
jefferson Otoni Lima
 
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf Conference
 
Aug penguin16
Aug penguin16Aug penguin16
Aug penguin16
alhino
 
Test Driven Development with Puppet
Test Driven Development with Puppet Test Driven Development with Puppet
Test Driven Development with Puppet
Puppet
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: Basic
KAI CHU CHUNG
 
Puppet evolutions
Puppet evolutionsPuppet evolutions
Puppet evolutions
Alessandro Franceschi
 
Troubleshooting Puppet
Troubleshooting PuppetTroubleshooting Puppet
Troubleshooting Puppet
Thomas Howard Uphill
 
Trying to build an Open Source browser in 2020
Trying to build an Open Source browser in 2020Trying to build an Open Source browser in 2020
Trying to build an Open Source browser in 2020
Patricia Aas
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVM
Bucharest Java User Group
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Chu-Siang Lai
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
Pantheon
 
GraphQL IN Golang
GraphQL IN GolangGraphQL IN Golang
GraphQL IN Golang
Bo-Yi Wu
 
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWSConfiguring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Puppet
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE Workshop
Puppet
 
Mobile development in 2020
Mobile development in 2020 Mobile development in 2020
Mobile development in 2020
Bogusz Jelinski
 
Expressive Microservice Framework Blastoff
Expressive Microservice Framework BlastoffExpressive Microservice Framework Blastoff
Expressive Microservice Framework Blastoff
Adam Culp
 
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Golang 101 for IT-Pros - Cisco Live Orlando 2018 - DEVNET-1808
Cisco DevNet
 
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Evgeny Antyshev
 
Nas 也可以揀土豆
Nas 也可以揀土豆Nas 也可以揀土豆
Nas 也可以揀土豆
KAI CHU CHUNG
 
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf Conference
 
Aug penguin16
Aug penguin16Aug penguin16
Aug penguin16
alhino
 
Test Driven Development with Puppet
Test Driven Development with Puppet Test Driven Development with Puppet
Test Driven Development with Puppet
Puppet
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: Basic
KAI CHU CHUNG
 
Trying to build an Open Source browser in 2020
Trying to build an Open Source browser in 2020Trying to build an Open Source browser in 2020
Trying to build an Open Source browser in 2020
Patricia Aas
 
From Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVMFrom Ant to Maven to Gradle a tale of CI tools for JVM
From Ant to Maven to Gradle a tale of CI tools for JVM
Bucharest Java User Group
 
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Continuous Delivery Workshop with Ansible x GitLab CI (2nd+)
Chu-Siang Lai
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
Pantheon
 
GraphQL IN Golang
GraphQL IN GolangGraphQL IN Golang
GraphQL IN Golang
Bo-Yi Wu
 
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWSConfiguring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Configuring Highly Scalable Compile Masters, Vasco Cardoso, AWS
Puppet
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE Workshop
Puppet
 
Mobile development in 2020
Mobile development in 2020 Mobile development in 2020
Mobile development in 2020
Bogusz Jelinski
 
Expressive Microservice Framework Blastoff
Expressive Microservice Framework BlastoffExpressive Microservice Framework Blastoff
Expressive Microservice Framework Blastoff
Adam Culp
 

Similar to 2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle (20)

2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
garrett honeycutt
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
Pablo Godel
 
ZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small Teams
Joe Ferguson
 
drupal ci cd concept cornel univercity.pptx
drupal ci cd concept cornel univercity.pptxdrupal ci cd concept cornel univercity.pptx
drupal ci cd concept cornel univercity.pptx
rukuntravel
 
Madison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small TeamsMadison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small Teams
Joe Ferguson
 
Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0
Diego Zuluaga
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Tools
rjsmelo
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
Software Guru
 
JLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App DevelopmentJLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App Development
JLP Community
 
Configuration Management with Puppet
Configuration Management with Puppet Configuration Management with Puppet
Configuration Management with Puppet
Rachel Andrew
 
Building and Customizing CoreOS
Building and Customizing CoreOSBuilding and Customizing CoreOS
Building and Customizing CoreOS
雄也 日下部
 
MongoSV 2011
MongoSV 2011MongoSV 2011
MongoSV 2011
Juan Negron
 
Git::Hooks
Git::HooksGit::Hooks
Git::Hooks
Mikko Koivunalho
 
Tame Your Build And Deployment Process With Hudson, PHPUnit, and SSH
Tame Your Build And Deployment Process With Hudson, PHPUnit, and SSHTame Your Build And Deployment Process With Hudson, PHPUnit, and SSH
Tame Your Build And Deployment Process With Hudson, PHPUnit, and SSH
David Stockton
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
Pantheon
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Fabrice Bernhard
 
Towards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev MachineTowards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev Machine
Krimson
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Dana Luther
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChung
KAI CHU CHUNG
 
Bringing-it-all-together-overview-of-rpm-packaging-in-fedora
Bringing-it-all-together-overview-of-rpm-packaging-in-fedoraBringing-it-all-together-overview-of-rpm-packaging-in-fedora
Bringing-it-all-together-overview-of-rpm-packaging-in-fedora
Lalatendu Mohanty
 
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
2014-08-19 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Chicago
garrett honeycutt
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
Pablo Godel
 
ZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small TeamsZendCon 2015 - DevOps for Small Teams
ZendCon 2015 - DevOps for Small Teams
Joe Ferguson
 
drupal ci cd concept cornel univercity.pptx
drupal ci cd concept cornel univercity.pptxdrupal ci cd concept cornel univercity.pptx
drupal ci cd concept cornel univercity.pptx
rukuntravel
 
Madison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small TeamsMadison PHP 2015 - DevOps For Small Teams
Madison PHP 2015 - DevOps For Small Teams
Joe Ferguson
 
Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0Apigee deploy grunt plugin.1.0
Apigee deploy grunt plugin.1.0
Diego Zuluaga
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Tools
rjsmelo
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
Software Guru
 
JLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App DevelopmentJLPDevs - Optimization Tooling for Modern Web App Development
JLPDevs - Optimization Tooling for Modern Web App Development
JLP Community
 
Configuration Management with Puppet
Configuration Management with Puppet Configuration Management with Puppet
Configuration Management with Puppet
Rachel Andrew
 
Building and Customizing CoreOS
Building and Customizing CoreOSBuilding and Customizing CoreOS
Building and Customizing CoreOS
雄也 日下部
 
Tame Your Build And Deployment Process With Hudson, PHPUnit, and SSH
Tame Your Build And Deployment Process With Hudson, PHPUnit, and SSHTame Your Build And Deployment Process With Hudson, PHPUnit, and SSH
Tame Your Build And Deployment Process With Hudson, PHPUnit, and SSH
David Stockton
 
Lean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and DrushLean Drupal Repositories with Composer and Drush
Lean Drupal Repositories with Composer and Drush
Pantheon
 
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Adopt DevOps philosophy on your Symfony projects (Symfony Live 2011)
Fabrice Bernhard
 
Towards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev MachineTowards the perfect Drupal Dev Machine
Towards the perfect Drupal Dev Machine
Krimson
 
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPHands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHP
Dana Luther
 
DevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChungDevFest 2022 - Cloud Workstation Introduction TaiChung
DevFest 2022 - Cloud Workstation Introduction TaiChung
KAI CHU CHUNG
 
Bringing-it-all-together-overview-of-rpm-packaging-in-fedora
Bringing-it-all-together-overview-of-rpm-packaging-in-fedoraBringing-it-all-together-overview-of-rpm-packaging-in-fedora
Bringing-it-all-together-overview-of-rpm-packaging-in-fedora
Lalatendu Mohanty
 
Ad

More from garrett honeycutt (16)

20180823 - Sensu + Puppet
20180823 - Sensu + Puppet20180823 - Sensu + Puppet
20180823 - Sensu + Puppet
garrett honeycutt
 
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
garrett honeycutt
 
Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...
Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...
Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...
garrett honeycutt
 
(2016-06-11) Packer: Make Multi-Platform Images
(2016-06-11) Packer: Make Multi-Platform Images(2016-06-11) Packer: Make Multi-Platform Images
(2016-06-11) Packer: Make Multi-Platform Images
garrett honeycutt
 
20150613 self-puppet v4-avoiding_dragons
20150613 self-puppet v4-avoiding_dragons20150613 self-puppet v4-avoiding_dragons
20150613 self-puppet v4-avoiding_dragons
garrett honeycutt
 
20150314 - Functional Testing for Configuration Management @ Cascadia IT Con...
20150314  - Functional Testing for Configuration Management @ Cascadia IT Con...20150314  - Functional Testing for Configuration Management @ Cascadia IT Con...
20150314 - Functional Testing for Configuration Management @ Cascadia IT Con...
garrett honeycutt
 
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA142014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
garrett honeycutt
 
20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial
garrett honeycutt
 
TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07
TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07
TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07
garrett honeycutt
 
20130407 load puppevtv3-and_hiera
20130407 load puppevtv3-and_hiera20130407 load puppevtv3-and_hiera
20130407 load puppevtv3-and_hiera
garrett honeycutt
 
20120331 - Expanded Intro to Puppet for LOAD
20120331 - Expanded Intro to Puppet for LOAD20120331 - Expanded Intro to Puppet for LOAD
20120331 - Expanded Intro to Puppet for LOAD
garrett honeycutt
 
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
garrett honeycutt
 
20110611 expanded intro-to_puppet_for_self
20110611 expanded intro-to_puppet_for_self20110611 expanded intro-to_puppet_for_self
20110611 expanded intro-to_puppet_for_self
garrett honeycutt
 
20100425 Configuration Management With Puppet Lfnw
20100425 Configuration Management With Puppet Lfnw20100425 Configuration Management With Puppet Lfnw
20100425 Configuration Management With Puppet Lfnw
garrett honeycutt
 
Fighting Spam With A Perimeter Mail System 20071108 Sasag
Fighting Spam With A Perimeter Mail System 20071108 SasagFighting Spam With A Perimeter Mail System 20071108 Sasag
Fighting Spam With A Perimeter Mail System 20071108 Sasag
garrett honeycutt
 
20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag
garrett honeycutt
 
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
Continuous Deployment Pipeline for Systems - Presented at Ohio LinuxFest 2017...
garrett honeycutt
 
Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...
Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...
Continuous Deployment Pipeline for Systems at Cascadia IT Conference - 2017-0...
garrett honeycutt
 
(2016-06-11) Packer: Make Multi-Platform Images
(2016-06-11) Packer: Make Multi-Platform Images(2016-06-11) Packer: Make Multi-Platform Images
(2016-06-11) Packer: Make Multi-Platform Images
garrett honeycutt
 
20150613 self-puppet v4-avoiding_dragons
20150613 self-puppet v4-avoiding_dragons20150613 self-puppet v4-avoiding_dragons
20150613 self-puppet v4-avoiding_dragons
garrett honeycutt
 
20150314 - Functional Testing for Configuration Management @ Cascadia IT Con...
20150314  - Functional Testing for Configuration Management @ Cascadia IT Con...20150314  - Functional Testing for Configuration Management @ Cascadia IT Con...
20150314 - Functional Testing for Configuration Management @ Cascadia IT Con...
garrett honeycutt
 
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA142014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
2014-11-14 - Why Test Driven Development (TDD) Works for Sysadmins @ LISA14
garrett honeycutt
 
20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial20140406 loa days-tdd-with_puppet_tutorial
20140406 loa days-tdd-with_puppet_tutorial
garrett honeycutt
 
TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07
TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07
TDD with Puppet Tutorial presented at Cascadia IT Conference 2014-03-07
garrett honeycutt
 
20130407 load puppevtv3-and_hiera
20130407 load puppevtv3-and_hiera20130407 load puppevtv3-and_hiera
20130407 load puppevtv3-and_hiera
garrett honeycutt
 
20120331 - Expanded Intro to Puppet for LOAD
20120331 - Expanded Intro to Puppet for LOAD20120331 - Expanded Intro to Puppet for LOAD
20120331 - Expanded Intro to Puppet for LOAD
garrett honeycutt
 
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
garrett honeycutt
 
20110611 expanded intro-to_puppet_for_self
20110611 expanded intro-to_puppet_for_self20110611 expanded intro-to_puppet_for_self
20110611 expanded intro-to_puppet_for_self
garrett honeycutt
 
20100425 Configuration Management With Puppet Lfnw
20100425 Configuration Management With Puppet Lfnw20100425 Configuration Management With Puppet Lfnw
20100425 Configuration Management With Puppet Lfnw
garrett honeycutt
 
Fighting Spam With A Perimeter Mail System 20071108 Sasag
Fighting Spam With A Perimeter Mail System 20071108 SasagFighting Spam With A Perimeter Mail System 20071108 Sasag
Fighting Spam With A Perimeter Mail System 20071108 Sasag
garrett honeycutt
 
20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag20090514 Introducing Puppet To Sasag
20090514 Introducing Puppet To Sasag
garrett honeycutt
 
Ad

Recently uploaded (20)

Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptxLidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
RishavKumar530754
 
Data Structures_Introduction to algorithms.pptx
Data Structures_Introduction to algorithms.pptxData Structures_Introduction to algorithms.pptx
Data Structures_Introduction to algorithms.pptx
RushaliDeshmukh2
 
Avnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights FlyerAvnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights Flyer
WillDavies22
 
Introduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptxIntroduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptx
AS1920
 
Artificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptxArtificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptx
aditichinar
 
AI-assisted Software Testing (3-hours tutorial)
AI-assisted Software Testing (3-hours tutorial)AI-assisted Software Testing (3-hours tutorial)
AI-assisted Software Testing (3-hours tutorial)
Vəhid Gəruslu
 
Oil-gas_Unconventional oil and gass_reseviours.pdf
Oil-gas_Unconventional oil and gass_reseviours.pdfOil-gas_Unconventional oil and gass_reseviours.pdf
Oil-gas_Unconventional oil and gass_reseviours.pdf
M7md3li2
 
Smart_Storage_Systems_Production_Engineering.pptx
Smart_Storage_Systems_Production_Engineering.pptxSmart_Storage_Systems_Production_Engineering.pptx
Smart_Storage_Systems_Production_Engineering.pptx
rushikeshnavghare94
 
Data Structures_Searching and Sorting.pptx
Data Structures_Searching and Sorting.pptxData Structures_Searching and Sorting.pptx
Data Structures_Searching and Sorting.pptx
RushaliDeshmukh2
 
IntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdfIntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdf
Luiz Carneiro
 
railway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forgingrailway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forging
Javad Kadkhodapour
 
"Boiler Feed Pump (BFP): Working, Applications, Advantages, and Limitations E...
"Boiler Feed Pump (BFP): Working, Applications, Advantages, and Limitations E..."Boiler Feed Pump (BFP): Working, Applications, Advantages, and Limitations E...
"Boiler Feed Pump (BFP): Working, Applications, Advantages, and Limitations E...
Infopitaara
 
Reagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptxReagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptx
AlejandroOdio
 
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design ThinkingDT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DhruvChotaliya2
 
Fort night presentation new0903 pdf.pdf.
Fort night presentation new0903 pdf.pdf.Fort night presentation new0903 pdf.pdf.
Fort night presentation new0903 pdf.pdf.
anuragmk56
 
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Process Parameter Optimization for Minimizing Springback in Cold Drawing Proc...
Journal of Soft Computing in Civil Engineering
 
Degree_of_Automation.pdf for Instrumentation and industrial specialist
Degree_of_Automation.pdf for  Instrumentation  and industrial specialistDegree_of_Automation.pdf for  Instrumentation  and industrial specialist
Degree_of_Automation.pdf for Instrumentation and industrial specialist
shreyabhosale19
 
Mathematical foundation machine learning.pdf
Mathematical foundation machine learning.pdfMathematical foundation machine learning.pdf
Mathematical foundation machine learning.pdf
TalhaShahid49
 
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptxExplainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
MahaveerVPandit
 
RICS Membership-(The Royal Institution of Chartered Surveyors).pdf
RICS Membership-(The Royal Institution of Chartered Surveyors).pdfRICS Membership-(The Royal Institution of Chartered Surveyors).pdf
RICS Membership-(The Royal Institution of Chartered Surveyors).pdf
MohamedAbdelkader115
 
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptxLidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
Lidar for Autonomous Driving, LiDAR Mapping for Driverless Cars.pptx
RishavKumar530754
 
Data Structures_Introduction to algorithms.pptx
Data Structures_Introduction to algorithms.pptxData Structures_Introduction to algorithms.pptx
Data Structures_Introduction to algorithms.pptx
RushaliDeshmukh2
 
Avnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights FlyerAvnet Silica's PCIM 2025 Highlights Flyer
Avnet Silica's PCIM 2025 Highlights Flyer
WillDavies22
 
Introduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptxIntroduction to Zoomlion Earthmoving.pptx
Introduction to Zoomlion Earthmoving.pptx
AS1920
 
Artificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptxArtificial Intelligence (AI) basics.pptx
Artificial Intelligence (AI) basics.pptx
aditichinar
 
AI-assisted Software Testing (3-hours tutorial)
AI-assisted Software Testing (3-hours tutorial)AI-assisted Software Testing (3-hours tutorial)
AI-assisted Software Testing (3-hours tutorial)
Vəhid Gəruslu
 
Oil-gas_Unconventional oil and gass_reseviours.pdf
Oil-gas_Unconventional oil and gass_reseviours.pdfOil-gas_Unconventional oil and gass_reseviours.pdf
Oil-gas_Unconventional oil and gass_reseviours.pdf
M7md3li2
 
Smart_Storage_Systems_Production_Engineering.pptx
Smart_Storage_Systems_Production_Engineering.pptxSmart_Storage_Systems_Production_Engineering.pptx
Smart_Storage_Systems_Production_Engineering.pptx
rushikeshnavghare94
 
Data Structures_Searching and Sorting.pptx
Data Structures_Searching and Sorting.pptxData Structures_Searching and Sorting.pptx
Data Structures_Searching and Sorting.pptx
RushaliDeshmukh2
 
IntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdfIntroSlides-April-BuildWithAI-VertexAI.pdf
IntroSlides-April-BuildWithAI-VertexAI.pdf
Luiz Carneiro
 
railway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forgingrailway wheels, descaling after reheating and before forging
railway wheels, descaling after reheating and before forging
Javad Kadkhodapour
 
"Boiler Feed Pump (BFP): Working, Applications, Advantages, and Limitations E...
"Boiler Feed Pump (BFP): Working, Applications, Advantages, and Limitations E..."Boiler Feed Pump (BFP): Working, Applications, Advantages, and Limitations E...
"Boiler Feed Pump (BFP): Working, Applications, Advantages, and Limitations E...
Infopitaara
 
Reagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptxReagent dosing (Bredel) presentation.pptx
Reagent dosing (Bredel) presentation.pptx
AlejandroOdio
 
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design ThinkingDT REPORT by Tech titan GROUP to introduce the subject design Thinking
DT REPORT by Tech titan GROUP to introduce the subject design Thinking
DhruvChotaliya2
 
Fort night presentation new0903 pdf.pdf.
Fort night presentation new0903 pdf.pdf.Fort night presentation new0903 pdf.pdf.
Fort night presentation new0903 pdf.pdf.
anuragmk56
 
Degree_of_Automation.pdf for Instrumentation and industrial specialist
Degree_of_Automation.pdf for  Instrumentation  and industrial specialistDegree_of_Automation.pdf for  Instrumentation  and industrial specialist
Degree_of_Automation.pdf for Instrumentation and industrial specialist
shreyabhosale19
 
Mathematical foundation machine learning.pdf
Mathematical foundation machine learning.pdfMathematical foundation machine learning.pdf
Mathematical foundation machine learning.pdf
TalhaShahid49
 
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptxExplainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
Explainable-Artificial-Intelligence-XAI-A-Deep-Dive (1).pptx
MahaveerVPandit
 
RICS Membership-(The Royal Institution of Chartered Surveyors).pdf
RICS Membership-(The Royal Institution of Chartered Surveyors).pdfRICS Membership-(The Royal Institution of Chartered Surveyors).pdf
RICS Membership-(The Royal Institution of Chartered Surveyors).pdf
MohamedAbdelkader115
 

2014-11-11 Multiple Approaches to Managing Puppet Modules @ Puppet Camp Seattle

  • 1. Multiple approaches to managing your Puppet modules Puppet Camp Seattle 2014-11-11 Seattle, WA LearnPuppet.com Garrett Honeycutt [email protected] @learnpuppet
  • 3. LearnPuppet.com Audits Consulting Training Advanced Topics with Test Driven Development © 2014 GH Solutions, LLC
  • 4. @fossetcon © 2014 GH Solutions, LLC
  • 5. © 2014 GH Solutions, LLC
  • 6. What is a Module? © 2014 GH Solutions, LLC
  • 7. Modules A module is a self contained directory structure for encapsulating puppet code. © 2014 GH Solutions, LLC
  • 8. Metadata # Modulefile name 'ghoneycutt-nscd' version '1.0.2' source 'git://github.com/ghoneycutt/puppet-module-nscd.git' author 'ghoneycutt' license 'Apache License, Version 2.0' summary 'manage NSCD - name service cache daemon' description 'Manage every aspect of NSCD - name service cache daemon' project_page 'https://github.com/ghoneycutt/puppet-module-nscd' dependency 'puppetlabs/stdlib', '>= 3.2.0' © 2014 GH Solutions, LLC
  • 9. Metadata # metadata.json { "name": "ghoneycutt-nscd", "version": "1.0.2", "author": "ghoneycutt", "summary": "manage NSCD - name service cache daemon", "license": "Apache License, Version 2.0", "source": "git://github.com/ghoneycutt/puppet-module-nscd.git", "project_page": "https://github.com/ghoneycutt/puppet-module-nscd", "issues_url": "https://github.com/ghoneycutt/puppet-module-nscd/issues", "description": "Manage every aspect of NSCD - name service cache daemon", "dependencies": [ {"name":"puppetlabs/stdlib","version_requirement":">= 3.2.0"} ] } © 2014 GH Solutions, LLC
  • 10. Skeleton Provides a template for generating new modules https://github.com/ghoneycutt/puppet-module-skeleton $ git clone https://github.com/ghoneycutt/puppet-module-skeleton $ VARDIR=`puppet config print vardir` $ mkdir -p $VARDIR/puppet-module/skeleton/ $ rsync -avp --exclude .git puppet-module-skeleton/ $VARDIR/puppet-module/skeleton/ © 2014 GH Solutions, LLC
  • 11. Generate a module $ cd /etc/puppet/modules $ puppet module generate <forgename>-<modulename> $ mv <forgename-modulename> <modulename> © 2014 GH Solutions, LLC
  • 12. Components ghoneycutt-motd ghoneycutt-motd/.fixtures.yml ghoneycutt-motd/.gitignore ghoneycutt-motd/.travis.yml ghoneycutt-motd/Gemfile ghoneycutt-motd/LICENSE ghoneycutt-motd/Modulefile ghoneycutt-motd/README.md ghoneycutt-motd/Rakefile ghoneycutt-motd/manifests ghoneycutt-motd/manifests/init.pp ghoneycutt-motd/spec ghoneycutt-motd/spec/classes ghoneycutt-motd/spec/classes/init_spec.rb ghoneycutt-motd/spec/fixtures ghoneycutt-motd/spec/fixtures/manifests ghoneycutt-motd/spec/fixtures/manifests/site.pp ghoneycutt-motd/spec/fixtures/modules ghoneycutt-motd/spec/spec_helper.rb ghoneycutt-motd/tests ghoneycutt-motd/tests/init.pp
  • 13. In the beginning © 2014 GH Solutions, LLC
  • 14. In the beginning... Things were simple. We stuck all of our modules into one repo. Luke told me it was a good idea and we spent time puppetizing the setup. © 2014 GH Solutions, LLC
  • 15. In the beginning... That was 2008. © 2014 GH Solutions, LLC
  • 16. There are better ways! © 2014 GH Solutions, LLC
  • 17. Looking back Everyone has to be on the same release cycle or you get dependency issues. © 2014 GH Solutions, LLC
  • 18. Scale This scales to one organization with one release cycle who are not concerned with others using their code. © 2014 GH Solutions, LLC
  • 19. Pro's Easy to get started © 2014 GH Solutions, LLC
  • 20. Con's Everything is released at the same time Promotes forking Merge hell © 2014 GH Solutions, LLC
  • 21. Analysis Avoid at all costs. Separate repo for each module © 2014 GH Solutions, LLC
  • 22. Puppetfile © 2014 GH Solutions, LLC
  • 23. Puppetfile Simple file that lists your modules, where to get them, and at what version. # git repo mod 'nscd', :git => 'git://github.com/ghoneycutt/puppet-module-nscd.git', :ref => 'v1.0.0' © 2014 GH Solutions, LLC
  • 24. Puppetfile Also supports the Puppet Forge # puppet forge forge 'https://forgeapi.puppetlabs.com' mod 'puppetlabs/stdlib', '4.2.1' © 2014 GH Solutions, LLC
  • 25. Puppetfile Can be validated and kept under revision control. ruby -c Puppetfile © 2014 GH Solutions, LLC
  • 26. ghoneycutt's puppet-modules https://github.com/ghoneycutt/puppet-modules All of the modules and their dependencies that I write, use, and support. apache inittab pam ruby apt localization passenger selinux common make pe_gem ssh concat motd portage stdlib dnsclient mysql postgresql sysklogd facter network puppet timezone firewall nfs puppetdb types gcc nisclient r10k utils git nrpe rancid vcsrepo hosts nscd redhat vim htpasswd nsswitch rpcbind wget inifile ntp rsyslog xinetd © 2014 GH Solutions, LLC
  • 27. modulepath © 2014 GH Solutions, LLC
  • 28. Puppet < 3.6 Search path for modules modulepath = /etc/puppet/environments/$environment/modules:/etc/puppet/modules © 2014 GH Solutions, LLC
  • 29. Puppet >= 3.6 modulepath is deprecated Warning: Setting modulepath is deprecated in puppet.conf. See http://links.puppetlabs.com/env-settings-deprecations (at /usr/lib/ruby/site_ruby/1.8/puppet/settings.rb:1095:in `issue_deprecations') © 2014 GH Solutions, LLC
  • 30. Puppet >= 3.6 environmentpath = /etc/puppet/environments basemodulepath = /etc/puppet/modules © 2014 GH Solutions, LLC
  • 31. environmentpath A search path for directory environments. Under $environmentpath are directories for each $environment and under those are modules and manifests. /etc/puppet/environments ├── dev │ ├── manifests │ │ └── site.pp │ └── modules │ ├── apache │ ├── ... │ └── zookeeper ├── fix_it │ ├── manifests │ │ └── site.pp │ └── modules │ ├── apache │ ├── ... │ └── zookeeper └── production ├── manifests │ └── site.pp └── modules ├── apache ├── ... └── zookeeper © 2014 GH Solutions, LLC
  • 32. basemodulepath Search path for global modules. This is essentially appended to the modulepath. basemodulepath = /var/local/ghoneycutt-modules © 2014 GH Solutions, LLC
  • 33. Puppet Forge © 2014 GH Solutions, LLC
  • 34. Managed by Ryan Coleman @ryanycoleman
  • 35. Puppet Forge Repo of puppet modules with dependency tracking. © 2014 GH Solutions, LLC
  • 37. Puppet Forge -- Demo Time search # puppet module search openstack install # puppet module install puppetlabs-openstack © 2014 GH Solutions, LLC
  • 38. Search by metadata © 2014 GH Solutions, LLC
  • 39. Pro's Great way to find new modules Can filter by OS and Puppet version Can install from command line Resolves dependencies © 2014 GH Solutions, LLC
  • 40. Con's Installing from the command line leaves you without something to track in version control. Resolving dependencies based on modules' metadata can be troublesome. © 2014 GH Solutions, LLC
  • 41. Analysis Use the forge to find modules Install from the command line when developing to make note of your dependencies Potentially use forge in your Puppetfile © 2014 GH Solutions, LLC
  • 42. librarian-puppet © 2014 GH Solutions, LLC
  • 43. Written by Tim Sharpe @rodjek © 2014 GH Solutions, LLC
  • 44. librarian-puppet Iterates through Puppetfile and recursively solves dependencies for you. © 2014 GH Solutions, LLC
  • 45. Installation # sudo gem install -V librarian-puppet Usage # cd /path/to/dir_with_Puppetfile # librarian-puppet install -v © 2014 GH Solutions, LLC
  • 46. Pro's Uses a Puppetfile, so you have something in version control Handles dependencies © 2014 GH Solutions, LLC
  • 47. Con's Handles dependencies - this is a nightmare with a large set of diverse modules © 2014 GH Solutions, LLC
  • 48. Analysis After experiencing a lot of frustration with the dependency management, I gave up on this and moved to librarian-puppet-simple. Big props to Tim for writing this and Puppetfile which has became a standard. © 2014 GH Solutions, LLC
  • 49. librarian-puppet-simple © 2014 GH Solutions, LLC
  • 50. Written by Dan Bode @bodepd © 2014 GH Solutions, LLC
  • 51. librarian-puppet-simple Iterates through Puppetfile without any dependency management. © 2014 GH Solutions, LLC
  • 52. Installation # sudo gem install -V librarian-puppet-simple Usage Similar to librarian-puppet # cd /path/to/dir_with_Puppetfile # librarian-puppet install -v © 2014 GH Solutions, LLC
  • 53. Pro's No dependency management Uses a Puppetfile, so you have something in version control © 2014 GH Solutions, LLC
  • 54. Con's ..nope.. © 2014 GH Solutions, LLC
  • 55. Analysis Dan is my hero. After becoming frustrated with librarian-puppet's dependency management, this tool simply iterates over a list of modules, which is awesomely simple. © 2014 GH Solutions, LLC
  • 56. r10k © 2014 GH Solutions, LLC
  • 57. Written by Adrien Thebo @nullfinch © 2014 GH Solutions, LLC
  • 58. r10k Creates an environment for every branch in your puppet-modules git repo. © 2014 GH Solutions, LLC
  • 59. Installation There's a module for that https://github.com/acidprime/r10k © 2014 GH Solutions, LLC
  • 60. Work flow [foo@laptop]# git checkout -b fixit vi Puppetfile ruby -c Puppetfile git commit -a git push origin fixit [root@puppet]# r10k deploy environment -vp && service httpd graceful © 2014 GH Solutions, LLC
  • 61. Automate deploy step with ssh keys # Hiera entry using ghoneycutt/ssh ssh::keys: r10k: ensure: 'present' user: 'root' type: 'rsa' key: 'AAAAB3Nz....' options: 'command="/usr/bin/r10k deploy environment -vp && /sbin/service httpd graceful"' # ~/.ssh/config on your workstation Host r10k User root Hostname puppet.example.com IdentityFile /Users/gh/.ssh/r10k [foo@laptop]# ssh r10k © 2014 GH Solutions, LLC
  • 62. Add a rake task # Rakefile task :deploy do sh 'ssh r10k' end [foo@laptop]# rake deploy © 2014 GH Solutions, LLC
  • 63. MCollective include r10k::mcollective from acidprime/r10k [foo@laptop]$ mco r10k synchronize © 2014 GH Solutions, LLC
  • 64. Pro's Make's it really easy to do development Do not need access to the puppet master Uses a Puppetfile, so you have something in version control © 2014 GH Solutions, LLC
  • 65. Con's ..nope.. You need a centralized git repo, which hopefully you already have :) © 2014 GH Solutions, LLC
  • 66. Analysis Thebo is my hero, r10k provides an easy work flow for developers to make changes in their environment all without shell access on the puppet master. © 2014 GH Solutions, LLC
  • 67. Continued Learning © 2014 GH Solutions, LLC
  • 68. Continued Learning Puppet modules Use my modules https://github.com/ghoneycutt/puppet-modules and send me pull requests. © 2014 GH Solutions, LLC
  • 69. Continued Learning Ruby Follow facter and submit pull requests. © 2014 GH Solutions, LLC
  • 70. Continued Learning Ask and Solve Puppet questions https://ask.puppetlabs.com - Recommend the weekly digest. © 2014 GH Solutions, LLC
  • 71. Continued Learning Puppet modules Use my modules https://github.com/ghoneycutt/puppet-modules and send me pull requests. Ruby Follow facter and submit pull requests. Ask and Solve Puppet questions https://ask.puppetlabs.com - Recommend the weekly digest. © 2014 GH Solutions, LLC
  • 72. Multiple approaches to managing your Puppet modules Puppet Camp Seattle 2014-11-11 Seattle, WA LearnPuppet.com Garrett Honeycutt [email protected] @learnpuppet