SlideShare a Scribd company logo
Building	
  a	
  Private	
  Supermarket	
  
for	
  your	
  Organization
Justin	
  Dossey
Who	
  I	
  am	
  (and	
  why	
  you	
  
should	
  listen	
  to	
  me)
• I’m	
  Justin	
  Dossey.	
  
• Twenty	
  years	
  as	
  a	
  professional	
  
sysadmin	
  
• Ten	
  years	
  as	
  a	
  Rubyist	
  
• Seven	
  years	
  with	
  CM	
  
• I	
  just	
  built	
  a	
  bunch	
  of	
  
supermarkets	
  a	
  couple	
  of	
  
months	
  ago	
  
• We’re	
  hiring!	
  	
  Talk	
  to	
  me	
  after.
A	
  Brief	
  History	
  of	
  the	
  Supermarket
A	
  Brief	
  History	
  of	
  the	
  Supermarket
• Built	
  for	
  Chef	
  as	
  a	
  simple	
  Ruby	
  on	
  Rails	
  app	
  
• Hosted	
  in	
  AWS	
  
• First	
  commit	
  (on	
  Github):	
  October	
  2013	
  
• Originally	
  designed	
  as	
  something	
  to	
  be	
  hosted	
  
for	
  Chef,	
  by	
  Chef,	
  as	
  a	
  public	
  thing	
  
• This	
  means	
  that	
  stuff	
  like	
  CLA	
  signing	
  was	
  baked	
  
in	
  early	
  
• It	
  also	
  means	
  some	
  things	
  about	
  private	
  are	
  
funky
Why	
  Build	
  Private?
• The	
  organization	
  makes	
  a	
  lot	
  of	
  its	
  own	
  
cookbooks	
  
• Public	
  supermarket	
  may	
  provide	
  cookbooks	
  of	
  
suspect	
  quality	
  
• The	
  organization	
  is	
  worried	
  that	
  the	
  public	
  
supermarkets	
  could	
  be	
  closed	
  when	
  it	
  needs	
  to	
  
shop	
  
• Worries	
  that	
  the	
  public	
  supermarket	
  could	
  be	
  
robbed	
  or	
  infiltrated
The	
  Public	
  Supermarket	
  Code
makes	
  the	
  private	
  supermarket	
  possible
The	
  Supermarket	
  is	
  Open-­‐Source
• Chef	
  makes	
  the	
  supermarket	
  code	
  available	
  to	
  
everyone	
  
• If	
  they	
  can	
  run	
  one,	
  so	
  can	
  we!	
  
• …but	
  we’re	
  not	
  Chef,	
  so	
  we	
  might	
  have	
  to	
  
change	
  some	
  things	
  about	
  how	
  it	
  works.	
  
• There	
  are	
  an	
  awful	
  lot	
  of	
  build	
  dependencies	
  
• …	
  but	
  there’s	
  a	
  cookbook,	
  so	
  it’s	
  easy,	
  right?
Moving	
  Parts
how	
  the	
  supermarket	
  works
Supermarket	
  Architecture
• Supermarket	
  is	
  a	
  Ruby	
  on	
  Rails	
  
application.	
  
• It	
  talks	
  to	
  a	
  Postgres	
  Database	
  
• It	
  uses	
  dotenv	
  to	
  store	
  environment	
  
variables	
  (usually	
  related	
  to	
  config)	
  
• It	
  uses	
  omniauth	
  +	
  devise	
  
• Redis	
  is	
  in	
  there	
  too
9
Supermarket	
  Architecture
• Lots	
  of	
  integrations	
  with	
  external	
  services:	
  
• oc-­‐id	
  on	
  the	
  Chef	
  server	
  
• Github	
  
• StatsD	
  
• Sentry	
  
• Amazon	
  S3	
  
• Fieri	
  
• Curry	
  
• Pubsubhubbub	
  
• The	
  SMTP	
  relay	
  
• New	
  Relic	
  
• Google	
  Analytics
10
Our	
  Minimum	
  Working	
  Set
• Lots	
  of	
  integrations	
  with	
  external	
  services:	
  
• oc-­‐id	
  on	
  the	
  Chef	
  server	
  
• Github	
  
• StatsD	
  
• Sentry	
  
• Amazon	
  S3	
  
• Fieri	
  
• Curry	
  
• Pubsubhubbub	
  
• The	
  SMTP	
  relay	
  
• New	
  Relic	
  
• Google	
  Analytics
11
Configuring
Fun	
  with	
  Data	
  Bags
Yes,	
  Data	
  Bags.
• For	
  whatever	
  reason,	
  Chef’s	
  Supermarket	
  
developers	
  decided	
  that	
  the	
  best	
  place	
  to	
  put	
  
the	
  application	
  configuration	
  was	
  a	
  data	
  bag.	
  	
  	
  
• Back	
  in	
  2013,	
  this	
  probably	
  made	
  sense.	
  
• That	
  decision	
  remains	
  with	
  us	
  today	
  and	
  feels	
  
weird,	
  because	
  we	
  all	
  write	
  wrapper	
  cookbooks	
  
to	
  accomplish	
  the	
  same	
  thing	
  nowadays.	
  
• The	
  data	
  bag	
  we	
  need	
  is	
  called	
  “apps/
supermarket.”
Stuff	
  in	
  the	
  Data	
  Bag
• redis	
  URL	
  
• SMTP	
  server	
  info	
  
• github	
  info	
  
• oauth2	
  tokens	
  for	
  oc-­‐id	
  
• curry	
  info	
  
• sentry	
  url	
  
• which	
  revision	
  of	
  supermarket	
  to	
  clone	
  
• a	
  bunch	
  of	
  URLs
Stuff	
  not	
  in	
  the	
  Data	
  Bag
• SSL	
  stuff	
  
• supermarket	
  hostname	
  
• deploy	
  location	
  
• some	
  database	
  config	
  stuff	
  
• some	
  sidekiq	
  stuff
Doing	
  this	
  Ourselves
Write	
  a	
  Wrapper	
  Cookbook
• Put	
  attributes	
  and	
  a	
  working	
  data	
  bag	
  in	
  place.	
  	
  	
  
• Get	
  the	
  .kitchen.yml	
  written	
  and	
  the	
  thing	
  
building	
  in	
  dev,	
  then	
  build	
  the	
  production	
  
system.	
  
• Read	
  the	
  docs—	
  this	
  stuff	
  is	
  changing	
  pretty	
  
frequently.	
  
• When	
  stuff	
  breaks,	
  look	
  carefully	
  at	
  the	
  
production.log,	
  the	
  .env	
  file,	
  and	
  the	
  data	
  bag.
Authentication	
  to	
  the	
  Chef	
  Server
• The	
  Chef	
  server	
  needs	
  to	
  know	
  who	
  is	
  allowed	
  
to	
  register	
  apps	
  for	
  oc-­‐id	
  auth.	
  
• Last	
  I	
  checked,	
  that	
  was	
  a	
  line	
  in	
  

/etc/opscode/chef-server.rb	
  like	
  this:



• Once	
  that’s	
  in	
  and	
  we	
  run	
  chef-server-ctl
reconfigure,	
  we	
  can	
  get	
  the	
  oauth	
  stuff	
  we	
  
need	
  for	
  that	
  data	
  bag.
oc_id[‘administrators’] = [‘chef_username’]
Continuous	
  Integration	
  and	
  
Continuous	
  Deployment	
  for	
  
Cookbooks
A	
  brief	
  overview	
  of	
  pipeline	
  design	
  for	
  
infrastructure	
  code
How	
  it’s	
  Usually	
  Done
Doing	
  it	
  with	
  Supermarket
Sticky	
  Situations
Cookbook	
  Naming
• Berkshelf	
  has	
  a	
  flat	
  namespace.	
  
• We	
  can	
  specify	
  multiple	
  sources	
  for	
  
Berkshelf.	
  
• If	
  our	
  (in-­‐house)	
  cookbook	
  is	
  named	
  
the	
  same	
  as	
  one	
  on	
  the	
  public	
  
supermarket,	
  the	
  version	
  is	
  the	
  only	
  
differentiator.	
  	
  This	
  can	
  also	
  collide.	
  
• Switching	
  to	
  a	
  single	
  origin	
  means	
  
someone	
  has	
  to	
  upload	
  community	
  
cookbooks	
  to	
  the	
  private	
  supermarket	
  
• Doing	
  this	
  trades	
  namespace	
  collisions	
  
for	
  pipeline	
  and	
  maintenance	
  overhead
Cookbook	
  Ownership
• With	
  the	
  pipeline	
  proposed,	
  
the	
  only	
  uploader	
  of	
  
cookbooks	
  is	
  a	
  role	
  user—
Jenkins.	
  	
  	
  
• Therefore,	
  connecting	
  
supermarket	
  accounts	
  to	
  
github	
  accounts	
  is	
  weird.	
  
• We	
  wind	
  up	
  assigning	
  
ownership	
  outside	
  
Supermarket.
The	
  Future	
  of	
  Private	
  Supermarkets
Supermarket	
  Omnibus	
  Installer
• Increasingly,	
  Chef	
  is	
  pushing	
  installation	
  via	
  
pre-­‐built	
  packages	
  instead	
  of	
  the	
  Supermarket	
  
cookbook.	
  
• This	
  means	
  that	
  instead	
  of	
  the	
  data	
  bag	
  and	
  
such,	
  we	
  will	
  write	
  a	
  simple	
  wrapper	
  cookbook	
  
to	
  install	
  a	
  package	
  and	
  configure	
  components	
  
as	
  necessary.	
  
• It	
  is	
  unlikely	
  that	
  this	
  newer	
  method	
  will	
  affect	
  
any	
  of	
  the	
  integration	
  points.
Review
Review
• Running	
  a	
  private	
  supermarket	
  means	
  adapting	
  the	
  public	
  
code	
  (which	
  performs	
  tasks	
  relevant	
  to	
  the	
  public	
  
supermarket)	
  to	
  our	
  needs	
  
• We	
  need	
  our	
  own	
  chef	
  server	
  to	
  host	
  a	
  private	
  supermarket	
  
• The	
  supermarket	
  cookbook	
  uses	
  a	
  data	
  bag	
  for	
  some	
  
configuration	
  data	
  
• There	
  are	
  many	
  external	
  integration	
  points	
  which	
  we	
  can	
  
select	
  if	
  we	
  like,	
  but	
  most	
  are	
  not	
  required	
  for	
  basic	
  
operation	
  
• We	
  have	
  to	
  decide	
  how	
  to	
  approach	
  namespace	
  and	
  
ownership	
  issues	
  early	
  on
28
Questions
Thank	
  you!
(Did	
  I	
  mention	
  we	
  are	
  hiring?)
Find	
  me!	
  
blog:	
  www.justindossey.com	
  
twitter:	
  @justindossey	
  
irc:	
  jdossey	
  on	
  #chef	
  (freenode)	
  
email:	
  justin@newcontext.com

More Related Content

What's hot

Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Software, Inc.
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
Knoldus Inc.
 
Chaione Ember.js Training
Chaione Ember.js TrainingChaione Ember.js Training
Chaione Ember.js Training
aortbals
 
The Environment Restaurant
The Environment RestaurantThe Environment Restaurant
The Environment Restaurant
Martin de Keijzer
 
Chef Tutorial for DEVOPS Newbies
Chef Tutorial for DEVOPS NewbiesChef Tutorial for DEVOPS Newbies
Chef Tutorial for DEVOPS Newbies
Mamun Rashid, CCDH
 
Chef ignited a DevOps revolution – BK Box
Chef ignited a DevOps revolution – BK BoxChef ignited a DevOps revolution – BK Box
Chef ignited a DevOps revolution – BK Box
Chef Software, Inc.
 
Introduction to Chef - Techsuperwomen Summit
Introduction to Chef - Techsuperwomen SummitIntroduction to Chef - Techsuperwomen Summit
Introduction to Chef - Techsuperwomen Summit
Jennifer Davis
 
Opscode tech festa july 2013
Opscode tech festa   july 2013Opscode tech festa   july 2013
Opscode tech festa july 2013
Chef Software, Inc.
 
Chef + AWS + CodeIgniter
Chef + AWS + CodeIgniterChef + AWS + CodeIgniter
Chef + AWS + CodeIgniterciconf
 
Chasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
Chasing AMI - Building Amazon machine images with Puppet, Packer and JenkinsChasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
Chasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
Tomas Doran
 
Introduction to Chef - April 22 2015
Introduction to Chef - April 22 2015Introduction to Chef - April 22 2015
Introduction to Chef - April 22 2015
Jennifer Davis
 
Automated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAutomated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. Ansible
Alberto Molina Coballes
 
Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3
Chef
 
Chef introduction
Chef introductionChef introduction
Chef introduction
FENG Zhichao
 
Chef, Devops, and You
Chef, Devops, and YouChef, Devops, and You
Chef, Devops, and You
Bryan Berry
 
Atmosphere 2014: Really large scale systems configuration - Phil Dibowitz
Atmosphere 2014: Really large scale systems configuration - Phil DibowitzAtmosphere 2014: Really large scale systems configuration - Phil Dibowitz
Atmosphere 2014: Really large scale systems configuration - Phil Dibowitz
PROIDEA
 
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Software, Inc.
 
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Software, Inc.
 
Infrastructure Automation with Chef
Infrastructure Automation with ChefInfrastructure Automation with Chef
Infrastructure Automation with Chef
Jonathan Weiss
 
Environments - Fundamentals Webinar Series Week 5
Environments - Fundamentals Webinar Series Week 5Environments - Fundamentals Webinar Series Week 5
Environments - Fundamentals Webinar Series Week 5Chef
 

What's hot (20)

Chef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of ChefChef Fundamentals Training Series Module 1: Overview of Chef
Chef Fundamentals Training Series Module 1: Overview of Chef
 
Introduction to Chef
Introduction to ChefIntroduction to Chef
Introduction to Chef
 
Chaione Ember.js Training
Chaione Ember.js TrainingChaione Ember.js Training
Chaione Ember.js Training
 
The Environment Restaurant
The Environment RestaurantThe Environment Restaurant
The Environment Restaurant
 
Chef Tutorial for DEVOPS Newbies
Chef Tutorial for DEVOPS NewbiesChef Tutorial for DEVOPS Newbies
Chef Tutorial for DEVOPS Newbies
 
Chef ignited a DevOps revolution – BK Box
Chef ignited a DevOps revolution – BK BoxChef ignited a DevOps revolution – BK Box
Chef ignited a DevOps revolution – BK Box
 
Introduction to Chef - Techsuperwomen Summit
Introduction to Chef - Techsuperwomen SummitIntroduction to Chef - Techsuperwomen Summit
Introduction to Chef - Techsuperwomen Summit
 
Opscode tech festa july 2013
Opscode tech festa   july 2013Opscode tech festa   july 2013
Opscode tech festa july 2013
 
Chef + AWS + CodeIgniter
Chef + AWS + CodeIgniterChef + AWS + CodeIgniter
Chef + AWS + CodeIgniter
 
Chasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
Chasing AMI - Building Amazon machine images with Puppet, Packer and JenkinsChasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
Chasing AMI - Building Amazon machine images with Puppet, Packer and Jenkins
 
Introduction to Chef - April 22 2015
Introduction to Chef - April 22 2015Introduction to Chef - April 22 2015
Introduction to Chef - April 22 2015
 
Automated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAutomated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. Ansible
 
Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3Node object and roles - Fundamentals Webinar Series Part 3
Node object and roles - Fundamentals Webinar Series Part 3
 
Chef introduction
Chef introductionChef introduction
Chef introduction
 
Chef, Devops, and You
Chef, Devops, and YouChef, Devops, and You
Chef, Devops, and You
 
Atmosphere 2014: Really large scale systems configuration - Phil Dibowitz
Atmosphere 2014: Really large scale systems configuration - Phil DibowitzAtmosphere 2014: Really large scale systems configuration - Phil Dibowitz
Atmosphere 2014: Really large scale systems configuration - Phil Dibowitz
 
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
Chef Fundamentals Training Series Module 3: Setting up Nodes and Cookbook Aut...
 
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
Chef Fundamentals Training Series Module 6: Roles, Environments, Community Co...
 
Infrastructure Automation with Chef
Infrastructure Automation with ChefInfrastructure Automation with Chef
Infrastructure Automation with Chef
 
Environments - Fundamentals Webinar Series Week 5
Environments - Fundamentals Webinar Series Week 5Environments - Fundamentals Webinar Series Week 5
Environments - Fundamentals Webinar Series Week 5
 

Similar to Building a Private Supermarket for your Organization - ChefConf 2015

eMusic: WordPress in the Enterprise
eMusic: WordPress in the EnterpriseeMusic: WordPress in the Enterprise
eMusic: WordPress in the Enterprise
Scott Taylor
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile appsMugunth Kumar
 
Couchbase Connect 2016
Couchbase Connect 2016Couchbase Connect 2016
Couchbase Connect 2016
Michael Kehoe
 
Greenfields tech decisions
Greenfields tech decisionsGreenfields tech decisions
Greenfields tech decisions
Trent Hornibrook
 
ChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef RetrospectiveChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef Retrospective
gwaldo
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
Konstantin Gredeskoul
 
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
AWS Chicago
 
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do ItChef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
RightScale
 
Chef Jumpstart
Chef JumpstartChef Jumpstart
Chef Jumpstart
Kimball Johnson
 
HyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQLHyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQL
Evan Volgas
 
How Shopify Scales Rails
How Shopify Scales RailsHow Shopify Scales Rails
How Shopify Scales Railsjduff
 
Handling 1 Billion Requests/hr with Minimal Latency Using Docker
Handling 1 Billion Requests/hr with Minimal Latency Using DockerHandling 1 Billion Requests/hr with Minimal Latency Using Docker
Handling 1 Billion Requests/hr with Minimal Latency Using Docker
Matomy
 
Emerging chef patterns and practices
Emerging chef patterns and practicesEmerging chef patterns and practices
Emerging chef patterns and practicesOwain Perry
 
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
Lucidworks
 
Social dev camp_2011
Social dev camp_2011Social dev camp_2011
Social dev camp_2011
Craig Ulliott
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
Brian Ritchie
 
Enabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarEnabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinar
Aaron Walker
 
Analytics at Carbonite: presentation to Snowplow Meetup Boston April 2016
Analytics at Carbonite: presentation to Snowplow Meetup Boston April 2016Analytics at Carbonite: presentation to Snowplow Meetup Boston April 2016
Analytics at Carbonite: presentation to Snowplow Meetup Boston April 2016
yalisassoon
 
The DevOps Journey at bwin.party
The DevOps Journey at bwin.partyThe DevOps Journey at bwin.party
The DevOps Journey at bwin.party
Kelly Looney
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
Tony Tam
 

Similar to Building a Private Supermarket for your Organization - ChefConf 2015 (20)

eMusic: WordPress in the Enterprise
eMusic: WordPress in the EnterpriseeMusic: WordPress in the Enterprise
eMusic: WordPress in the Enterprise
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile apps
 
Couchbase Connect 2016
Couchbase Connect 2016Couchbase Connect 2016
Couchbase Connect 2016
 
Greenfields tech decisions
Greenfields tech decisionsGreenfields tech decisions
Greenfields tech decisions
 
ChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef RetrospectiveChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef Retrospective
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
Jeremy Engle's slides from Redshift / Big Data meetup on July 13, 2017
 
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do ItChef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
Chef vs. Puppet in the Cloud: How Telepictures and MoneySuperMarket Do It
 
Chef Jumpstart
Chef JumpstartChef Jumpstart
Chef Jumpstart
 
HyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQLHyperDB, MySQL Performance, & Flavors of MySQL
HyperDB, MySQL Performance, & Flavors of MySQL
 
How Shopify Scales Rails
How Shopify Scales RailsHow Shopify Scales Rails
How Shopify Scales Rails
 
Handling 1 Billion Requests/hr with Minimal Latency Using Docker
Handling 1 Billion Requests/hr with Minimal Latency Using DockerHandling 1 Billion Requests/hr with Minimal Latency Using Docker
Handling 1 Billion Requests/hr with Minimal Latency Using Docker
 
Emerging chef patterns and practices
Emerging chef patterns and practicesEmerging chef patterns and practices
Emerging chef patterns and practices
 
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
 
Social dev camp_2011
Social dev camp_2011Social dev camp_2011
Social dev camp_2011
 
Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011Standardizing and Managing Your Infrastructure - MOSC 2011
Standardizing and Managing Your Infrastructure - MOSC 2011
 
Enabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinarEnabling your DevOps culture with AWS-webinar
Enabling your DevOps culture with AWS-webinar
 
Analytics at Carbonite: presentation to Snowplow Meetup Boston April 2016
Analytics at Carbonite: presentation to Snowplow Meetup Boston April 2016Analytics at Carbonite: presentation to Snowplow Meetup Boston April 2016
Analytics at Carbonite: presentation to Snowplow Meetup Boston April 2016
 
The DevOps Journey at bwin.party
The DevOps Journey at bwin.partyThe DevOps Journey at bwin.party
The DevOps Journey at bwin.party
 
Inside Wordnik's Architecture
Inside Wordnik's ArchitectureInside Wordnik's Architecture
Inside Wordnik's Architecture
 

More from Chef

Habitat Managed Chef
Habitat Managed ChefHabitat Managed Chef
Habitat Managed Chef
Chef
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps Tour
Chef
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps Tour
Chef
 
Compliance Automation Workshop
Compliance Automation WorkshopCompliance Automation Workshop
Compliance Automation Workshop
Chef
 
London Community Summit 2016 - Adopting Chef Compliance
London Community Summit 2016 - Adopting Chef ComplianceLondon Community Summit 2016 - Adopting Chef Compliance
London Community Summit 2016 - Adopting Chef Compliance
Chef
 
Learning from Configuration Management
Learning from Configuration Management Learning from Configuration Management
Learning from Configuration Management
Chef
 
London Community Summit 2016 - Fresh New Chef Stuff
London Community Summit 2016 - Fresh New Chef StuffLondon Community Summit 2016 - Fresh New Chef Stuff
London Community Summit 2016 - Fresh New Chef Stuff
Chef
 
London Community Summit - Chef at SkyBet
London Community Summit - Chef at SkyBetLondon Community Summit - Chef at SkyBet
London Community Summit - Chef at SkyBet
Chef
 
London Community Summit - From Contribution to Authorship
London Community Summit - From Contribution to AuthorshipLondon Community Summit - From Contribution to Authorship
London Community Summit - From Contribution to Authorship
Chef
 
London Community Summit 2016 - Chef Automate
London Community Summit 2016 - Chef AutomateLondon Community Summit 2016 - Chef Automate
London Community Summit 2016 - Chef Automate
Chef
 
London Community Summit 2016 - Community Update
London Community Summit 2016 - Community UpdateLondon Community Summit 2016 - Community Update
London Community Summit 2016 - Community Update
Chef
 
London Community Summit 2016 - Habitat
London Community Summit 2016 -  HabitatLondon Community Summit 2016 -  Habitat
London Community Summit 2016 - Habitat
Chef
 
Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4
Chef
 
Compliance Automation with Inspec Part 3
Compliance Automation with Inspec Part 3Compliance Automation with Inspec Part 3
Compliance Automation with Inspec Part 3
Chef
 
Compliance Automation with Inspec Part 2
Compliance Automation with Inspec Part 2Compliance Automation with Inspec Part 2
Compliance Automation with Inspec Part 2
Chef
 
Compliance Automation with Inspec Part 1
Compliance Automation with Inspec Part 1Compliance Automation with Inspec Part 1
Compliance Automation with Inspec Part 1
Chef
 
Application Automation with Habitat
Application Automation with HabitatApplication Automation with Habitat
Application Automation with Habitat
Chef
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef Automate
Chef
 
Nike pop up habitat
Nike pop up   habitatNike pop up   habitat
Nike pop up habitat
Chef
 
Nike popup compliance workshop
Nike popup compliance workshopNike popup compliance workshop
Nike popup compliance workshop
Chef
 

More from Chef (20)

Habitat Managed Chef
Habitat Managed ChefHabitat Managed Chef
Habitat Managed Chef
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps Tour
 
Automation, Audits, and Apps Tour
Automation, Audits, and Apps TourAutomation, Audits, and Apps Tour
Automation, Audits, and Apps Tour
 
Compliance Automation Workshop
Compliance Automation WorkshopCompliance Automation Workshop
Compliance Automation Workshop
 
London Community Summit 2016 - Adopting Chef Compliance
London Community Summit 2016 - Adopting Chef ComplianceLondon Community Summit 2016 - Adopting Chef Compliance
London Community Summit 2016 - Adopting Chef Compliance
 
Learning from Configuration Management
Learning from Configuration Management Learning from Configuration Management
Learning from Configuration Management
 
London Community Summit 2016 - Fresh New Chef Stuff
London Community Summit 2016 - Fresh New Chef StuffLondon Community Summit 2016 - Fresh New Chef Stuff
London Community Summit 2016 - Fresh New Chef Stuff
 
London Community Summit - Chef at SkyBet
London Community Summit - Chef at SkyBetLondon Community Summit - Chef at SkyBet
London Community Summit - Chef at SkyBet
 
London Community Summit - From Contribution to Authorship
London Community Summit - From Contribution to AuthorshipLondon Community Summit - From Contribution to Authorship
London Community Summit - From Contribution to Authorship
 
London Community Summit 2016 - Chef Automate
London Community Summit 2016 - Chef AutomateLondon Community Summit 2016 - Chef Automate
London Community Summit 2016 - Chef Automate
 
London Community Summit 2016 - Community Update
London Community Summit 2016 - Community UpdateLondon Community Summit 2016 - Community Update
London Community Summit 2016 - Community Update
 
London Community Summit 2016 - Habitat
London Community Summit 2016 -  HabitatLondon Community Summit 2016 -  Habitat
London Community Summit 2016 - Habitat
 
Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4Compliance Automation with Inspec Part 4
Compliance Automation with Inspec Part 4
 
Compliance Automation with Inspec Part 3
Compliance Automation with Inspec Part 3Compliance Automation with Inspec Part 3
Compliance Automation with Inspec Part 3
 
Compliance Automation with Inspec Part 2
Compliance Automation with Inspec Part 2Compliance Automation with Inspec Part 2
Compliance Automation with Inspec Part 2
 
Compliance Automation with Inspec Part 1
Compliance Automation with Inspec Part 1Compliance Automation with Inspec Part 1
Compliance Automation with Inspec Part 1
 
Application Automation with Habitat
Application Automation with HabitatApplication Automation with Habitat
Application Automation with Habitat
 
Achieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef AutomateAchieving DevOps Success with Chef Automate
Achieving DevOps Success with Chef Automate
 
Nike pop up habitat
Nike pop up   habitatNike pop up   habitat
Nike pop up habitat
 
Nike popup compliance workshop
Nike popup compliance workshopNike popup compliance workshop
Nike popup compliance workshop
 

Recently uploaded

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 

Recently uploaded (20)

Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 

Building a Private Supermarket for your Organization - ChefConf 2015

  • 1. Building  a  Private  Supermarket   for  your  Organization Justin  Dossey
  • 2. Who  I  am  (and  why  you   should  listen  to  me) • I’m  Justin  Dossey.   • Twenty  years  as  a  professional   sysadmin   • Ten  years  as  a  Rubyist   • Seven  years  with  CM   • I  just  built  a  bunch  of   supermarkets  a  couple  of   months  ago   • We’re  hiring!    Talk  to  me  after.
  • 3. A  Brief  History  of  the  Supermarket
  • 4. A  Brief  History  of  the  Supermarket • Built  for  Chef  as  a  simple  Ruby  on  Rails  app   • Hosted  in  AWS   • First  commit  (on  Github):  October  2013   • Originally  designed  as  something  to  be  hosted   for  Chef,  by  Chef,  as  a  public  thing   • This  means  that  stuff  like  CLA  signing  was  baked   in  early   • It  also  means  some  things  about  private  are   funky
  • 5. Why  Build  Private? • The  organization  makes  a  lot  of  its  own   cookbooks   • Public  supermarket  may  provide  cookbooks  of   suspect  quality   • The  organization  is  worried  that  the  public   supermarkets  could  be  closed  when  it  needs  to   shop   • Worries  that  the  public  supermarket  could  be   robbed  or  infiltrated
  • 6. The  Public  Supermarket  Code makes  the  private  supermarket  possible
  • 7. The  Supermarket  is  Open-­‐Source • Chef  makes  the  supermarket  code  available  to   everyone   • If  they  can  run  one,  so  can  we!   • …but  we’re  not  Chef,  so  we  might  have  to   change  some  things  about  how  it  works.   • There  are  an  awful  lot  of  build  dependencies   • …  but  there’s  a  cookbook,  so  it’s  easy,  right?
  • 8. Moving  Parts how  the  supermarket  works
  • 9. Supermarket  Architecture • Supermarket  is  a  Ruby  on  Rails   application.   • It  talks  to  a  Postgres  Database   • It  uses  dotenv  to  store  environment   variables  (usually  related  to  config)   • It  uses  omniauth  +  devise   • Redis  is  in  there  too 9
  • 10. Supermarket  Architecture • Lots  of  integrations  with  external  services:   • oc-­‐id  on  the  Chef  server   • Github   • StatsD   • Sentry   • Amazon  S3   • Fieri   • Curry   • Pubsubhubbub   • The  SMTP  relay   • New  Relic   • Google  Analytics 10
  • 11. Our  Minimum  Working  Set • Lots  of  integrations  with  external  services:   • oc-­‐id  on  the  Chef  server   • Github   • StatsD   • Sentry   • Amazon  S3   • Fieri   • Curry   • Pubsubhubbub   • The  SMTP  relay   • New  Relic   • Google  Analytics 11
  • 13. Yes,  Data  Bags. • For  whatever  reason,  Chef’s  Supermarket   developers  decided  that  the  best  place  to  put   the  application  configuration  was  a  data  bag.       • Back  in  2013,  this  probably  made  sense.   • That  decision  remains  with  us  today  and  feels   weird,  because  we  all  write  wrapper  cookbooks   to  accomplish  the  same  thing  nowadays.   • The  data  bag  we  need  is  called  “apps/ supermarket.”
  • 14. Stuff  in  the  Data  Bag • redis  URL   • SMTP  server  info   • github  info   • oauth2  tokens  for  oc-­‐id   • curry  info   • sentry  url   • which  revision  of  supermarket  to  clone   • a  bunch  of  URLs
  • 15. Stuff  not  in  the  Data  Bag • SSL  stuff   • supermarket  hostname   • deploy  location   • some  database  config  stuff   • some  sidekiq  stuff
  • 17. Write  a  Wrapper  Cookbook • Put  attributes  and  a  working  data  bag  in  place.       • Get  the  .kitchen.yml  written  and  the  thing   building  in  dev,  then  build  the  production   system.   • Read  the  docs—  this  stuff  is  changing  pretty   frequently.   • When  stuff  breaks,  look  carefully  at  the   production.log,  the  .env  file,  and  the  data  bag.
  • 18. Authentication  to  the  Chef  Server • The  Chef  server  needs  to  know  who  is  allowed   to  register  apps  for  oc-­‐id  auth.   • Last  I  checked,  that  was  a  line  in  
 /etc/opscode/chef-server.rb  like  this:
 
 • Once  that’s  in  and  we  run  chef-server-ctl reconfigure,  we  can  get  the  oauth  stuff  we   need  for  that  data  bag. oc_id[‘administrators’] = [‘chef_username’]
  • 19. Continuous  Integration  and   Continuous  Deployment  for   Cookbooks A  brief  overview  of  pipeline  design  for   infrastructure  code
  • 21. Doing  it  with  Supermarket
  • 23. Cookbook  Naming • Berkshelf  has  a  flat  namespace.   • We  can  specify  multiple  sources  for   Berkshelf.   • If  our  (in-­‐house)  cookbook  is  named   the  same  as  one  on  the  public   supermarket,  the  version  is  the  only   differentiator.    This  can  also  collide.   • Switching  to  a  single  origin  means   someone  has  to  upload  community   cookbooks  to  the  private  supermarket   • Doing  this  trades  namespace  collisions   for  pipeline  and  maintenance  overhead
  • 24. Cookbook  Ownership • With  the  pipeline  proposed,   the  only  uploader  of   cookbooks  is  a  role  user— Jenkins.       • Therefore,  connecting   supermarket  accounts  to   github  accounts  is  weird.   • We  wind  up  assigning   ownership  outside   Supermarket.
  • 25. The  Future  of  Private  Supermarkets
  • 26. Supermarket  Omnibus  Installer • Increasingly,  Chef  is  pushing  installation  via   pre-­‐built  packages  instead  of  the  Supermarket   cookbook.   • This  means  that  instead  of  the  data  bag  and   such,  we  will  write  a  simple  wrapper  cookbook   to  install  a  package  and  configure  components   as  necessary.   • It  is  unlikely  that  this  newer  method  will  affect   any  of  the  integration  points.
  • 28. Review • Running  a  private  supermarket  means  adapting  the  public   code  (which  performs  tasks  relevant  to  the  public   supermarket)  to  our  needs   • We  need  our  own  chef  server  to  host  a  private  supermarket   • The  supermarket  cookbook  uses  a  data  bag  for  some   configuration  data   • There  are  many  external  integration  points  which  we  can   select  if  we  like,  but  most  are  not  required  for  basic   operation   • We  have  to  decide  how  to  approach  namespace  and   ownership  issues  early  on 28
  • 30. Thank  you! (Did  I  mention  we  are  hiring?) Find  me!   blog:  www.justindossey.com   twitter:  @justindossey   irc:  jdossey  on  #chef  (freenode)   email:  justin@newcontext.com