rabbit-slide-niku-nikulog-with-docker 2015.07.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 57319379cf37468ad8a097f5226b3134d59ad692
4
+ data.tar.gz: cf35956a152c68a31c7963354009dff3dddad027
5
+ SHA512:
6
+ metadata.gz: 58e947e66f7c21b02e362c1bed0d18df11a8553e73928e3f4a57f505c19bfe1f166a9f75247cc1981083258f0c8ab7c808555b4b6bd31e21bc4f671dc7dfbfc1
7
+ data.tar.gz: 0514dc468c7603b56c6d0015b9e237cb5196cc0db6cfc5016fcfd0bdd7733bc9ce772b389e38d0ea658a5c648b3b63a02dc7aa7d254b495727bb1d7430820f81
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ nikulog-with-docker.md
@@ -0,0 +1,23 @@
1
+ # ヽ(´・肉・`)ノログとDocker
2
+
3
+ [Infrastructure as Code Casual 札幌 #0](http://infracode-sapporo.connpass.com/event/16476/)で発表した資料
4
+
5
+ ## 作者向け
6
+
7
+ ### 表示
8
+
9
+ rake
10
+
11
+ ### 公開
12
+
13
+ rake publish
14
+
15
+ ## 閲覧者向け
16
+
17
+ ### インストール
18
+
19
+ gem install rabbit-slide-niku-nikulog-with-docker
20
+
21
+ ### 表示
22
+
23
+ rabbit rabbit-slide-niku-nikulog-with-docker.gem
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("YOUR THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: nikulog-with-docker
3
+ base_name: nikulog-with-docker
4
+ tags:
5
+ - docker
6
+ presentation_date: 2015/07/10
7
+ version: 2015.07.10
8
+ licenses: [MIT]
9
+ slideshare_id:
10
+ speaker_deck_id:
11
+ ustream_id:
12
+ vimeo_id:
13
+ youtube_id:
14
+ author:
15
+ markup_language: :markdown
16
+ name: niku
17
+ email: niku@niku.name
18
+ rubygems_user: niku
19
+ slideshare_user:
20
+ speaker_deck_user: niku
Binary file
Binary file
@@ -0,0 +1,364 @@
1
+ # ヽ(´・肉・`)ノログとDocker
2
+
3
+ author
4
+ niku
5
+ date
6
+ 2015/07/10
7
+ allotted-time
8
+ 15m
9
+
10
+ # タイトルずれました
11
+
12
+ ∧_∧         ミ ギャハッハッ ズレてる!ズレてる!
13
+      o/⌒(. ;´∀`)つ
14
+      と_)__つノ  ☆ バンバン
15
+
16
+ ∧_∧
17
+      o/⌒(゜Д゜ )つ
18
+      と_)__つノ
19
+
20
+ ∧_∧
21
+      o/⌒( ゚д゚ )つ
22
+      と_)__つノ
23
+
24
+ # 自己紹介
25
+
26
+ - にく
27
+ - I like
28
+ - コンサドーレ札幌
29
+ - Emacs
30
+ - Ruby
31
+ - Elixir/Phoenix
32
+
33
+ # 自己紹介
34
+
35
+ - github_id :: niku
36
+ - twitter_id :: niku_name
37
+ - web :: http://niku.name/
38
+
39
+ # 今日話すこと
40
+
41
+ - http://niku.name/
42
+ - どうやって表示しているか
43
+ - どうやってコンテンツ更新しているか
44
+
45
+ # どうやって表示しているか
46
+
47
+ 構成 : Debian - Apache - Rack - 独自アプリケーション nwiki - コンテンツ nikulog
48
+
49
+ - Apache Webサーバー
50
+ - Rack サーバーとアプリケーションを繋ぐミドルウェア
51
+ - nwiki git のファイルの内容を web に表示する
52
+ - nikulog コンテンツ(git管理)
53
+
54
+ # つらみ
55
+
56
+ - アプリケーション開発者にとっての趣味サーバー管理
57
+ - サーバー管理者にとっての趣味アプリケーション開発(?)
58
+ - 「これ,どうやるんだったっけ……」
59
+
60
+ # つらみ
61
+
62
+ - 知識としてはある
63
+ - たまにしかやらないので毎回調べるはめになる
64
+ - [apache 設定 やり方] [検索]
65
+
66
+ # つらみ対策
67
+
68
+ プロビジョニングツール
69
+
70
+ - chef / itamae レシピ書けます
71
+ - いいものだ
72
+ - (僕は)サーバー管理の手数を減らしたい
73
+ - 選定や知識のアップグレードの時間を投資し続けることができるだろうか?
74
+
75
+ # つらみ対策
76
+
77
+ わかれていると管理しやすいのでは
78
+
79
+ - ミニマム構成のサーバー部分
80
+ - 穴が少ない
81
+ - 気軽にアップデートでき,動作検証しやすいアプリケーション
82
+
83
+ # つらみ対策
84
+
85
+ - ミニマム構成のサーバー => Docker だけインストールした Debian
86
+ - 気軽にアップデートでき,動作検証しやすいアプリケーション => Dockerイメージ
87
+
88
+ # Dockerイメージを載せるサーバー
89
+
90
+ さくらVPSにDebian8をインストールして,コマンドを手で打ちました
91
+
92
+ $ sudo update-locale LANG=C.UTF-8
93
+ $ sudo sh -c "echo 'deb http://ftp.jp.debian.org/debian jessie-backports main' \
94
+ > /etc/apt/sources.list.d/jessie-backports.list"
95
+ $ sudo apt-get update
96
+ $ sudo apt-get install -y docker.io
97
+
98
+ # Docker
99
+
100
+ 構成 : Debian - Apache - Rack - 独自アプリケーション nwiki - コンテンツ nikulog
101
+
102
+ # Docker
103
+
104
+ 構成 : Debian - Apache - Rack - 独自アプリケーション nwiki - コンテンツ nikulog
105
+ : | |
106
+ Docker : niku/debian | niku/nwiki | niku/nikulog
107
+
108
+ # niku/debian
109
+
110
+ - PackerでOSイメージを自分で作る方法を知っていた
111
+ - Packerを使ってVagrantのBoxを作る方法を一つずつ説明する - ヽ(´・肉・`)ノログ
112
+ - (URL長くて入らなかった)
113
+
114
+ # niku/debian
115
+
116
+ OS イメージ作成,サーバー起動,サーバーログイン
117
+
118
+ % git clone https://github.com/niku/uti.git
119
+ % cd uti/share/lib/server/host/
120
+ uti/share/lib/server/host% packer build jessie64.json
121
+ uti/share/lib/server/host% vagrant up
122
+ uti/share/lib/server/host% vagrant ssh
123
+
124
+ # niku/debian
125
+
126
+ Debianサーバー内でDockerイメージ生成,DockerHubへpush
127
+
128
+ $ uname -a
129
+ Linux packer-virtualbox-iso-1430355314 3.16.0-4-amd64 #1 SMP \
130
+ Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux
131
+ $ cat /etc/debian_version
132
+ 8.0
133
+ $ sudo sh -c 'echo "deb http://ftp.jp.debian.org/debian sid main" > /etc/apt/sources.list.d/sid.list'
134
+ $ sudo apt-get update
135
+ $ sudo apt-get install -y docker.io git debootstrap
136
+ $ git clone https://github.com/docker/docker.git
137
+ $ sudo docker/contrib/mkimage.sh \
138
+ --dir debian-image \
139
+ --tag niku/debian \
140
+ debootstrap --variant=minbase \
141
+ jessie http://ftp.jp.debian.org/debian
142
+ $ cd debian-image
143
+ $ sudo docker login --username="niku" --email="my_email_address@example.com" --password="my_password"
144
+ $ sudo docker push niku/debian
145
+
146
+ # niku/nwiki
147
+
148
+ AutomatedBuild
149
+
150
+ - Github リポジトリを更新
151
+ - Github から Dockerhub へ Webhook でおしらせ
152
+ - Dockerhub が Dockerfile を元に Docker イメージをビルド
153
+
154
+ # niku/nwiki
155
+
156
+ やりかた
157
+
158
+ - Dockerfile のある github リポジトリを Dockerhub に AutomatedBuild で登録
159
+
160
+ ![](./dockerhub-automatedbuild.png){:relative_height="100"}
161
+
162
+ # niku/nwiki
163
+
164
+ やりかた
165
+
166
+ - github の webhook に Dockerhub を指定
167
+
168
+ ![](./github-webhook.png){:relative_height="100"}
169
+
170
+ # niku/nwiki
171
+
172
+ nwiki/Dockerfile
173
+
174
+ FROM niku/debian
175
+ MAINTAINER niku
176
+
177
+ RUN apt-get update && \
178
+ apt-get -y install build-essential \
179
+ ruby2.1-dev \
180
+ cmake \
181
+ pkg-config \
182
+ git \
183
+ apache2 \
184
+ libapache2-mod-passenger && \
185
+ echo "(設定ファイルの内容)" > /etc/apache2/sites-available/nwiki.conf && \
186
+ a2dissite 000-default && \
187
+ a2ensite nwiki && \
188
+ git clone https://github.com/niku/nwiki.git /var/www/nwiki && \
189
+ cd /var/www/nwiki && gem install bundler && bundle install
190
+
191
+ EXPOSE 80 443
192
+ CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
193
+
194
+ # niku/nikulog
195
+
196
+ 同様にAutomatedBuildを利用
197
+
198
+ # niku/nikulog
199
+
200
+ nikulog/Dockerfile
201
+
202
+ FROM niku/nwiki
203
+ MAINTAINER niku
204
+
205
+ RUN git clone https://github.com/niku/nikulog /var/www/nikulog && \
206
+ cd /var/www/nikulog && \
207
+ git checkout config && \
208
+ git checkout master && \
209
+ git fetch && \
210
+ git reset --hard origin/master && \
211
+ echo "(設定ファイルの内容)" > /var/www/nwiki/config.ru && \
212
+ mkdir -p /var/www/nikulog/tmp && \
213
+ touch /var/www/nikulog/tmp/restart.txt
214
+
215
+ # サーバーとイメージ準備完了
216
+
217
+ $ sudo docker pull niku/nikulog:latest
218
+ $ sudo docker run --publish 80:80 --name nikulog -d niku/nikulog
219
+
220
+ で表示できるようになった (^o^)/
221
+
222
+ # niku.name 更新のしくみ
223
+
224
+ 更新は? ∑(゚□゚;)
225
+
226
+ # niku.name 更新のしくみ
227
+
228
+ Docker導入以前
229
+
230
+ git
231
+ |
232
+ | Push
233
+ |
234
+ niku.nameのgit
235
+ |
236
+ | gitのhookスクリプト
237
+ |
238
+ github (niku/nikulog)
239
+
240
+
241
+ # niku.name 更新のしくみ
242
+
243
+ 参考にした
244
+
245
+ - DockerHubのAutomated Buildsをフックして最新のDockerコンテナをデプロイする | SOTA
246
+ - http://deeeet.com/writing/2015/01/08/dockerhub-hook/
247
+
248
+ # niku.name 更新のしくみ
249
+
250
+ Docker導入後
251
+
252
+ git
253
+ |
254
+ | Push
255
+ |
256
+ github (niku/nikulog)
257
+ |
258
+ | githubのWebhook
259
+ |
260
+ Dockerhub (niku/nikulog)
261
+ |
262
+ | DockerimageのAutomatedBuild
263
+ | DockerhubのWebhook
264
+ |
265
+ niku.nameのとあるポート
266
+ |
267
+ | (docker pull して再起動)
268
+ |
269
+ niku/nikulog 最新のdocker
270
+
271
+ # niku.name 更新待受
272
+
273
+ ![](./dockerhub-webhook.png){:relative_height="100"}
274
+
275
+ # niku.name 更新待受
276
+
277
+ Webhook待受サーバー
278
+
279
+ - bketelsen/captainhook
280
+ - https://github.com/bketelsen/captainhook
281
+ - HTTPリクエストがくると設定したjsonのとおりにコマンドを実行する
282
+
283
+ # niku.name 更新待受
284
+
285
+ サーバーに追加でアプリケーションを入れたくない
286
+
287
+ - niku/yobirinex
288
+ - https://github.com/niku/yobirinex
289
+ - 実行環境(ErlangVM)も同梱できるのでtarファイル展開した以下で完結する
290
+
291
+ # niku.name 更新待受
292
+
293
+ ErlangVM同梱HTTPサーバーの作りかた
294
+
295
+ - ElixirでHTTPのやりとりをする
296
+ - http://niku.name/articles/2015/07/03/Elixir%E3%81%A7HTTP%E3%81%AE%E3%82%84%E3%82%8A%E3%81%A8%E3%82%8A%E3%82%92%E3%81%99%E3%82%8B
297
+
298
+ # niku.name 更新待受
299
+
300
+ 更新用設定ファイル
301
+
302
+ % cat configdir/refresh-nikulog.json
303
+ {
304
+ "scripts": [
305
+ {
306
+ "command": "sudo",
307
+ "args": ["docker", "pull", "niku/nikulog:latest"]
308
+ },
309
+ {
310
+ "command": "sudo",
311
+ "args": ["docker", "kill", "nikulog"]
312
+ },
313
+ {
314
+ "command": "sudo",
315
+ "args": ["docker", "rm", "nikulog"]
316
+ },
317
+ {
318
+ "command": "sudo",
319
+ "args": ["docker", "run", "--publish", "80:80", "--name", "nikulog", "-d", "niku/nikulog"]
320
+ }
321
+ ]
322
+ }
323
+
324
+ # niku.name 更新待受
325
+
326
+ git
327
+ |
328
+ | Push
329
+ |
330
+ github (niku/nikulog)
331
+ |
332
+ | githubのWebhook
333
+ |
334
+ Dockerhub
335
+ |
336
+ | DockerimageのAutomatedBuild
337
+ | DockerhubのWebhook
338
+ |
339
+ niku.nameのとあるポート
340
+ |
341
+ | (docker pull して再起動)
342
+ |
343
+ niku/nikulog 最新のdocker
344
+
345
+ # その他/話せなかったこと1
346
+
347
+ - Dockerhub のビルド遅くて数分から十数分待つことがある.急いでないので別に問題にしていない
348
+ - Webhook飛んでこないことある.Dockerhubならwebから手動でビルド,niku.nameならローカルからcurlでリクエストしてる
349
+
350
+ # その他/話せなかったこと2
351
+
352
+ - docker-compose使ってない.Vagrant の docker プロビジョンでまだ対応していない
353
+ - Vagrant から Docker を使ったときの docker exec デバッグのやりかたを書きたかったけど時間なかった
354
+ - PackerでイメージつくるときのDEBCONF_DEBUG=5の有用さ
355
+
356
+ # まとめ
357
+
358
+ - niku.nameの表示
359
+ - Dockerイメージ
360
+ - niku.nameの更新
361
+ - GithubのWebhook
362
+ - DockerHubのAutomatedBuild
363
+ - DockerHubのWebhook
364
+ - 独自Webhook待受サーバー
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-niku-nikulog-with-docker
3
+ version: !ruby/object:Gem::Version
4
+ version: 2015.07.10
5
+ platform: ruby
6
+ authors:
7
+ - niku
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: "[Infrastructure as Code Casual 札幌 #0](http://infracode-sapporo.connpass.com/event/16476/)で発表した資料"
28
+ email:
29
+ - niku@niku.name
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - README.md
36
+ - Rakefile
37
+ - config.yaml
38
+ - dockerhub-automatedbuild.png
39
+ - dockerhub-webhook.png
40
+ - github-webhook.png
41
+ - nikulog-with-docker.md
42
+ - pdf/nikulog-with-docker-nikulog-with-docker.pdf
43
+ - "ヽ(´・肉・`)ノログとDocker.pdf"
44
+ homepage: http://slide.rabbit-shocker.org/authors/niku/nikulog-with-docker/
45
+ licenses:
46
+ - MIT
47
+ metadata: {}
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 2.4.5
65
+ signing_key:
66
+ specification_version: 4
67
+ summary: "ヽ(´・肉・`)ノログとDocker"
68
+ test_files: []