rabbit-slide-niku-hideo-at-sapporo-chuork01 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rabbit +1 -0
- data/2014yuni1st.jpg +0 -0
- data/README.md +23 -0
- data/Rakefile +9 -0
- data/config.yaml +21 -0
- data/hideo-at-sapporo-chuork01.md +331 -0
- data/pdf/hideo-at-sapporo-chuork01-hideo-at-sapporo-chuork01.pdf +0 -0
- metadata +85 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e8bf108cdb5f445bed857c7700a126a5c174f1b7
|
4
|
+
data.tar.gz: 5cab003f79c64f2411ea7c816d1770feb85055e0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2403eff21a74bfd9d3baeb9944e1e8fbe9e7eefa5ccf4c347c5984749b8d30a309e5645f336d784908c5b65adae4bbef846ffa378dd066c1e717a6c4b2528b2b
|
7
|
+
data.tar.gz: 01d617f9a623425e05e712ef6770474ff4cc1ab2d72b2efa38c83cd716c3596061578bf739849d9f004183fc41208af9a6b52c301cc41ae2f4eefe3288121ffa
|
data/.rabbit
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
hideo-at-chuork01.md
|
data/2014yuni1st.jpg
ADDED
Binary file
|
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# ひでお(仮)
|
2
|
+
|
3
|
+
札幌市中央区Ruby会議01での発表資料
|
4
|
+
|
5
|
+
## 作者向け
|
6
|
+
|
7
|
+
### 表示
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
### 公開
|
12
|
+
|
13
|
+
rake publish
|
14
|
+
|
15
|
+
## 閲覧者向け
|
16
|
+
|
17
|
+
### インストール
|
18
|
+
|
19
|
+
gem install rabbit-slide-niku-hideo-at-sapporo-chuork01
|
20
|
+
|
21
|
+
### 表示
|
22
|
+
|
23
|
+
rabbit rabbit-slide-niku-hideo-at-sapporo-chuork01.gem
|
data/Rakefile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require "rabbit/task/slide"
|
2
|
+
|
3
|
+
# Edit ./config.yaml to customize meta data
|
4
|
+
|
5
|
+
Rabbit::Task::Slide.new do |task|
|
6
|
+
# task.spec.files += Dir.glob("doc/**/*.*")
|
7
|
+
# task.spec.files -= Dir.glob("private/**/*.*")
|
8
|
+
# task.spec.add_runtime_dependency("YOUR THEME")
|
9
|
+
end
|
data/config.yaml
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
id: hideo-at-sapporo-chuork01
|
3
|
+
base_name: hideo-at-sapporo-chuork01
|
4
|
+
tags:
|
5
|
+
- sapporo-chuork01
|
6
|
+
- devops
|
7
|
+
- botti
|
8
|
+
presentation_date:
|
9
|
+
version: 1.0.0
|
10
|
+
licenses: []
|
11
|
+
slideshare_id:
|
12
|
+
speaker_deck_id: hideo-at-sapporo-chuork01
|
13
|
+
ustream_id:
|
14
|
+
vimeo_id:
|
15
|
+
author:
|
16
|
+
markup_language: :markdown
|
17
|
+
name: niku
|
18
|
+
email: niku@niku.name
|
19
|
+
rubygems_user: niku
|
20
|
+
slideshare_user:
|
21
|
+
speaker_deck_user: niku
|
@@ -0,0 +1,331 @@
|
|
1
|
+
# ひでお(仮)
|
2
|
+
|
3
|
+
author
|
4
|
+
ヽ(´・肉・`)ノ
|
5
|
+
|
6
|
+
# こんにちは
|
7
|
+
|
8
|
+
- にくです
|
9
|
+
- コンサドーレ札幌が好きです
|
10
|
+
|
11
|
+
# コンサドーレホーム開幕戦情報
|
12
|
+
|
13
|
+
3/9(日)13:00@札幌ドーム vs モンテディオ山形
|
14
|
+
|
15
|
+
![](2014yuni1st.jpg){:width='400' height='400'}
|
16
|
+
|
17
|
+
# ひでおとは
|
18
|
+
|
19
|
+
- 「ひ」とり
|
20
|
+
- 「で」ぶ(Dev)
|
21
|
+
- 「お」ぷす(Ops)
|
22
|
+
|
23
|
+
# ひとりとは
|
24
|
+
|
25
|
+
- ひとりです
|
26
|
+
- 開発してもひとり
|
27
|
+
- 運用してもひとり
|
28
|
+
|
29
|
+
# DevOpsおさらい
|
30
|
+
|
31
|
+
- "Dev"elopment(開発)
|
32
|
+
- "Op"eration(運用)
|
33
|
+
|
34
|
+
を繋いだ言葉です
|
35
|
+
|
36
|
+
# DevOpsってなんなの
|
37
|
+
|
38
|
+
- 開発「(多少動かなくても)機能をのせていきたい」
|
39
|
+
- 運用「(多少機能が少なくても)ちゃんと動くようにしたい」
|
40
|
+
|
41
|
+
開発と運用はあんまり相性がよくないようにみえる
|
42
|
+
|
43
|
+
# DevもOpsも向かう先は一緒だった
|
44
|
+
|
45
|
+
- 開発「(プロダクトをよりよくするため)(多少動かなくても)機能をのせていきたい」
|
46
|
+
- 運用「(プロダクトをよりよくするため)(多少機能が少なくても)ちゃんと動くようにしたい」
|
47
|
+
|
48
|
+
# プロダクトをよりよくする
|
49
|
+
|
50
|
+
- プロダクト全体の最適化
|
51
|
+
- 全体を良くするにはお互いを理解する
|
52
|
+
|
53
|
+
# DevOpsは壮大なストーリー
|
54
|
+
|
55
|
+
- 大きすぎて今回はうまく話せない
|
56
|
+
|
57
|
+
# ひでお
|
58
|
+
|
59
|
+
- ひとりで開発と運用やるのでお互いは理解できている
|
60
|
+
- プロダクトをよりよくするため
|
61
|
+
- 運用の圧縮
|
62
|
+
- 人が増えたときのノウハウの共有
|
63
|
+
- 記憶や手順書からの脱却
|
64
|
+
|
65
|
+
# ひでお(旅立ち編)
|
66
|
+
|
67
|
+
- CI環境作るためのツール
|
68
|
+
- VirtualBox
|
69
|
+
- Vagrant
|
70
|
+
- Packer
|
71
|
+
- Chef
|
72
|
+
|
73
|
+
# ケース
|
74
|
+
|
75
|
+
- ソースコードをGithubに置ける
|
76
|
+
- ソースコードをGithubに置けない
|
77
|
+
|
78
|
+
# ソースコードをGithubに置ける
|
79
|
+
|
80
|
+
- Github連携サービスを使おう
|
81
|
+
- Travis CI
|
82
|
+
- Circle CI
|
83
|
+
- サービスの面倒をみなくていい
|
84
|
+
- おすすめ
|
85
|
+
|
86
|
+
# ソースコードをGithubに置けない
|
87
|
+
|
88
|
+
- Jenkinsを使おう
|
89
|
+
- 面倒をみないといけない
|
90
|
+
- 運用の手間を減らすために運用対象を増やすの?
|
91
|
+
|
92
|
+
# 既にJenkinsが使える
|
93
|
+
|
94
|
+
- おめでとう!
|
95
|
+
- 使い倒そう
|
96
|
+
|
97
|
+
# サーバーあるけどJenkins入ってない
|
98
|
+
|
99
|
+
$ wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
|
100
|
+
$ sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
|
101
|
+
$ sudo apt-get update
|
102
|
+
$ sudo apt-get install jenkins
|
103
|
+
|
104
|
+
<https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins#InstallingJenkins-Unix%2FLinuxInstallation>
|
105
|
+
|
106
|
+
# サーバーがない
|
107
|
+
|
108
|
+
- 仮想環境に作ろう
|
109
|
+
- 実際のサーバー用意するより作ったり壊したりが簡単
|
110
|
+
- 必要なもの
|
111
|
+
- 自分のPC
|
112
|
+
- 仮想化ソフト
|
113
|
+
- インストールしたことある人に聞ける環境か調べる根性
|
114
|
+
|
115
|
+
# 仮想化ソフト
|
116
|
+
|
117
|
+
- インストーラーでインストールできる
|
118
|
+
- VirtualBox
|
119
|
+
- <https://www.virtualbox.org/>
|
120
|
+
- VMWare Fusion(Mac) / VMWare Player(Windows)
|
121
|
+
- <https://my.vmware.com/jp/>
|
122
|
+
- 個人的にはVirtualBoxを使ってる
|
123
|
+
|
124
|
+
# 仮想化環境を作ろう
|
125
|
+
|
126
|
+
- 仮想化ソフト=いらないPC (ハードウェア)
|
127
|
+
- 中身(OS)をインストールする
|
128
|
+
|
129
|
+
その後Jenkinsを入れる
|
130
|
+
|
131
|
+
# 仮想化環境でのCIできた
|
132
|
+
|
133
|
+
- 簡単にノウハウを配布したい
|
134
|
+
- 記憶や手順書からの脱却
|
135
|
+
- もっともっと
|
136
|
+
|
137
|
+
# Vagrant
|
138
|
+
|
139
|
+
- <http://www.vagrantup.com/>
|
140
|
+
- Vagrantfileに設定を書く
|
141
|
+
- あらかじめ仮想化してある環境(Box)の取得
|
142
|
+
- ↑の環境へ事前処理(Provision)を適用
|
143
|
+
- 仮想環境の起動/終了を簡単なコマンドから
|
144
|
+
- vagrant up (起動) / vagrant halt (終了)
|
145
|
+
|
146
|
+
# Vagrantのインストール
|
147
|
+
|
148
|
+
- <http://www.vagrantup.com/downloads.html>
|
149
|
+
- Windows/OSX/Debian/RHEL
|
150
|
+
- インストーラーで簡単にインストールできる
|
151
|
+
|
152
|
+
# Vagrantfile
|
153
|
+
|
154
|
+
VAGRANTFILE_API_VERSION = "2"
|
155
|
+
|
156
|
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
157
|
+
config.vm.box = "hideo"
|
158
|
+
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
|
159
|
+
config.vm.network "forwarded_port", guest: 8080, host: 18080
|
160
|
+
config.vm.provision "shell", inline: <<__EOS__
|
161
|
+
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
|
162
|
+
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
|
163
|
+
sudo apt-get update
|
164
|
+
sudo apt-get install jenkins -y
|
165
|
+
__EOS__
|
166
|
+
end
|
167
|
+
|
168
|
+
# 帰ったらやってみよう
|
169
|
+
|
170
|
+
$ mkdir hideo
|
171
|
+
$ cd hideo
|
172
|
+
$ curl -o Vagrantfile https://gist.github.com/niku/8867832
|
173
|
+
$ vagrant up
|
174
|
+
# 処理が終わったら,ブラウザから http://localhost:18080/ にアクセスすると
|
175
|
+
# Jenkins が動いている
|
176
|
+
$ vagrant halt
|
177
|
+
|
178
|
+
# Vagrantでノウハウの配布できた
|
179
|
+
|
180
|
+
- けど
|
181
|
+
- 「誰か」があらかじめ作ってくれたBoxを使っている
|
182
|
+
- それエンタープライズでも同じこと言えんの?
|
183
|
+
|
184
|
+
# Vagrantの課題解消
|
185
|
+
|
186
|
+
- Boxも自分で作れるようになりたい
|
187
|
+
- <http://docs.vagrantup.com/v2/boxes/base.html>
|
188
|
+
- もっともっと
|
189
|
+
|
190
|
+
# Packer
|
191
|
+
|
192
|
+
- <http://www.packer.io/>
|
193
|
+
- Template(JSON)に設定を書く
|
194
|
+
- OSのインストールCD/DVDを取得
|
195
|
+
- OSの自動インストール
|
196
|
+
- 環境に処理を適用
|
197
|
+
|
198
|
+
# OSの自動インストール(Debian)
|
199
|
+
|
200
|
+
- Debian => preseed.cfg
|
201
|
+
- <http://www.debian.org/releases/wheezy/mipsel/apbs01.html.ja>
|
202
|
+
|
203
|
+
# OSの自動インストール(Red Hat Enterprise Linux)
|
204
|
+
|
205
|
+
- RHEL => kickstart
|
206
|
+
- <https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/ch-kickstart2.html>
|
207
|
+
|
208
|
+
# OSの自動インストール(Windows)
|
209
|
+
|
210
|
+
- Windows => Autounattend.xml
|
211
|
+
- <http://technet.microsoft.com/ja-jp/library/cc749415%28v=ws.10%29.aspx>
|
212
|
+
|
213
|
+
# Packerのインストール
|
214
|
+
|
215
|
+
- <http://www.packer.io/docs/installation.html>
|
216
|
+
- ファイルを1つダウンロードしてパス通すだけ
|
217
|
+
|
218
|
+
# Packerのテンプレート
|
219
|
+
|
220
|
+
{
|
221
|
+
"builders": [{
|
222
|
+
"type": "virtualbox-iso",
|
223
|
+
"iso_checksum_type": "sha512",
|
224
|
+
"iso_checksum": "2ed8a7ec7ef3abe59b825f7c8d7176322b87341800277c70dce807c5c9ab1c8f18a9e677766d2a12df334024fe27580cf208a305afaf09e96cfe9e762e4f94df",
|
225
|
+
"iso_url": "http://cdimage.debian.org/debian-cd/7.3.0/amd64/iso-cd/debian-7.3.0-amd64-netinst.iso",
|
226
|
+
"ssh_username": "vagrant",
|
227
|
+
"ssh_password": "vagrant",
|
228
|
+
"http_directory": "./",
|
229
|
+
"boot_command": [
|
230
|
+
"<esc>",
|
231
|
+
"<wait>",
|
232
|
+
"install ",
|
233
|
+
"preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg ",
|
234
|
+
"debian-installer=en_US ",
|
235
|
+
"auto ",
|
236
|
+
"locale=en_US ",
|
237
|
+
"kbd-chooser/method=us ",
|
238
|
+
"netcfg/get_hostname={{ .Name }} ",
|
239
|
+
"netcfg/get_domain=vagrantup.com ",
|
240
|
+
"fb=false ",
|
241
|
+
"debconf/frontend=noninteractive ",
|
242
|
+
"console-setup/ask_detect=false ",
|
243
|
+
"console-keymaps-at/keymap=us ",
|
244
|
+
"keyboard-configuration/xkb-keymap=us ",
|
245
|
+
"<enter>"
|
246
|
+
],
|
247
|
+
"shutdown_command": "sudo shutdown -h now",
|
248
|
+
"guest_os_type": "Debian_64"
|
249
|
+
}],
|
250
|
+
"provisioners": [{
|
251
|
+
"type": "shell",
|
252
|
+
"scripts": [
|
253
|
+
"base.sh",
|
254
|
+
"chef.sh",
|
255
|
+
"vagrant.sh"
|
256
|
+
]
|
257
|
+
}],
|
258
|
+
"post-processors": [{
|
259
|
+
"type": "vagrant"
|
260
|
+
}]
|
261
|
+
}
|
262
|
+
|
263
|
+
# Packerのテンプレート作るのつらそう
|
264
|
+
|
265
|
+
- 「Packerを使ってVagrantのBoxを作る方法を一つずつ説明する」という良いコンテンツがある
|
266
|
+
- [packer vagrant] で検索
|
267
|
+
|
268
|
+
# 帰ったらやってみよう
|
269
|
+
|
270
|
+
$ git clone git@github.com:niku/my-packer-and-vagrant-example.git
|
271
|
+
$ cd my-packer-and-vagrant-example
|
272
|
+
$ packer build wheezy64.json
|
273
|
+
|
274
|
+
処理が終わったらDebianベースでVagrantに取り込めるBoxができている
|
275
|
+
|
276
|
+
# Vagrantでやってたこと
|
277
|
+
|
278
|
+
- あらかじめ仮想化してある環境(Box)の取得
|
279
|
+
- ↑の環境へ事前処理(Provision)を適用
|
280
|
+
|
281
|
+
Boxの取得はできた
|
282
|
+
|
283
|
+
# サーバーへの処理をShellでやるとしんどいこと
|
284
|
+
|
285
|
+
- パッケージ化されていないものやソースから最新版を入れてメンテすること
|
286
|
+
- 設定ファイルの内容を書くこと
|
287
|
+
- 何回も動かしても大丈夫なようにすること
|
288
|
+
- 何回動かしても大丈夫にしておけば,毎回動かせる
|
289
|
+
- つまり動かしていいかの迷いがなくなる
|
290
|
+
|
291
|
+
# Chef(Chef Solo)
|
292
|
+
|
293
|
+
- <http://www.getchef.com/>
|
294
|
+
- サーバーが「こうあるべき」というのを書いておく
|
295
|
+
- 「こうじゃないところ」を「こう」にしてくれる
|
296
|
+
- 「こう」になっているところは変わらない
|
297
|
+
|
298
|
+
# 入門Chef Soloを読もう
|
299
|
+
|
300
|
+
- 全部書いてある
|
301
|
+
- <http://tatsu-zine.com/books/chef-solo>
|
302
|
+
|
303
|
+
# 帰ったらやってみよう
|
304
|
+
|
305
|
+
$ git clone git@github.com:niku/server-settings-with-chef-on-debian.git
|
306
|
+
$ cd server-settings-with-chef-on-debian
|
307
|
+
$ bundle install
|
308
|
+
$ mv data_bags/users/niku.json data_bags/users/{自分のid}.json
|
309
|
+
$ emacs data_bags/users/{自分のid}.json
|
310
|
+
# id を自分のidに変更する
|
311
|
+
# key を自分の公開鍵に変更する
|
312
|
+
$ vagrant init
|
313
|
+
$ vagrant up
|
314
|
+
$ vagrant ssh
|
315
|
+
# vagrantでsshログインできることを確認する
|
316
|
+
$ ssh 127.0.0.1 -p 2222
|
317
|
+
# 自分のidでログインできないことを確認する
|
318
|
+
$ bundle exec knife solo prepare 127.0.0.1 --ssh-user vagrant --ssh-password vagrant --ssh-port 2222
|
319
|
+
$ bundle exec knife solo cook 127.0.0.1 nodes/default.json --ssh-user vagrant --ssh-password vagrant --ssh-port 2222
|
320
|
+
# password "vagrant" を何回か打つ
|
321
|
+
$ ssh 127.0.0.1 -p 2222
|
322
|
+
# 自分のidでログインできるようになっている
|
323
|
+
|
324
|
+
# おれたちの活躍はこれからだ
|
325
|
+
|
326
|
+
- VirtualBox 仮想化ツール
|
327
|
+
- Vagrant 仮想環境をBoxとProvisionから構築するツール
|
328
|
+
- Packer Boxを作るツール
|
329
|
+
- Chef Provision
|
330
|
+
|
331
|
+
にく先生の次回作にご期待ください
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-niku-hideo-at-sapporo-chuork01
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- niku
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-07 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: |
|
28
|
+
札幌市中央区Ruby会議01での発表資料
|
29
|
+
|
30
|
+
## 作者向け
|
31
|
+
|
32
|
+
### 表示
|
33
|
+
|
34
|
+
rake
|
35
|
+
|
36
|
+
### 公開
|
37
|
+
|
38
|
+
rake publish
|
39
|
+
|
40
|
+
## 閲覧者向け
|
41
|
+
|
42
|
+
### インストール
|
43
|
+
|
44
|
+
gem install rabbit-slide-niku-hideo-at-sapporo-chuork01
|
45
|
+
|
46
|
+
### 表示
|
47
|
+
|
48
|
+
rabbit rabbit-slide-niku-hideo-at-sapporo-chuork01.gem
|
49
|
+
email:
|
50
|
+
- niku@niku.name
|
51
|
+
executables: []
|
52
|
+
extensions: []
|
53
|
+
extra_rdoc_files: []
|
54
|
+
files:
|
55
|
+
- ".rabbit"
|
56
|
+
- 2014yuni1st.jpg
|
57
|
+
- README.md
|
58
|
+
- Rakefile
|
59
|
+
- config.yaml
|
60
|
+
- hideo-at-sapporo-chuork01.md
|
61
|
+
- pdf/hideo-at-sapporo-chuork01-hideo-at-sapporo-chuork01.pdf
|
62
|
+
homepage: http://slide.rabbit-shocker.org/authors/niku/hideo-at-sapporo-chuork01/
|
63
|
+
licenses: []
|
64
|
+
metadata: {}
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
requirements: []
|
80
|
+
rubyforge_project:
|
81
|
+
rubygems_version: 2.2.0
|
82
|
+
signing_key:
|
83
|
+
specification_version: 4
|
84
|
+
summary: "# ひでお(仮)"
|
85
|
+
test_files: []
|