• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Provisioning & Deploying with Docker
 

Provisioning & Deploying with Docker

on

  • 537 views

Using docker with configuration management. For all things Chef, presume I say "Puppet".

Using docker with configuration management. For all things Chef, presume I say "Puppet".

Statistics

Views

Total Views
537
Views on SlideShare
531
Embed Views
6

Actions

Likes
3
Downloads
16
Comments
0

2 Embeds 6

http://www.slideee.com 5
http://www.linkedin.com 1

Accessibility

Categories

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

    Provisioning & Deploying with Docker Provisioning & Deploying with Docker Presentation Transcript

    • @ewindisch
    • Deploying with Docker Atlanta Docker Meetup 2014.05.13
    • Do I still need Chef
 <or insert tool here>?
    • There is no easy answer
    • Why do we still need
 <or insert tool here>?
    • But… we have Dockerfiles!
    • It’s a shell-script? $ cat SomeApp/Dockerfile
 
 FROM ubuntu:13.10
 
 RUN apt-get update; apt-get install apache
 RUN sed ’s/something/else/‘ /etc/apache/httpd.conf
 
 ADD shell-script.sh
 RUN shell-script.sh
 
 RUN [‘/usr/bin/apachectl’, ‘start’]
    • How do we do it? $ cat Dockerfile
 FROM fedora
 RUN yum update 
 yum -y install chef

    • Traditional Chef Hardware OS Linux Chef Installs Chef Runs Configures
    • Images on HW
 is usually mutable Hardware Image Linux Chef Installs Chef Image' Linux Chef Creates Replaces Runs
    • Ephemeral environments
 are (somewhat) immutable. Hypervisor Image Linux Chef Runs Image' Linux Chef Chef Runs Configures VM Accesses COW
    • Containers are like ephemeral VMs* * Docker containers don’t HAVE to be ephemeral, but it’s TheRightThing Docker Image Linux Chef Runs Image' Linux Chef Chef Runs Configures Container Accesses COW TM
    • Runtime Configuration • One image, several configurations • Configuration based on container environment • Specify metadata or roles via environment variables (passed to ‘docker run -e’)
    • Chef-for-runtime $ cat Dockerfile
 FROM fedora
 RUN yum update 
 yum -y install chef
 ADD http://x/receipes.tar.gz /opt/chef" ADD solo.rb /etc/chef/solo.rb" CMD chef-solo -c /etc/chef/solo.rb ; ! apachectl start
    • Does it converge? $ docker build —rm .
 $ echo $? # pass or fail (This is great use of Docker as an alternative to VMs for testing Chef recipes targeting non-Docker production systems)
    • Bootstrapping Configuration Management on every boot is expensive
    • Let us use images!
    • Build-time configuration • Speed up Chef-based deployments (do it once!) • Eliminate run-time network requirements • Config-management CI
    • Chef-for-build $ cat Dockerfile
 FROM fedora
 RUN yum update 
 yum -y install chef" 
 ADD http://x/receipes.tar.gz /opt/chef" ADD solo.rb /etc/chef/solo.rb" RUN chef-solo -c /etc/chef/solo.rb

    • Burning configuration
 into images. Docker ContainerInitiates Creates Image Linux Chef Chef Runs Configures Build Creates
    • Expanded view:
 Burning configuration into images. Docker Image tagInitiates Image' Linux Chef Chef Build Image Linux Chef Creates Creates Runs Creates References 1 2
    • Anatomy of a Docker+Chef build & run Docker ContainerInitiates Creates Image Linux Chef Chef Runs Configures Chef Runs Configures Build Creates Stage 1 Stage 2
    • Chef-for-all-the-things $ cat Dockerfile
 FROM fedora
 RUN yum update 
 yum -y install chef
 
 ADD http://x/receipes.tar.gz /opt/chef" ADD solo-stage1.rb /etc/chef/solo-stage1.rb" ADD solo-stage2.rb /etc/chef/solo-stage2.rb" RUN chef-solo -c /etc/chef/solo-stage1.rb" CMD chef-solo -c /etc/chef/solo-stage2.rb ;" apachectl start