$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Agile Deployments with Puppet
Search
glarizza
October 22, 2011
Technology
3
820
Agile Deployments with Puppet
Presentation given at Camp Devops in Chicago (
http://www.campdevops.com
)
glarizza
October 22, 2011
Tweet
Share
Other Decks in Technology
See All in Technology
モダンデータスタックの理想と現実の間で~1.3億人Vポイントデータ基盤の現在地とこれから~
taromatsui_cccmkhd
1
190
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
150
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
1.5k
SREには開発組織全体で向き合う
koh_naga
0
390
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
350
20251218_AIを活用した開発生産性向上の全社的な取り組みの進め方について / How to proceed with company-wide initiatives to improve development productivity using AI
yayoi_dd
0
470
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
1
1.2k
ESXi のAIOps だ!2025冬
unnowataru
0
140
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
4
710
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
180
特別捜査官等研修会
nomizone
0
450
Amazon Quick Suite で始める手軽な AI エージェント
shimy
1
1.2k
Featured
See All Featured
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
170
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
280
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
87
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
180
We Have a Design System, Now What?
morganepeng
54
7.9k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
30
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Automating Front-end Workflow
addyosmani
1371
200k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Transcript
Agile Deployments with Puppet Gary Larizza Puppet Labs @glarizza Saturday,
October 22, 2011
Agile Deployments with Puppet Gary Larizza Puppet Labs @glarizza http://bit.ly/garydevops
Saturday, October 22, 2011
DevOps • Culture not tools? • Release Management? • http://slidesha.re/itweapon
• http://bit.ly/toolsmatter • http://slidesha.re/devopstools Saturday, October 22, 2011
Example of ‘poor deployment’ Saturday, October 22, 2011
Saturday, October 22, 2011
Developer Operations Saturday, October 22, 2011
Developer Operations Saturday, October 22, 2011
Developer Production Operations Saturday, October 22, 2011
Developer Production Staging Operations Saturday, October 22, 2011
Developer Production Staging Operations Saturday, October 22, 2011
Developer Production Staging Operations Saturday, October 22, 2011
Developer Production Staging Operations Saturday, October 22, 2011
Developer Production Staging Build Time Operations Day(s) Saturday, October 22,
2011
Developer Production Staging QA Build Time Operations Day(s) Saturday, October
22, 2011
Developer Production Staging QA Build Time Operations Day(s) Saturday, October
22, 2011
Developer Production Staging QA Build Time Operations Day(s) Saturday, October
22, 2011
Developer Production Staging QA Build Time Operations Day(s) Week(s) Saturday,
October 22, 2011
Developer Production Staging QA Build Time Operations Day(s) Week(s) Saturday,
October 22, 2011
Developer Production Staging QA UK Build Time Operations Day(s) Week(s)
Saturday, October 22, 2011
Developer Production Staging QA UK Build Time Operations Day(s) Week(s)
Saturday, October 22, 2011
Developer Production Staging QA UK China Build Time Operations Day(s)
Week(s) Saturday, October 22, 2011
Developer Production Staging QA UK China Build Time Operations Day(s)
Week(s) Saturday, October 22, 2011
Developer Production Staging QA UK China Canada Build Time Operations
Day(s) Week(s) Saturday, October 22, 2011
Developer Production Staging QA UK China Canada Build Time Operations
Day(s) Week(s) Saturday, October 22, 2011
Developer Production Staging QA UK China Canada Build Time Operations
Day(s) Week(s) ??? Saturday, October 22, 2011
Rampination http://bit.ly/pconfkeynote Saturday, October 22, 2011
Example of ‘Agile’ Saturday, October 22, 2011
Saturday, October 22, 2011
Developer Operations Saturday, October 22, 2011
Developer Production Operations Saturday, October 22, 2011
Developer Production Operations Configuration Data Saturday, October 22, 2011
Developer Production Operations Configuration Data Saturday, October 22, 2011
Developer Production Operations Configuration Data Saturday, October 22, 2011
Developer Production Operations Configuration Data Saturday, October 22, 2011
Developer Production Staging Operations Configuration Data Saturday, October 22, 2011
Developer Production Staging Build Time Operations 10 Minutes Configuration Data
Saturday, October 22, 2011
Developer Production Staging Build Time Operations 10 Minutes Configuration Data
Saturday, October 22, 2011
Developer Production Staging Build Time Operations 10 Minutes Configuration Data
Saturday, October 22, 2011
Developer Production Staging QA Build Time Operations 10 Minutes 1-2
Hours Configuration Data Saturday, October 22, 2011
Developer Production Staging QA Build Time Operations 10 Minutes 1-2
Hours Configuration Data Saturday, October 22, 2011
Developer Production Staging QA Build Time Operations 10 Minutes 1-2
Hours Configuration Data Saturday, October 22, 2011
Developer Production Staging QA Build Time Operations 10 Minutes 1-2
Hours 3 Hours Configuration Data Developer Reach Saturday, October 22, 2011
Developer Production Staging QA Build Time Operations 10 Minutes 1-2
Hours 3 Hours Configuration Data Developer Reach Saturday, October 22, 2011
What can Ops learn from Dev? • Do developers re-write
their code at every step? • Version control • Testing frameworks • Expose ‘settings’ through configuration data Saturday, October 22, 2011
Infrastructure as Code with Puppet • Define what needs to
be done • Model your ideal state with simple resources • Configured State vs. Running State • Choose your level of commitment Saturday, October 22, 2011
Resource Abstraction Layer Saturday, October 22, 2011
Resource Abstraction Layer Saturday, October 22, 2011
Resource Abstraction Layer Saturday, October 22, 2011
Resource Abstraction Layer /usr/bin/yum -y install httpd Saturday, October 22,
2011
Saturday, October 22, 2011
Bare Machine Provisioning Base Install Configure Assigned Role Maintenance Puppet’s
Task Saturday, October 22, 2011
Puppet Resources service { 'httpd': ensure => running, enable =>
true, hasstatus => true, hasrestart => true, } Saturday, October 22, 2011
Type Puppet Resources service { 'httpd': ensure => running, enable
=> true, hasstatus => true, hasrestart => true, } Saturday, October 22, 2011
Type Title Puppet Resources service { 'httpd': ensure => running,
enable => true, hasstatus => true, hasrestart => true, } Saturday, October 22, 2011
Type Title Attributes Puppet Resources service { 'httpd': ensure =>
running, enable => true, hasstatus => true, hasrestart => true, } Saturday, October 22, 2011
Facter • Describes aspects of your machine - “facts” •
Facts written in Ruby • Nice library of existing facts • Custom facts are easy Saturday, October 22, 2011
garys-mbp:$ facter domain => puppetlabs.lan facterversion => 1.5.8 fqdn =>
garys-mbp.puppetlabs.lan hardwaremodel => x86_64 hostname => garys-mbp kernel => Darwin macosx_buildversion => 10K549 macosx_productname => Mac OS X macosx_productversion => 10.6.8 macosx_productversion_major => 10.6 macosx_productversion_minor => 8 <...> Facter Saturday, October 22, 2011
Facter.add("computername") do confine :kernel => :darwin setcode('scutil --get ComputerName'.chomp) end
computername scutil --get ComputerName Custom Fact Saturday, October 22, 2011
Facter.add("computername") do confine :kernel => :darwin setcode('scutil --get ComputerName'.chomp) end
computername scutil --get ComputerName Custom Fact Saturday, October 22, 2011
Facter.add("computername") do confine :kernel => :darwin setcode('scutil --get ComputerName'.chomp) end
computername scutil --get ComputerName Fact name Custom Fact Saturday, October 22, 2011
Facter.add("computername") do confine :kernel => :darwin setcode('scutil --get ComputerName'.chomp) end
computername scutil --get ComputerName Command to Execute Fact name Custom Fact Saturday, October 22, 2011
Facter.add("computername") do confine :kernel => :darwin setcode('scutil --get ComputerName'.chomp) end
computername scutil --get ComputerName Command to Execute Fact name Custom Fact Saturday, October 22, 2011
Custom Fact ENV.each do |key,val| Facter.add("env_#{key}") do setcode do val
end end end Saturday, October 22, 2011
Separate Data from Logic • Configuration Data adapts to environment
• Easy deployment - Puppet modules do not change • Eliminate SSH access for deployment Saturday, October 22, 2011
Data Separation Examples Saturday, October 22, 2011
Node Inheritance node common { $dnsserver = '8.8.8.8' $searchdomain =
'puppetlabs.vm' } node devops inherits common { $dnsserver = '10.13.1.3' } node 'agent.puppetlabs.vm' inherits devops { file { '/etc/resolv.conf': content => "search ${searchdomain}\n nameserver ${dnsserver}\n", } } Saturday, October 22, 2011
Data Class in Module class dns::params { $dnsserver = '8.8.8.8'
$searchdomain = 'puppetlabs.vm' } class dns( $dnsserver = $dns::params::dnsserver, $searchdomain = $dns::params::searchdomain ) inherits dns::params { file { '/etc/resolv.conf': content => "search ${searchdomain}\n nameserver ${dnsserver}\n", } } Saturday, October 22, 2011
Extlookup dnsserver, 8.8.8.8 searchdomain, puppetlabs.vm dnsserver, 10.13.1.2 common.csv devops.csv $extlookup_datadir
= "/etc/puppetlabs/puppet/data" $extlookup_precedence = [$clientcert, $environment, $architecture, 'common'] node 'agent.puppetlabs.vm' { include dns } class dns { $dnsserver = extlookup('dnsserver') $searchdomain = extlookup('searchdomain') } Saturday, October 22, 2011
External Node Classifier --- classes: - dns parameters: searchdomain :
‘puppetlabs.vm’ dnsserver : ‘10.13.1.2’ Saturday, October 22, 2011
Hiera • Hierarchal data lookup system • Structured data backend
• YAML, JSON, and current Puppet state • http://bit.ly/hieradata Saturday, October 22, 2011
Saturday, October 22, 2011
Global Defaults Saturday, October 22, 2011
Global Defaults Environment Saturday, October 22, 2011
Global Defaults Environment Role Saturday, October 22, 2011
Global Defaults Environment Role Saturday, October 22, 2011
Global Defaults Environment Role Saturday, October 22, 2011
Global Defaults Environment Role Resultant Data Configuration Saturday, October 22,
2011
Saturday, October 22, 2011
Global Defaults Saturday, October 22, 2011
Global Defaults --- ntpserver: time.puppetlabs.com puppetserver: puppet.puppetlabs.com environment: production Saturday,
October 22, 2011
Global Defaults --- ntpserver: time.puppetlabs.com puppetserver: puppet.puppetlabs.com environment: production Saturday,
October 22, 2011
Global Defaults Environment --- ntpserver: time.puppetlabs.com puppetserver: puppet.puppetlabs.com environment: production
Saturday, October 22, 2011
Global Defaults Environment --- stompserver: stomp-qa.puppetlabs.com puppetserver: puppet-qa.puppetlabs.com environment: qa
--- ntpserver: time.puppetlabs.com puppetserver: puppet.puppetlabs.com environment: production Saturday, October 22, 2011
Global Defaults Environment --- ntpserver: time.puppetlabs.com stompserver: stomp-qa.puppetlabs.com environment: qa
puppetserver: puppet-qa.puppetlabs.com Saturday, October 22, 2011
Global Defaults Environment Role --- ntpserver: time.puppetlabs.com stompserver: stomp-qa.puppetlabs.com environment:
qa puppetserver: puppet-qa.puppetlabs.com Saturday, October 22, 2011
Global Defaults Environment Role --- storeconfigs: true --- ntpserver: time.puppetlabs.com
stompserver: stomp-qa.puppetlabs.com environment: qa puppetserver: puppet-qa.puppetlabs.com Saturday, October 22, 2011
Global Defaults Environment Role --- ntpserver: time.puppetlabs.com stompserver: stomp-qa.puppetlabs.com environment:
qa storeconfigs: true puppetserver: puppet-qa.puppetlabs.com Saturday, October 22, 2011
DEMO TIME Saturday, October 22, 2011
Devops Survey • http://bit.ly/devopssurvey Saturday, October 22, 2011
Code is online https://github.com/glarizza/puppet-datademo Saturday, October 22, 2011
Gary Larizza • Twitter: @glarizza • Email:
[email protected]
• Web:
http://www.puppetlabs.com Saturday, October 22, 2011