Top Banner

Click here to load reader

97

Docker Docker Docker Chef

Jan 07, 2017

Download

Technology

Sean OMeara
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Docker Docker Docker Chef

Docker Docker Docker Chef

Page 2: Docker Docker Docker Chef

Config Management CampGhent, BelgiumFebruary 2016

Page 3: Docker Docker Docker Chef

Sean [email protected]

@someara

Page 4: Docker Docker Docker Chef

whoami

Page 5: Docker Docker Docker Chef

Part 1

Page 6: Docker Docker Docker Chef

Remember the time

Page 7: Docker Docker Docker Chef

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

Page 8: Docker Docker Docker Chef

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

Page 9: Docker Docker Docker Chef

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

Page 10: Docker Docker Docker Chef

Repeat after me

Page 11: Docker Docker Docker Chef

CONFIGURATION MANAGEMENT AND

IMMUTABLE INFRASTRUCTURE

ARE NOT MUTUALLY EXCLUSIVE

Page 12: Docker Docker Docker Chef

Say it again

Page 13: Docker Docker Docker Chef

CONFIGURATION MANAGEMENT AND

IMMUTABLE INFRASTRUCTURE

ARE NOT MUTUALLY EXCLUSIVE

Page 14: Docker Docker Docker Chef

We good?

Page 15: Docker Docker Docker Chef

The Docker cookbook

Page 16: Docker Docker Docker Chef

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

Page 17: Docker Docker Docker Chef

Configuration Management tests and repairs any programmable noun

Page 18: Docker Docker Docker Chef

Images are nouns

Page 19: Docker Docker Docker Chef

Containers are nouns

Page 20: Docker Docker Docker Chef

hello world

Page 21: Docker Docker Docker Chef

https://flic.kr/p/br26Cb

Setup v0.0.1

Page 22: Docker Docker Docker Chef

Install ChefDK

Page 23: Docker Docker Docker Chef

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

Page 24: Docker Docker Docker Chef

kitchen test

Page 25: Docker Docker Docker Chef

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

Page 26: Docker Docker Docker Chef

https://flic.kr/p/s684tk

Feature v0.1.0

Page 27: Docker Docker Docker Chef

metadata.rb

Page 28: Docker Docker Docker Chef

.kitchen.yml

Page 29: Docker Docker Docker Chef

recipes/hello.rb

Page 30: Docker Docker Docker Chef

kitchen converge hellokitchen login hello

docker imagesdocker ps -adocker logs hello-world

Page 31: Docker Docker Docker Chef

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

Page 32: Docker Docker Docker Chef

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

Patch v0.1.1

Page 33: Docker Docker Docker Chef

Bug report: “hello is not idempotent”

Page 34: Docker Docker Docker Chef

kitchen converge hellokitchen converge hello

Page 35: Docker Docker Docker Chef

kitchen login hellodocker ps -a docker logs hello-world

Page 36: Docker Docker Docker Chef

hello-world exits after every run

Page 37: Docker Docker Docker Chef

This is expected!

Page 38: Docker Docker Docker Chef

http://gliderlabs.com/

Page 39: Docker Docker Docker Chef

recipes/hello.rb

Page 40: Docker Docker Docker Chef

rubocop \&& rspec \&& kitchen test hello

Page 41: Docker Docker Docker Chef

metadata.rb

Page 42: Docker Docker Docker Chef

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

Page 43: Docker Docker Docker Chef

an echo server

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

Page 44: Docker Docker Docker Chef

https://flic.kr/p/s684tk

Feature v0.2.0

Page 45: Docker Docker Docker Chef

Recipe work Kitchen work Behavior testing Unit Final Acceptance Commit

Page 46: Docker Docker Docker Chef

.kitchen.yml

Page 47: Docker Docker Docker Chef

recipes/echo.rb

Page 48: Docker Docker Docker Chef

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

Page 49: Docker Docker Docker Chef
Page 50: Docker Docker Docker Chef

kitchen converge echokitchen converge echokitchen login echo

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

Page 51: Docker Docker Docker Chef

test/integration/echo/inspec/run_spec.rb

Page 52: Docker Docker Docker Chef

rubocop \&& rspec \&& kitchen test echo

Page 53: Docker Docker Docker Chef

metadata.rb

Page 54: Docker Docker Docker Chef

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

Page 55: Docker Docker Docker Chef

https://flic.kr/p/dRGr3t

Patch v0.2.1

Page 56: Docker Docker Docker Chef

Security team recommends a change…

Service should listen on explicitly defined interfaces

Page 57: Docker Docker Docker Chef

kitchen converge echokitchen login echonetstat -anp

Page 58: Docker Docker Docker Chef

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

Page 59: Docker Docker Docker Chef

recipes/echo.rb

Page 60: Docker Docker Docker Chef

test/integration/echo/inspec/run_spec.rb

Page 61: Docker Docker Docker Chef

rubocop \&& rspec \&& kitchen test echo

Page 62: Docker Docker Docker Chef

metadata.rb

Page 63: Docker Docker Docker Chef

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

Page 64: Docker Docker Docker Chef

https://flic.kr/p/ayDujN

notifications and subscriptions

Page 65: Docker Docker Docker Chef

https://flic.kr/p/cNdyo

Feature v0.3.0

Page 66: Docker Docker Docker Chef

recipes/web.rb

Page 67: Docker Docker Docker Chef

recipes/web.rb

Page 68: Docker Docker Docker Chef

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

Page 69: Docker Docker Docker Chef

test/integration/web/inspec/run_spec.rb

Page 70: Docker Docker Docker Chef

rubocop \&& rspec \&& kitchen test web

Page 71: Docker Docker Docker Chef

metadata.rb

Page 72: Docker Docker Docker Chef

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

Page 73: Docker Docker Docker Chef

https://flic.kr/p/o9c2G3

Patch v0.3.1

Page 74: Docker Docker Docker Chef

Marketing team recommends a change…

Bob wasn’t there.

Page 75: Docker Docker Docker Chef

kitchen converge webkitchen login webcurl localhost

Page 76: Docker Docker Docker Chef

Bob was here. Let’s fix that.

Page 77: Docker Docker Docker Chef

recipes/web.rb

Page 78: Docker Docker Docker Chef

test/integration/echo/inspec/run_spec.rb

Page 79: Docker Docker Docker Chef

rubocop \&& rspec \&& kitchen test web

Page 80: Docker Docker Docker Chef

metadata.rb

Page 81: Docker Docker Docker Chef

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

Page 82: Docker Docker Docker Chef

Part 2

Page 83: Docker Docker Docker Chef

kitchen-dokken

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

Page 84: Docker Docker Docker Chef

Experimental status Soon to be renamed something less clever

Page 85: Docker Docker Docker Chef

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

Page 86: Docker Docker Docker Chef

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

Page 87: Docker Docker Docker Chef

Install ChefDK chef gem install kitchen-dokken

Page 88: Docker Docker Docker Chef

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

Page 89: Docker Docker Docker Chef

kitchen list docker ps -a

Page 90: Docker Docker Docker Chef
Page 91: Docker Docker Docker Chef

kitchen create docker ps -a

Page 92: Docker Docker Docker Chef

Chef container Data container Runner container

Page 93: Docker Docker Docker Chef

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

Page 94: Docker Docker Docker Chef

docker diff suitename

Page 95: Docker Docker Docker Chef

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

Page 96: Docker Docker Docker Chef

fin

Page 97: Docker Docker Docker Chef