さくらインターネットにおける導入事例
Serverspec
Shuji	Yamada	(山田	修司)	
@uzyexeJul	6,	2016
DevOps勉強会 #3 Serverspecの巻
アジェンダ
• 自己紹介
• Serverspec の特徴とユースケース
• さくらインターネットでの Serverspec 導入事例
• まとめ
SHUJI YAMADA
• さくらインターネット9年目
• エンジニア
• データセンター運用スタッフ
• バックボーンネットワーク運用
• さくらのクラウド運用
• Docker ホスティング Arukas 担当 <- 今ココ
(山田 修司...
5
使ってますか?
6
Serverspec使ってる人



\ 挙手! /
7
手動実行してる人



\ 挙手! /
8
自動実行してる人



\ 挙手! /
• gem install serverspec で一発インストール
• 基本ドキュメントは1ページ
• 一日で覚えられる!
• シンプル!
9
Serverspecの特徴
よくあるワークフロー

その1
×https://jenkins.io/
1111
1212
git push
1313
git push
webhook
1414
git push
webhook
docker run
ステージング環境
1515
git push
webhook
docker run
rake serverspec
ステージング環境
よくあるワークフロー

その2
手動実行
カタカタカタカタカタカタカタカタカタカタカタ
カタカタカタカタカタカタカタカタカタカタカタ
カタ( ^p^)カタカタカタカタカタカタカタ
_(__つ/‾‾‾/カタカタカタカタ
��\/___/カタカタカタカタカタ
カタカタカタカタカタカタカタカ...
よくあるワークフロー

その3
20
テスト書く、

忘れる。

テスト更新する、

忘れる。

爆発する。
21
22
23
WTF
どげんしようか・・・
24
起動時 強制実行
起動スクリプトに

Serverspecの実行を定義
26
2727
git pull
sy stemd
spec files
サーバ起動時の流れ
2828
git pull
rake serverspec
sy stemd
spec files spec!
サーバ起動時の流れ
Settings
1. サーバ起動!
2. git clone で最新の spec ファイルを毎回取得
3. Dockerイメージ化されたServersepecを実行
4. 結果判定
29
具体的にどうやってるか?
30
[Unit]
After=docker.service # 任意のサービスを定義(ここで指定したサービスの実行後に処理が実行される)
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart...
32
[Unit]
After=docker.service # 任意のサービスを定義(ここで指定したサービスの実行後に処理が実行される)
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart...
33
systemd の場合
• 対象サービスの Requires / After 句で起動制御。
起動中断処理
サービス起動中断後の処理は
監視システムに拾わせる
34
Success Failed
Boot
Start Stopped
Monitoring
サーバリストを都度更新するのは手間。
中途半端な状態でサービス投入されると困る。
手動テストは後任者に引き継がれない。
36
強制実行するに至った経緯
大事なことなので二回言います
37
手動テストは
後任者に引き継がれません!
38
• Serverspecは主にDevの人が利用している。
• サーバホスティング事業者 = Opsが多い。
• シェルスクリプトを利用した出荷前検査が多い。
• 目grep & 人力 & クロスチェックになりがち。
39
さくらインターネットの...
• 理想は全品検査(強制自動テスト)
• テストに失敗したサーバは中断
• サーバリスト更新不要
• 三日坊主問題解消!
40
まとめ
宣
伝
違った
違った詳しくはWebで!
Thank you!
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
Upcoming SlideShare
Loading in …5
×

さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)

383 views
414 views

Published on

2016年7月6日、DevOps勉強会が主催する「DevOps勉強会 #3 Serverspecの巻」で、技術本部 ビジネス推進グループ 山田 修司が登壇した際の資料です。

■イベント詳細
http://peatix.com/event/176876/view

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
383
On SlideShare
0
From Embeds
0
Number of Embeds
32
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)

  1. 1. さくらインターネットにおける導入事例 Serverspec Shuji Yamada (山田 修司) @uzyexeJul 6, 2016 DevOps勉強会 #3 Serverspecの巻
  2. 2. アジェンダ • 自己紹介 • Serverspec の特徴とユースケース • さくらインターネットでの Serverspec 導入事例 • まとめ
  3. 3. SHUJI YAMADA • さくらインターネット9年目 • エンジニア • データセンター運用スタッフ • バックボーンネットワーク運用 • さくらのクラウド運用 • Docker ホスティング Arukas 担当 <- 今ココ (山田 修司) @uzyexe
  4. 4. 5 使ってますか?
  5. 5. 6 Serverspec使ってる人
 
 \ 挙手! /
  6. 6. 7 手動実行してる人
 
 \ 挙手! /
  7. 7. 8 自動実行してる人
 
 \ 挙手! /
  8. 8. • gem install serverspec で一発インストール • 基本ドキュメントは1ページ • 一日で覚えられる! • シンプル! 9 Serverspecの特徴
  9. 9. よくあるワークフロー
 その1
  10. 10. ×https://jenkins.io/ 1111
  11. 11. 1212 git push
  12. 12. 1313 git push webhook
  13. 13. 1414 git push webhook docker run ステージング環境
  14. 14. 1515 git push webhook docker run rake serverspec ステージング環境
  15. 15. よくあるワークフロー
 その2
  16. 16. 手動実行
  17. 17. カタカタカタカタカタカタカタカタカタカタカタ カタカタカタカタカタカタカタカタカタカタカタ カタ( ^p^)カタカタカタカタカタカタカタ _(__つ/‾‾‾/カタカタカタカタ ��\/___/カタカタカタカタカタ カタカタカタカタカタカタカタカタカタカタカタカタ カタカタカタカタカタカタカタカタカタカタ
  18. 18. よくあるワークフロー
 その3
  19. 19. 20 テスト書く、
 忘れる。
 テスト更新する、
 忘れる。
 爆発する。
  20. 20. 21
  21. 21. 22
  22. 22. 23 WTF
  23. 23. どげんしようか・・・ 24
  24. 24. 起動時 強制実行
  25. 25. 起動スクリプトに
 Serverspecの実行を定義 26
  26. 26. 2727 git pull sy stemd spec files サーバ起動時の流れ
  27. 27. 2828 git pull rake serverspec sy stemd spec files spec! サーバ起動時の流れ Settings
  28. 28. 1. サーバ起動! 2. git clone で最新の spec ファイルを毎回取得 3. Dockerイメージ化されたServersepecを実行 4. 結果判定 29 具体的にどうやってるか?
  29. 29. 30 [Unit] After=docker.service # 任意のサービスを定義(ここで指定したサービスの実行後に処理が実行される) [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/bin/git clone git@github.com:arukasio/****spec.git /tmp/serverspec ExecStart=/bin/bash -c 'cd /tmp/serverspec; docker run --rm --net="host" --pid="host" --ipc="host" --privileged --volume=“/etc:/etc/:ro“ / --volume=“$(pwd):/serverspec:ro" uzyexe/serverspec rake serverspec' 最新のspecをpull
  30. 30. 32 [Unit] After=docker.service # 任意のサービスを定義(ここで指定したサービスの実行後に処理が実行される) [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=/usr/bin/git clone git@github.com:arukasio/hostspec.git /tmp/serverspec ExecStart=/bin/bash -c 'cd /tmp/serverspec; docker run --rm --net="host" --pid="host" --ipc="host" --privileged --volume=“/etc:/etc:ro“ / --volume=“$(pwd):/serverspec:ro" uzyexe/serverspec rake serverspec' Serverspec実行
  31. 31. 33 systemd の場合 • 対象サービスの Requires / After 句で起動制御。 起動中断処理
  32. 32. サービス起動中断後の処理は 監視システムに拾わせる 34
  33. 33. Success Failed Boot Start Stopped Monitoring
  34. 34. サーバリストを都度更新するのは手間。 中途半端な状態でサービス投入されると困る。 手動テストは後任者に引き継がれない。 36 強制実行するに至った経緯
  35. 35. 大事なことなので二回言います 37
  36. 36. 手動テストは 後任者に引き継がれません! 38
  37. 37. • Serverspecは主にDevの人が利用している。 • サーバホスティング事業者 = Opsが多い。 • シェルスクリプトを利用した出荷前検査が多い。 • 目grep & 人力 & クロスチェックになりがち。 39 さくらインターネットのお話 とある友達の会社
  38. 38. • 理想は全品検査(強制自動テスト) • テストに失敗したサーバは中断 • サーバリスト更新不要 • 三日坊主問題解消! 40 まとめ
  39. 39. 宣 伝
  40. 40. 違った
  41. 41. 違った詳しくはWebで!
  42. 42. Thank you!

×