際際滷

際際滷Share a Scribd company logo
Puppet @ Spreadshirt
Hendrik Seffler <hse@spreadshirt.net>
Puppet @ Spreadshirt

The Spreadshirt e-commerce platform lets anyone
create, sell and buy ideas on things consumers love
to wear, use and carry.
Puppet @ Spreadshirt



B2B & B2C points-of-sale



Choose from over 140 quality products



Each item made print-on-demand



Minimum order = 1 item



Localized services for 17 countries



Delivered within 3 to 7 days
Puppet @ Spreadshirt
Puppet @ Spreadshirt

How is Spreadshirt using Puppet?
 Currently different environments at
 OPS (Opennebula)
 QA (EC2)
 DEV (Vagrant)
 Transitions between those environments cause
confusion and errors
 Own installer hard to maintain, very Java-specific
Puppet @ Spreadshirt

Our tools
 Puppet


Puppet is IT automation software that helps system administrators
manage infrastructure throughout its lifecycle 



http://www.puppetlabs.com
Puppet @ Spreadshirt

Puppet


Puppet provides a declarative language to describe a
systems configuration

 The most atomic element is the type which descibes
a basic configuration item
 Rules are organized in manifests
 Manifests include classes from modules
 Puppet supports variables, facts and templates
Puppet @ Spreadshirt

Our tools
 r10k


R10K is a hybrid solution for deploying Puppet code...deploying
Puppet environments based on Git branches... provides an
implementation of the Puppetfile format...R10K can provide your
modules for you.



https://github.com/adrienthebo/r10k



http://somethingsinistral.net/blog/rethinking-puppet-deployment/
Puppet @ Spreadshirt

R10K


R10K helps us manage our
modules



Allows us to store our modules
along with the software it
deploys



This enables re-use of
modules in different contexts



DEV, OPS and QA can use the same module to deploy an artifact
without copy-and-paste-ing the code all over the place



Much like puppet-librarian, but also creates puppet-environments
based on GIT-branches
Puppet @ Spreadshirt

R10K


Puppetfile is a file which contains
references to modules we want on
out module-path



R10K checkout out those modules when it runs



OK, an example:
mod jetty,
:git => "git@git.spreadomat.net:puppet/jetty.git"
mod 'content-service',
:git => "git@git.spreadomat.net:puppet/content-service.git",
:ref => "1.0.0"



Modulename, GIT-Source, optional git-branch
Puppet @ Spreadshirt

Our tools
 hiera


Hiera is a key/value lookup tool for configuration data. It makes
Puppet better by keeping site-specific data out of your manifests. 



http://docs.puppetlabs.com/hiera/1/
Puppet @ Spreadshirt

Hiera
 Configuration differs from context to context
 Configuration should not be hardcoded in manifests
 E.g. we may have:
$memory=-Xmx8192M
 But actually we want:
$memory=-Xmx512M (DEV)
$memory=-Xmx1024M (QA)
$memory=-Xmx8192M (OPS)
Puppet @ Spreadshirt

Hiera
 Hiera seperates deployment description from
configuration
$memory=hiera(memory)
 Hiera looks up the actual value based on a hierachy
we define
 Various backends to retrieve values
Puppet @ Spreadshirt

Hiera
 Storage of data in module by using the backend
yaml_data_in_modules
 Our own backend, open-source
https://github.com/mythsunwind/yaml_data_in_modules
Puppet @ Spreadshirt

Hiera
 Our hierachy
- %{context}-%{datacenter}-%{platform}-%{cluster}-%{hostname}
- %{context}-%{datacenter}-%{platform}-%{cluster}
- %{context}-%{datacenter}-%{platform}
- %{context}-%{datacenter}
- %{context}
- common-%{platform}
- common
Puppet @ Spreadshirt

Hiera
 Lets look at a typical lookup path:
common.yaml
app_name: content-service
port:4747
qa.yaml
port: 2318

 So for a EU system in QA:
app_name: content-service
port: 2318
lang=de_DE, en_GB

qa-eu.yaml
lang=de_DE, en_GB
qa-na.yaml
lang=en_US
Puppet @ Spreadshirt

Conclusions
 Spreadshirt uses Puppet to deploy more and more of
its infrastructure
 To enable continuous deployment we aim to have a
uniform development, test und live-infrastrucuture
 Puppet in combination with R10K and
hiera brings are the perfect tools for this
Puppet @ Spreadshirt

Thank you!
Hendrik Seffler <hse@spreadshirt.net>
Ad

Recommended

ClickMedia 旅竜旅侶亮留旅虜侶留 2.0
ClickMedia 旅竜旅侶亮留旅虜侶留 2.0
ClickMedia
Actividad 3 corte
Diana Paola Pe単a Reyes
ClickMedia Joomla! 3 - What's New (Greek)
ClickMedia Joomla! 3 - What's New (Greek)
ClickMedia
Mobile Quality Challenges At Zalando
Mobile Quality Challenges At Zalando
Hendrik Seffler
AP Joint_Eng
AP Joint_Eng
Vanja Lovrentijev
AP Vita Tronic_Eng
AP Vita Tronic_Eng
Vanja Lovrentijev
AP Kalkmagnet_Eng
AP Kalkmagnet_Eng
Vanja Lovrentijev
AP Kalkmagnet RUS
AP Kalkmagnet RUS
Vanja Lovrentijev
Actividad 3 corte
Diana Paola Pe単a Reyes
L imperattiv
L imperattiv
NaiNai2002
Meet drupal
Meet drupal
Patrick Ofilada
Multijosa topaketa_ 13
Multijosa topaketa_ 13
kirolabegonazpi
AP Joint RUS
AP Joint RUS
Vanja Lovrentijev
Saski eguna_ 15
Saski eguna_ 15
kirolabegonazpi
Manajemen Pemasaran Barang dan Jasa dalam Bisnis
Manajemen Pemasaran Barang dan Jasa dalam Bisnis
Shanti Putri
Puppetizing Your Organization
Puppetizing Your Organization
Robert Nelson
From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...
Yury Bushmelev
PuppetConf 2014 Killer R10K Workflow With Notes
PuppetConf 2014 Killer R10K Workflow With Notes
Phil Zimmerman
Creating a mature puppet system
Creating a mature puppet system
rkhatibi
Creating a Mature Puppet System
Creating a Mature Puppet System
Puppet
DevOps: What is This Puppet You Speak Of?
DevOps: What is This Puppet You Speak Of?
Rob Reynolds
Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)
DECK36
Portable infrastructure with puppet
Portable infrastructure with puppet
lkanies
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Puppet
Puppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet
Puppet_training
Puppet_training
Afroz Hussain
Introduction to Puppet Scripting
Introduction to Puppet Scripting
Achieve Internet

More Related Content

Viewers also liked (10)

AP Vita Tronic_Eng
AP Vita Tronic_Eng
Vanja Lovrentijev
AP Kalkmagnet_Eng
AP Kalkmagnet_Eng
Vanja Lovrentijev
AP Kalkmagnet RUS
AP Kalkmagnet RUS
Vanja Lovrentijev
Actividad 3 corte
Diana Paola Pe単a Reyes
L imperattiv
L imperattiv
NaiNai2002
Meet drupal
Meet drupal
Patrick Ofilada
Multijosa topaketa_ 13
Multijosa topaketa_ 13
kirolabegonazpi
AP Joint RUS
AP Joint RUS
Vanja Lovrentijev
Saski eguna_ 15
Saski eguna_ 15
kirolabegonazpi
Manajemen Pemasaran Barang dan Jasa dalam Bisnis
Manajemen Pemasaran Barang dan Jasa dalam Bisnis
Shanti Putri

Similar to Puppet @ Spreadshirt (20)

Puppetizing Your Organization
Puppetizing Your Organization
Robert Nelson
From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...
Yury Bushmelev
PuppetConf 2014 Killer R10K Workflow With Notes
PuppetConf 2014 Killer R10K Workflow With Notes
Phil Zimmerman
Creating a mature puppet system
Creating a mature puppet system
rkhatibi
Creating a Mature Puppet System
Creating a Mature Puppet System
Puppet
DevOps: What is This Puppet You Speak Of?
DevOps: What is This Puppet You Speak Of?
Rob Reynolds
Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)
DECK36
Portable infrastructure with puppet
Portable infrastructure with puppet
lkanies
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Puppet
Puppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet
Puppet_training
Puppet_training
Afroz Hussain
Introduction to Puppet Scripting
Introduction to Puppet Scripting
Achieve Internet
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
garrett honeycutt
Puppet and Telefonica R&D
Puppet and Telefonica R&D
Puppet
Puppet modules: A Holistic Approach - Geneva
Puppet modules: A Holistic Approach - Geneva
Alessandro Franceschi
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global Organization
Puppet
Using Puppet in Small Infrastructures
Using Puppet in Small Infrastructures
Rachel Andrew
Puppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG edition
Joshua Thijssen
Puppet
Puppet
Mahesh N
Intro to-puppet
Intro to-puppet
F.L. Jonathan Ara単a Cruz
Puppetizing Your Organization
Puppetizing Your Organization
Robert Nelson
From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...
Yury Bushmelev
PuppetConf 2014 Killer R10K Workflow With Notes
PuppetConf 2014 Killer R10K Workflow With Notes
Phil Zimmerman
Creating a mature puppet system
Creating a mature puppet system
rkhatibi
Creating a Mature Puppet System
Creating a Mature Puppet System
Puppet
DevOps: What is This Puppet You Speak Of?
DevOps: What is This Puppet You Speak Of?
Rob Reynolds
Our Puppet Story (Linuxtag 2014)
Our Puppet Story (Linuxtag 2014)
DECK36
Portable infrastructure with puppet
Portable infrastructure with puppet
lkanies
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Puppet
Puppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet Camp Atlanta 2014: r10k Puppet Workflow
Puppet
Introduction to Puppet Scripting
Introduction to Puppet Scripting
Achieve Internet
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
20111110 how puppet-fits_into_your_existing_infrastructure_and_change_managem...
garrett honeycutt
Puppet and Telefonica R&D
Puppet and Telefonica R&D
Puppet
Puppet modules: A Holistic Approach - Geneva
Puppet modules: A Holistic Approach - Geneva
Alessandro Franceschi
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global Organization
Puppet
Using Puppet in Small Infrastructures
Using Puppet in Small Infrastructures
Rachel Andrew
Puppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG edition
Joshua Thijssen
Ad

Recently uploaded (20)

EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
OpenPOWER Foundation & Open-Source Core Innovations
OpenPOWER Foundation & Open-Source Core Innovations
IBM
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
Priyanka Aash
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
Wenn alles versagt - IBM Tape sch端tzt, was z辰hlt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape sch端tzt, was z辰hlt! Und besonders mit dem neust...
Josef Weingand
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
Quantum AI: Where Impossible Becomes Probable
Quantum AI: Where Impossible Becomes Probable
Saikat Basu
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
10 Key Challenges for AI within the EU Data Protection Framework.pdf
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
EIS-Webinar-Engineering-Retail-Infrastructure-06-16-2025.pdf
Earley Information Science
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
Python Conference Singapore - 19 Jun 2025
Python Conference Singapore - 19 Jun 2025
ninefyi
OpenPOWER Foundation & Open-Source Core Innovations
OpenPOWER Foundation & Open-Source Core Innovations
IBM
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
Priyanka Aash
2025_06_18 - OpenMetadata Community Meeting.pdf
2025_06_18 - OpenMetadata Community Meeting.pdf
OpenMetadata
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Using the SQLExecutor for Data Quality Management: aka One man's love for the...
Safe Software
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
Wenn alles versagt - IBM Tape sch端tzt, was z辰hlt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape sch端tzt, was z辰hlt! Und besonders mit dem neust...
Josef Weingand
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
Quantum AI: Where Impossible Becomes Probable
Quantum AI: Where Impossible Becomes Probable
Saikat Basu
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
10 Key Challenges for AI within the EU Data Protection Framework.pdf
10 Key Challenges for AI within the EU Data Protection Framework.pdf
Priyanka Aash
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
OWASP Barcelona 2025 Threat Model Library
OWASP Barcelona 2025 Threat Model Library
PetraVukmirovic
Securing Account Lifecycles in the Age of Deepfakes.pptx
Securing Account Lifecycles in the Age of Deepfakes.pptx
FIDO Alliance
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
Ad

Puppet @ Spreadshirt

  • 1. Puppet @ Spreadshirt Hendrik Seffler <hse@spreadshirt.net>
  • 2. Puppet @ Spreadshirt The Spreadshirt e-commerce platform lets anyone create, sell and buy ideas on things consumers love to wear, use and carry.
  • 3. Puppet @ Spreadshirt B2B & B2C points-of-sale Choose from over 140 quality products Each item made print-on-demand Minimum order = 1 item Localized services for 17 countries Delivered within 3 to 7 days
  • 5. Puppet @ Spreadshirt How is Spreadshirt using Puppet? Currently different environments at OPS (Opennebula) QA (EC2) DEV (Vagrant) Transitions between those environments cause confusion and errors Own installer hard to maintain, very Java-specific
  • 6. Puppet @ Spreadshirt Our tools Puppet Puppet is IT automation software that helps system administrators manage infrastructure throughout its lifecycle http://www.puppetlabs.com
  • 7. Puppet @ Spreadshirt Puppet Puppet provides a declarative language to describe a systems configuration The most atomic element is the type which descibes a basic configuration item Rules are organized in manifests Manifests include classes from modules Puppet supports variables, facts and templates
  • 8. Puppet @ Spreadshirt Our tools r10k R10K is a hybrid solution for deploying Puppet code...deploying Puppet environments based on Git branches... provides an implementation of the Puppetfile format...R10K can provide your modules for you. https://github.com/adrienthebo/r10k http://somethingsinistral.net/blog/rethinking-puppet-deployment/
  • 9. Puppet @ Spreadshirt R10K R10K helps us manage our modules Allows us to store our modules along with the software it deploys This enables re-use of modules in different contexts DEV, OPS and QA can use the same module to deploy an artifact without copy-and-paste-ing the code all over the place Much like puppet-librarian, but also creates puppet-environments based on GIT-branches
  • 10. Puppet @ Spreadshirt R10K Puppetfile is a file which contains references to modules we want on out module-path R10K checkout out those modules when it runs OK, an example: mod jetty, :git => "git@git.spreadomat.net:puppet/jetty.git" mod 'content-service', :git => "git@git.spreadomat.net:puppet/content-service.git", :ref => "1.0.0" Modulename, GIT-Source, optional git-branch
  • 11. Puppet @ Spreadshirt Our tools hiera Hiera is a key/value lookup tool for configuration data. It makes Puppet better by keeping site-specific data out of your manifests. http://docs.puppetlabs.com/hiera/1/
  • 12. Puppet @ Spreadshirt Hiera Configuration differs from context to context Configuration should not be hardcoded in manifests E.g. we may have: $memory=-Xmx8192M But actually we want: $memory=-Xmx512M (DEV) $memory=-Xmx1024M (QA) $memory=-Xmx8192M (OPS)
  • 13. Puppet @ Spreadshirt Hiera Hiera seperates deployment description from configuration $memory=hiera(memory) Hiera looks up the actual value based on a hierachy we define Various backends to retrieve values
  • 14. Puppet @ Spreadshirt Hiera Storage of data in module by using the backend yaml_data_in_modules Our own backend, open-source https://github.com/mythsunwind/yaml_data_in_modules
  • 15. Puppet @ Spreadshirt Hiera Our hierachy - %{context}-%{datacenter}-%{platform}-%{cluster}-%{hostname} - %{context}-%{datacenter}-%{platform}-%{cluster} - %{context}-%{datacenter}-%{platform} - %{context}-%{datacenter} - %{context} - common-%{platform} - common
  • 16. Puppet @ Spreadshirt Hiera Lets look at a typical lookup path: common.yaml app_name: content-service port:4747 qa.yaml port: 2318 So for a EU system in QA: app_name: content-service port: 2318 lang=de_DE, en_GB qa-eu.yaml lang=de_DE, en_GB qa-na.yaml lang=en_US
  • 17. Puppet @ Spreadshirt Conclusions Spreadshirt uses Puppet to deploy more and more of its infrastructure To enable continuous deployment we aim to have a uniform development, test und live-infrastrucuture Puppet in combination with R10K and hiera brings are the perfect tools for this
  • 18. Puppet @ Spreadshirt Thank you! Hendrik Seffler <hse@spreadshirt.net>