Docker Docker Docker Chef

Post on 07-Jan-2017

935 views 4 download

Transcript of Docker Docker Docker Chef

Docker Docker Docker Chef

Config Management CampGhent, BelgiumFebruary 2016

Sean OMearasean@chef.io

@someara

whoami

Part 1

Remember the time

Remember that time we didn’t need configuration management because we had packaging?

Remember that time the cloud came out and we didn’t need sysadmins?

Remember that time when we didn’t need schemas because we had MongoDB?

Repeat after me

CONFIGURATION MANAGEMENT AND

IMMUTABLE INFRASTRUCTURE

ARE NOT MUTUALLY EXCLUSIVE

Say it again

CONFIGURATION MANAGEMENT AND

IMMUTABLE INFRASTRUCTURE

ARE NOT MUTUALLY EXCLUSIVE

We good?

The Docker cookbook

Configuration Management is not restricted to files, directories, packages and services

Configuration Management tests and repairs any programmable noun

Images are nouns

Containers are nouns

hello world

https://flic.kr/p/br26Cb

Setup v0.0.1

Install ChefDK

git clone https://github.com/someara/chef-docker-tutorial

kitchen test

git checkout v0.0.1git checkout v0.1.0git checkout v0.1.1git checkout v0.2.0git checkout v0.2.1git checkout v0.3.0git checkout v0.3.1

https://flic.kr/p/s684tk

Feature v0.1.0

metadata.rb

.kitchen.yml

recipes/hello.rb

kitchen converge hellokitchen login hello

docker imagesdocker ps -adocker logs hello-world

git add . git commit -a -m “v0.1.0 - hello”git tag v0.1.0

https://flic.kr/p/53stX2

Patch v0.1.1

Bug report: “hello is not idempotent”

kitchen converge hellokitchen converge hello

kitchen login hellodocker ps -a docker logs hello-world

hello-world exits after every run

This is expected!

http://gliderlabs.com/

recipes/hello.rb

rubocop \&& rspec \&& kitchen test hello

metadata.rb

git add . git commit -a -m “v0.1.1 - hello”git tag v0.1.1

an echo server

https://flic.kr/p/6WtX6X

https://flic.kr/p/s684tk

Feature v0.2.0

Recipe work Kitchen work Behavior testing Unit Final Acceptance Commit

.kitchen.yml

recipes/echo.rb

Docker Containers have 40+ (and growing) runtime API options

kitchen converge echokitchen converge echokitchen login echo

docker imagesdocker ps -adocker logs an_echo_serverdocker inspect an_echo_serverecho "hi" | nc localhost 7

test/integration/echo/inspec/run_spec.rb

rubocop \&& rspec \&& kitchen test echo

metadata.rb

git add . git commit -a -m “v0.2.0 - echo”git tag v0.2.0

https://flic.kr/p/dRGr3t

Patch v0.2.1

Security team recommends a change…

Service should listen on explicitly defined interfaces

kitchen converge echokitchen login echonetstat -anp

Listening on :::7 Let’s fix that.

recipes/echo.rb

test/integration/echo/inspec/run_spec.rb

rubocop \&& rspec \&& kitchen test echo

metadata.rb

git add . git commit -a -m “v0.2.1 - echo patch”git tag v0.2.1

https://flic.kr/p/ayDujN

notifications and subscriptions

https://flic.kr/p/cNdyo

Feature v0.3.0

recipes/web.rb

recipes/web.rb

kitchen converge webkitchen converge webkitchen login webdocker imagesdocker ps -acurl localhostdocker logs bob

test/integration/web/inspec/run_spec.rb

rubocop \&& rspec \&& kitchen test web

metadata.rb

git add . git commit -a -m “v0.3.0 - web”git tag v0.3.0

https://flic.kr/p/o9c2G3

Patch v0.3.1

Marketing team recommends a change…

Bob wasn’t there.

kitchen converge webkitchen login webcurl localhost

Bob was here. Let’s fix that.

recipes/web.rb

test/integration/echo/inspec/run_spec.rb

rubocop \&& rspec \&& kitchen test web

metadata.rb

git add . git commit -a -m “v0.3.1 - echo patch”git tag v0.3.1

Part 2

kitchen-dokken

http://on.mtv.com/1ls5SRc

Experimental status Soon to be renamed something less clever

Removes bootstrap overhead Uses Docker volumes Chef not baked into images Works on Travis

https://github.com/someara/kitchen-dokken/

Install ChefDK chef gem install kitchen-dokken

git clone https://github.com/someara/hello_dokken

kitchen list docker ps -a

kitchen create docker ps -a

Chef container Data container Runner container

docker run \ —volumes-from chef \ —volumes-from data \ imagename \ chef-client

docker diff suitename

https://travis-ci.org/someara/etcd-cookbook

fin