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
...
Puppet @ Spreadshirt

●

B2B & B2C points-of-sale

●

Choose from over 140 quality products

●

Each item made print-on-de...
Puppet @ Spreadshirt
Puppet @ Spreadshirt

How is Spreadshirt using Puppet?
● Currently different environments at
○ OPS (Opennebula)
○ QA (EC2)...
Puppet @ Spreadshirt

Our tools
● Puppet
●

“Puppet is IT automation software that helps system administrators
manage infr...
Puppet @ Spreadshirt

Puppet
●

Puppet provides a declarative language to describe a
systems configuration

● The most ato...
Puppet @ Spreadshirt

Our tools
● r10k
●

“R10K is a hybrid solution for deploying Puppet code...deploying
Puppet environm...
Puppet @ Spreadshirt

R10K
●

R10K helps us manage our
modules

●

Allows us to store our modules
along with the software ...
Puppet @ Spreadshirt

R10K
●

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

●

R10...
Puppet @ Spreadshirt

Our tools
● hiera
●

“Hiera is a key/value lookup tool for configuration data. It makes
Puppet bette...
Puppet @ Spreadshirt

Hiera
● Configuration differs from context to context
● Configuration should not be hardcoded in man...
Puppet @ Spreadshirt

Hiera
● Hiera seperates deployment description from
configuration
$memory=hiera(“memory”)
● Hiera lo...
Puppet @ Spreadshirt

Hiera
● Storage of data in module by using the backend
yaml_data_in_modules
● Our own backend, open-...
Puppet @ Spreadshirt

Hiera
● Our hierachy
- %{context}-%{datacenter}-%{platform}-%{cluster}-%{hostname}
- %{context}-%{da...
Puppet @ Spreadshirt

Hiera
● Lets look at a typical lookup path:
common.yaml
app_name: content-service
port:4747
qa.yaml
...
Puppet @ Spreadshirt

Conclusions
● Spreadshirt uses Puppet to deploy more and more of
its infrastructure
● To enable cont...
Puppet @ Spreadshirt

Thank you!
Hendrik Seffler <hse@spreadshirt.net>
Upcoming SlideShare
Loading in …5
×

Puppet @ Spreadshirt

423
-1

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
423
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Puppet @ Spreadshirt

  1. 1. Puppet @ Spreadshirt Hendrik Seffler <hse@spreadshirt.net>
  2. 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. 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
  4. 4. Puppet @ Spreadshirt
  5. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 18. Puppet @ Spreadshirt Thank you! Hendrik Seffler <hse@spreadshirt.net>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×