Successfully reported this slideshow.
@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 ’...
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
V...
Containers are like
ephemeral VMs*
* Docker containers don’t HAVE to be ephemeral,
but it’s TheRightThing
Docker
Image
Lin...
Runtime Configuration
• One image, several
configurations
• Configuration based on
container environment
• Specify metadata o...
Chef-for-runtime
$ cat Dockerfile

FROM fedora

RUN yum update 

yum -y install chef

ADD http://x/receipes.tar.gz /opt/ch...
Does it converge?
$ docker build —rm .

$ echo $? # pass or fail
(This is great use of Docker as an
alternative to VMs for...
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-...
Chef-for-build
$ cat Dockerfile

FROM fedora

RUN yum update 

yum -y install chef"


ADD http://x/receipes.tar.gz /opt/ch...
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
...
Anatomy of a Docker+Chef
build & run
Docker ContainerInitiates Creates
Image
Linux
Chef
Chef
Runs
Configures
Chef
Runs
Confi...
Chef-for-all-the-things
$ cat Dockerfile

FROM fedora

RUN yum update 

yum -y install chef



ADD http://x/receipes.tar.g...
Provisioning & Deploying with Docker
Provisioning & Deploying with Docker
Provisioning & Deploying with Docker
Provisioning & Deploying with Docker
Provisioning & Deploying with Docker
Provisioning & Deploying with Docker
Upcoming SlideShare
Loading in …5
×

Provisioning & Deploying with Docker

2,679 views

Published on

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

Published in: Technology, Business
  • Be the first to comment

Provisioning & Deploying with Docker

  1. 1. @ewindisch
  2. 2. Deploying with Docker Atlanta Docker Meetup 2014.05.13
  3. 3. Do I still need Chef
 <or insert tool here>?
  4. 4. There is no easy answer
  5. 5. Why do we still need
 <or insert tool here>?
  6. 6. But… we have Dockerfiles!
  7. 7. 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’]
  8. 8. How do we do it? $ cat Dockerfile
 FROM fedora
 RUN yum update 
 yum -y install chef

  9. 9. Traditional Chef Hardware OS Linux Chef Installs Chef Runs Configures
  10. 10. Images on HW
 is usually mutable Hardware Image Linux Chef Installs Chef Image' Linux Chef Creates Replaces Runs
  11. 11. Ephemeral environments
 are (somewhat) immutable. Hypervisor Image Linux Chef Runs Image' Linux Chef Chef Runs Configures VM Accesses COW
  12. 12. 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
  13. 13. Runtime Configuration • One image, several configurations • Configuration based on container environment • Specify metadata or roles via environment variables (passed to ‘docker run -e’)
  14. 14. 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
  15. 15. 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)
  16. 16. Bootstrapping Configuration Management on every boot is expensive
  17. 17. Let us use images!
  18. 18. Build-time configuration • Speed up Chef-based deployments (do it once!) • Eliminate run-time network requirements • Config-management CI
  19. 19. 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

  20. 20. Burning configuration
 into images. Docker ContainerInitiates Creates Image Linux Chef Chef Runs Configures Build Creates
  21. 21. Expanded view:
 Burning configuration into images. Docker Image tagInitiates Image' Linux Chef Chef Build Image Linux Chef Creates Creates Runs Creates References 1 2
  22. 22. 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
  23. 23. 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

×