Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Docker Docker Docker Chef
someara
February 02, 2016
Technology
0
190
Docker Docker Docker Chef
Configuration Management Camp
Ghent Belgium
February 2016
someara
February 02, 2016
Tweet
Share
More Decks by someara
See All by someara
Hand Crafted Artisinal Chef Resources
someara
0
270
Configuration Management Camp 2015
someara
1
270
Cookbook Reusability
someara
0
240
TDI with ChefDK 0.0.1
someara
2
320
Configuration Management 101 @ Scale12x
someara
2
590
Configuration Management 101
someara
3
510
Introduction to Chef - Scale 10x
someara
2
350
Introduction to Chef - NYLUG Jan 2012
someara
2
240
Introduction to Chef - LISA11
someara
10
6k
Other Decks in Technology
See All in Technology
[SRE NEXT 2022]組織に対してSREを適用するとはどういうことか
srenext
0
220
Poolにおける足を止めないシステム基盤構築
winebarrel
3
880
Who owns the Service Level?
chaspy
5
1.1k
アルプの 認証/認可分離戦略と手法
ma2k8
PRO
2
320
Dagu | オンプレ向けワークフローエンジン(WebUI 同梱)
yohamta
0
180
長年運用されてきたモノリシックアプリケーションをコンテナ化しようとするとどんな問題に遭遇するか? / SRE NEXT 2022
nulabinc
PRO
15
7.6k
Spotify物理コントローラーがほしい
miso
0
160
How We Foster Reliability in Diversity
nari_ex
PRO
9
2.8k
事業の成長と共に歩む、ABEMA SRE探求の歴史 / SRE-Next 2022
nagaa052
0
240
プロダクトグロースと技術のベースアップを両立させるRettyのアプリ開発スタイル / Achieve Product Growth and Tech Update
imaizume
1
290
読者のことを考えて書いてみよう / Write with your reader in mind
line_developers
PRO
3
360
Unity Package Managerで自作パッケージを配布する方法
yunoda
0
190
Featured
See All Featured
Atom: Resistance is Futile
akmur
255
20k
How STYLIGHT went responsive
nonsquared
85
3.9k
Designing for Performance
lara
596
63k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
Making Projects Easy
brettharned
98
4.3k
Product Roadmaps are Hard
iamctodd
34
6.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
38
12k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
100
5.9k
Become a Pro
speakerdeck
PRO
3
780
Designing the Hi-DPI Web
ddemaree
272
32k
Code Review Best Practice
trishagee
41
6.7k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
11
4.6k
Transcript
Docker Docker Docker Chef
Config Management Camp Ghent, Belgium February 2016
Sean OMeara sean@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.1 git checkout v0.1.0 git checkout v0.1.1 git
checkout v0.2.0 git checkout v0.2.1 git checkout v0.3.0 git checkout v0.3.1
https://flic.kr/p/s684tk Feature v0.1.0
metadata.rb
.kitchen.yml
recipes/hello.rb
kitchen converge hello kitchen login hello docker images docker ps
-a docker 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 hello kitchen converge hello
kitchen login hello docker 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
None
kitchen converge echo kitchen converge echo kitchen login echo docker
images docker ps -a docker logs an_echo_server docker inspect an_echo_server echo "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 echo kitchen login echo netstat -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 web kitchen converge web kitchen login web docker
images docker ps -a curl localhost docker 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 web kitchen login web curl 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
None
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
None