• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Beyond golden containers: complementing Docker with Puppet
 

Beyond golden containers: complementing Docker with Puppet

on

  • 16,433 views

Beyond golden containers: complementing Docker with Puppet by David Lutterkort from Puppet Labs

Beyond golden containers: complementing Docker with Puppet by David Lutterkort from Puppet Labs

Statistics

Views

Total Views
16,433
Views on SlideShare
582
Embed Views
15,851

Actions

Likes
1
Downloads
33
Comments
0

18 Embeds 15,851

http://blog.docker.com 15654
http://feedly.com 56
http://plus.url.google.com 43
http://www.newsblur.com 24
http://newsblur.com 24
https://blog.docker.com 22
http://www.slideee.com 7
http://www.paasmag.com 4
https://twitter.com 4
http://www.google.com 2
http://translate.googleusercontent.com 2
http://www.google.co.jp 2
http://blog-stage.docker.com 2
http://blogdocker-docker.dotcloud.com 1
http://ttrss-inneos.rhcloud.com 1
http://webcache.googleusercontent.com 1
http://news.google.com 1
http://analyst.ciradar.com 1
More...

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Beyond golden containers: complementing Docker with Puppet Beyond golden containers: complementing Docker with Puppet Presentation Transcript

    • Beyond Golden Containers Complementing Docker with Puppet David Lutterkort   lutter@puppetlabs.com
    • http://northshorekid.com/event/campfire-stories-marini-farm
    • http://www.partialhospitalization.com/2010/08/363/
    • lang en_US.UTF-8 keyboard us … rootpw --iscrypted $1$uw6MV$m6VtUWPed4SqgoW6fKfTZ/ part / --size 1024 --fstype ext4 --ondisk sda ! repo --name=fedora —mirrorlist=… repo --name=updates —mirrorlist=… ! %packages @core %end ! %post curl http://example.com/the-script.pl | /usr/bin/perl ! What’s that machine doing ? 4
    • 5http://www.gcksa.com/en/
    • 6http://grillingwithrich.com/wrapping-meats-the-positives-and-negatives-and-everything-in-between/foil-ball
    • Overview • Puppet  from  10,000  feet   • Managing  the  host   • Building  images   – without  a  master  (puppet apply)   – with  a  master  (puppet agent)   • Run9me  configura9on 7
    • Infrastructure as Code 8 1)DEFINE 2)SIMULATE 4)REPORT 3)ENFORCE Re-usable infrastructure-as-code Insight into changes Before deploying changes Automatically and reliably
    • Dataflow in Puppet 9
    • class webserver { 
 package { 'httpd':
 ensure => latest
 } ->
 
 file { '/etc/httpd/conf.d/local.conf':
 ensure => file,
 mode => 644,
 source => 'puppet:///modules/httpd/local.conf',
 } ->
 
 service { 'httpd':
 ensure => running,
 enable => true,
 subscribe => File['/etc/httpd/conf.d/local.conf'],
 }
 ! } A basic manifest 10
    • class webserver2 inherits webserver {
 
 File['/etc/httpd/conf.d/local.conf'] {
 source => 'puppet:///modules/httpd/other-local.conf',
 }
 
 }
 Override via inheritance 11
    • The site-wide manifest 12 node host1.example.com {
 class { 'webserver': }
 }
 ! 
 node host2.example.com {
 class { 'webserver2': }
 }
 ! 
 node host3.example.com {
 class {'mongodb::server':
 port => 27018
 }
 }

    • 13
    • Overview • Puppet  from  10,000  feet   • Managing  the  host   • Building  images   – without  a  master  (puppet apply)   – with  a  master  (puppet agent)     • Run9me  configura9on 14
    • Managing the host Gareth  Rushgrove’s  module:            hKps://forge.puppetlabs.com/garethr/docker   ! • Install  docker  (Ubuntu  and  CentOS)   • Manage  images   • Run  containers 15
    • ! class { 'docker':
 tcp_bind => 'tcp://127.0.0.1:4243',
 socket_bind => 'unix:///var/run/docker.sock',
 }
 Setting up Docker 16
    • ! docker::image { 'ubuntu':
 image_tag => 'precise'
 }
 Pulling down images 17
    • ! docker::run { 'appserver2':
 image => 'fedora:20',
 command => '/usr/sbin/init',
 ports => ['80', '443'],
 links => ['mysql:db'],
 use_name => true,
 volumes => ['/var/lib/couchdb', '/var/log'],
 volumes_from => 'appserver1',
 memory_limit => 10485760, # bytes 
 username => 'appy',
 hostname => 'app2.example.com',
 env => ['FOO=BAR', 'FOO2=BAR2'],
 dns => ['8.8.8.8', ‘8.8.4.4'] } Running containers 18
    • Overview • Puppet  from  10,000  feet   • Managing  the  host   • Building  images   – without  a  master  (puppet apply)   – with  a  master  (puppet agent)   • Run9me  configura9on 19
    • Dockerfile for puppet apply 20 FROM jamtur01/puppetbase
 MAINTAINER James Turnbull <james@lovedthanlost.net>
 
 ADD modules /tmp/modules
 RUN yum -y install puppet; 
 puppet apply --modulepath=/tmp/modules -e "class { 'nginx': service_ensure => disable }”
 
 EXPOSE 80
 CMD ["nginx"]

    • Overview • Puppet  from  10,000  feet   • Managing  the  host   • Building  images   – without  a  master  (puppet apply)   – with  a  master  (puppet agent)   • Run9me  configura9on 21
    • ! FROM fedora:20
 MAINTAINER David Lutterkort <lutter@watzmann.net>
 
 ADD puppet /tmp/puppet-docker
 
 RUN yum -y install puppet; 
 yum clean all; 
 /tmp/puppet-docker/bin/puppet-docker
 Dockerfile for puppet agent 22
    • > tree puppet ! puppet/ ├── bin │ └── puppet-docker ├── config.yaml └── ssl ├── agent-cert.pem ├── agent-private.pem ├── agent-public.pem └── ca.pem ! Support files 23
    • > cat puppet/config.yaml ! ---
 certname: docker
 # server: puppet-master.example.com
 facts:
 container: docker
 build: true
 ! Configure agent run 24
    • Overview • Puppet  from  10,000  feet   • Managing  the  host   • Building  images   – without  a  master  (puppet apply)   – with  a  master  (puppet agent)   • Run<me  configura<on 25
    • Runtime configuration • Install  an  init  system  (systemd)   – run  cron  or  puppetd   – run  target  service(s)   • Possibly  move  to  one  agent  per  host 26
    • Summary • Explain  what  you  are  doing  clearly   (or  scare  those  trying  to  understand  you  to  death)     • Manage  container  hosts  with
        hKps://forge.puppetlabs.com/garethr/docker   • Sample  materials  for  puppet agent  etc.  at
        hKps://github.com/luKer/puppet-­‐docker   ! 27 Ques9ons  ?