Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
マニアックツール紹介
2015年11月23日 第2回関西ITインフラ系勉強会
@sawanoboly(HiganWorks LLC, Opsrock LLC)
• Knife-Zero(構成管理)
• InSpec (テストスイート)
HiganWorks, Opsrockについて
2
アプリケーション/サービスのための
プラットフォーム構築や運用の自動化を
テーマに活動
ChefやServerspec等、インフラコードを取
り扱うソリューションを提供
3
著書など
関わった書籍
(最近の)担当範囲
•アプリケーションは誰かが用意
• それが動作するプラットフォーム全般
• エンドユーザへの配信関係全般
• あとリポジトリとかCIとかデプロイ
•環境チョイスには節操なし
4
今日の話
•Knife-Zero (Chefのプラグイン)
•自分で作ってるから
•InSpec
•新しいから
5
構成管理ツール
Knife-Zero

(Chefのプラグイン)
(一応)Chefについて
7
(一応)Chefについて
•米Chef Incが開発している構成管理ツール。
•(主に)OS管理権限があるサーバの情報収集。
•Recipeによる定義ベースの構成変更。
7
(一応)Chefについて
•米Chef Incが開発している構成管理ツール。
•(主に)OS管理権限があるサーバの情報収集。
•Recipeによる定義ベースの構成変更。
•派生プロジェクトがとても多い。
•最近はエンプラ・IT部門向けに強化中・...
Knife-Zeroの話のまえに
前提知識として
Chefをつかう環境の話を
なんかしらサーバがあります
9
Server
なんかしらサーバがあります
9
Server
原初のChef
なんかしらサーバがあります
9
Server
原初のChef
ローカルを変更
Client/ServerとSoloへ
10
Server
Client/ServerとSoloへ
10
Server
Chef-Server
Client/ServerとSoloへ
10
Server
Chef-Server
情報集約
Client/ServerとSoloへ
10
Server
Chef-Client
Chef-Server
情報集約
Client/ServerとSoloへ
10
Server
Chef-Client
Chef-Server
情報集約
• 情報収集と提供
• 構成の変更
Client/ServerとSoloへ
10
Server
Chef-Client
Chef-Server
俺らの端末
情報集約
• 情報収集と提供
• 構成の変更
Client/ServerとSoloへ
10
Server
Chef-Client
Chef-Server
俺らの端末
情報集約
一括で管理
• 情報収集と提供
• 構成の変更
Client/ServerとSoloへ
10
Server
Chef-Client
Chef-Server
Server
原初のChef
俺らの端末
情報集約
一括で管理
• 情報収集と提供
• 構成の変更
Client/ServerとSoloへ
10
Server
Chef-Client
Chef-Server
Server
原初のChef
俺らの端末
情報集約
一括で管理
• 情報収集と提供
• 構成の変更
Chef-Solo
Remote(Solo) => Knife-Solo
11
Server
Chef-Client
Chef-Server
Server
Chef-Solo
俺らの端末
Remote(Solo) => Knife-Solo
11
Server
Chef-Client
Chef-Server
Server
Chef-Solo
俺らの端末
リモートで
Soloしよう
Remote(Solo) => Knife-Solo
11
Server
Chef-Client
Chef-Server
Server
Chef-Solo
俺らの端末
Knife-
Solo
リモートで
Soloしよう
Remote(Solo) => Knife-Solo
11
Server
Chef-Client
Chef-Server
Server
Chef-Solo
俺らの端末
Knife-
Solo
リモートで
Soloしよう
ファイル転送して
Che...
Knife-Soloなら
知ってる人?
14
わりと近くにいらっしゃる
話をもどします
Server
C/S環境にローカルモード追加
16
Server
Chef-Client
Chef-Server
Server
C/S環境にローカルモード追加
16
Server
Chef-Client
Chef-Server
Chef-Zero
Server
C/S環境にローカルモード追加
16
Server
Chef-Client
Chef-Server
Chef-Zero
カレントディレクトリ(等)を
使用する簡易Chef-Server。
Client実行中だけ起動。
Server
C/S環境にローカルモード追加
16
Server
Chef-Client
Chef-Server
Chef-Zero
カレントディレクトリ(等)を
使用する簡易Chef-Server。
Client実行中だけ起動。
Chef-S...
あ、TCPじゃん。
インフラ系の方ならば
身に覚えがあるでしょうが
18
インフラ系の方ならば
身に覚えがあるでしょうが
18
インフラ系の方ならば
身に覚えがあるでしょうが
•TCP Listenしたら、

どこまでもトンネルを引っ張っられる。
18
Server
Chef-Zeroを手元で起動してみた
19
Server
Chef-Client
Chef-Server 俺らの端末
Server
Chef-Zeroを手元で起動してみた
19
Server
Chef-Client
Chef-Server 俺らの端末
Chef-Zero
Server
Chef-Zeroを手元で起動してみた
19
Server
Chef-Client
Chef-Server 俺らの端末
Chef-Zero
SSHでForward
Server
Chef-Zeroを手元で起動してみた
19
Server
Chef-Client
Chef-Server 俺らの端末
Chef-Zero
SSHでForward
TCP/IP+HTTPで通信
Server
Chef-Zeroを手元で起動してみた
19
Server
Chef-Client
Chef-Server 俺らの端末
Chef-Zero
SSHでForward
Knife-Zero
TCP/IP+HTTPで通信
以上をふまえて
Knife-Zeroの話をします
つかいかた
21
つかいかた
•bootstrap
21
つかいかた
•bootstrap
•対象のサーバ(以下Node)にChefをインストール
21
つかいかた
•bootstrap
•対象のサーバ(以下Node)にChefをインストール
•情報を収集してローカルに保存
21
つかいかた
•bootstrap
•対象のサーバ(以下Node)にChefをインストール
•情報を収集してローカルに保存
•converge
21
つかいかた
•bootstrap
•対象のサーバ(以下Node)にChefをインストール
•情報を収集してローカルに保存
•converge
•Chefを実行してくる
21
つかいかた
•bootstrap
•対象のサーバ(以下Node)にChefをインストール
•情報を収集してローカルに保存
•converge
•Chefを実行してくる
•リモートのChefバージョンを上げ下げする
21
Knife-Zeroでよかったこと
22
Knife-Zeroでよかったこと
•SSH x 管理権限で触れるサーバの台帳(構成管
理)が作れる&コードで管理をしやすくなった。
22
Knife-Zeroでよかったこと
•SSH x 管理権限で触れるサーバの台帳(構成管
理)が作れる&コードで管理をしやすくなった。
•C/S環境向けのレシピが使いやすくなった。
22
Knife-Zeroでよかったこと
•SSH x 管理権限で触れるサーバの台帳(構成管
理)が作れる&コードで管理をしやすくなった。
•C/S環境向けのレシピが使いやすくなった。
•ファイルの転送は必要分だけなので、わりと早
い。
22
Knife-Zeroでよかったこと
•SSH x 管理権限で触れるサーバの台帳(構成管
理)が作れる&コードで管理をしやすくなった。
•C/S環境向けのレシピが使いやすくなった。
•ファイルの転送は必要分だけなので、わりと早
い。
•(リソース...
詳しくはドキュメントへ
•knife-zero.github.io
•2カ国語サポート (日本語・英語風言語)
•Webの紹介記事から全然リンクされな
いので検索に出てきづらい。

(君らなんで公式あんのにリンク貼らん
のさ…)
•Chefの機...
折角なので
開発サイドの話をします
中の人なので言っとくか①
のStargazers
わりと縁もゆかりもないところから☆
27
Lviv, Ukraine
Halifax, Canada
Munich, Germany
Darmstadt
Devon, UK
Maine
Bristol
Seattle, Wa
Russia
Se...
28
28
28
どこで知ったんだろう…
『まあまあ便利』
ってことなんでしょう、きっと。
『まあまあ便利』
ってことなんでしょう、きっと。
>> 地味に開発のモチベに。
中の人なので言っとくか②
自分がそこまで使い込んでない
31
自分がそこまで使い込んでない
•生のOSに対して何かするという機会が減ってきて
いるので。。。(PaaSとかがラクで。)
31
自分がそこまで使い込んでない
•生のOSに対して何かするという機会が減ってきて
いるので。。。(PaaSとかがラクで。)
•『ここはChefかなー』な時に登場。
31
自分がそこまで使い込んでない
•生のOSに対して何かするという機会が減ってきて
いるので。。。(PaaSとかがラクで。)
•『ここはChefかなー』な時に登場。
•※ただ、自分でも意識しないで使っていること
がある。
31
自分がそこまで使い込んでない
•生のOSに対して何かするという機会が減ってきて
いるので。。。(PaaSとかがラクで。)
•『ここはChefかなー』な時に登場。
•※ただ、自分でも意識しないで使っていること
がある。
•手作業も普通に併用するよ...
自分がそこまで使い込んでない
•生のOSに対して何かするという機会が減ってきて
いるので。。。(PaaSとかがラクで。)
•『ここはChefかなー』な時に登場。
•※ただ、自分でも意識しないで使っていること
がある。
•手作業も普通に併用するよ...
中の人なので言っとくか③
サポートが手厚い
ユーザのフィードバックが頼り(※使い込んでないので)
34
ユーザのフィードバックが頼り(※使い込んでないので)
•Issueの大半は異国から。。。国内向けはこっち
から打って出ることが多い。
34
ユーザのフィードバックが頼り(※使い込んでないので)
•Issueの大半は異国から。。。国内向けはこっち
から打って出ることが多い。
•例:ツイートすると機能追加/バグ修正される。
34
ユーザのフィードバックが頼り(※使い込んでないので)
•Issueの大半は異国から。。。国内向けはこっち
から打って出ることが多い。
•例:ツイートすると機能追加/バグ修正される。
•独り言に絡んでいく。
34
ユーザのフィードバックが頼り(※使い込んでないので)
•Issueの大半は異国から。。。国内向けはこっち
から打って出ることが多い。
•例:ツイートすると機能追加/バグ修正される。
•独り言に絡んでいく。
•この手法を個人的に『みなしフィードバ...
ユーザのフィードバックが頼り(※使い込んでないので)
•Issueの大半は異国から。。。国内向けはこっち
から打って出ることが多い。
•例:ツイートすると機能追加/バグ修正される。
•独り言に絡んでいく。
•この手法を個人的に『みなしフィードバ...
プラグインでやるより
本体に追加し方がいいんじゃ?
って要望もくるじゃない。
本体側に押し付ける方針です
Chefの更新履歴より
中の人なので言っとくか④
常に最新のChefで動く
Chef(masterブランチ)あるある
39
Chef(masterブランチ)あるある
•後方非互換の修正
•コード量が多いのでリファクタリングでバグる
39
Chef(masterブランチ)あるある
•後方非互換の修正
•コード量が多いのでリファクタリングでバグる
•プラグイン壊れることもまあ多い
•『Chef更新したらKnife-Zero動かないんだけ
どー』 => 『えーどこよ。。』が何回もあっ...
Chefの更新全部で結合テストしてます
•フィードをIFTTTで監視
•=> コミット単位でCircleCI
•そして副作用が。
40
副作用
Chefの後方非互換発生(※)を
世界最速で知ってしまううちの
一人に
※一部の機能に限ります
良くも悪くも
知ってしまい修正する羽目に
中の人なので言っとくか⑤
※ラスト
対象がWindowsの場合
どーすんの?
=> 真面目に対応する気は
無かったが
45
•Windows => WindowsのSSHは目立った問題なし。
•Others => Windowsで入出力がまだ微妙。
•ポートフォワードはちゃんと動いてる。
45
•Windows => WindowsのSSHは目立った問題なし。
•Others => Windowsで入出力がまだ微妙。
•ポートフォワードはちゃんと動いてる。
45
•Windows => WindowsのSSHは目立った問題なし。
•Others => Windowsで入出力がまだ微妙。
•ポートフォワードはちゃんと動いてる。
45
※OpenSSHにこだわらなければ多分使える。
Knife-Zeroの話は以上
新しめのテストスイート
InSpec
InSpecって?
•米Chef Incがリリースしたテストスイート

(今はバージョン0.9.x)
•Serverspec(RSpec)的な記述をベースに、監査
向けのルールを記述したりシェアしたりしやす
くした。
48
自前のテスト、サンプルコード (1)
•これは…!?
49
1 describe package('telnetd') do
2 it { should_not be_installed }
3 end
4
5 describe inetd_c...
自前のテスト、サンプルコード (1)
•これは…!?
49
1 describe package('telnetd') do
2 it { should_not be_installed }
3 end
4
5 describe inetd_c...
サンプル(1)を実行
50
$ inspec exec spec/telnet_spec.rb --backend ssh --host=myhost 

—user=root --key-files ~/.ssh/id_rsa --forma...
自前のテスト、サンプルコード (2)
51
1 only_if do
2 command('sshd').exist?
3 end
4
5 rule "sshd-11" do
6 impact 1.0
7 title "Server: Set ...
自前のテスト、サンプルコード (2)
51
1 only_if do
2 command('sshd').exist?
3 end
4
5 rule "sshd-11" do
6 impact 1.0
7 title "Server: Set ...
自前のテスト、サンプルコード (2)
51
1 only_if do
2 command('sshd').exist?
3 end
4
5 rule "sshd-11" do
6 impact 1.0
7 title "Server: Set ...
JSONフォーマット出力
52
$ inspec exec {中略} --format=json | jq .
{
"version": "3.4.1",
"examples": [
- - 省略 - -
],
"summary": {
"du...
監査向けとは?
53
監査向けとは?
•Specにスコアを付けて影響度を合算、みたいな
結果を出せる。
53
監査向けとは?
•Specにスコアを付けて影響度を合算、みたいな
結果を出せる。
•単品でServerspecのような利用法もできるが、

Chef Compliance(※)などの定期実行&集約す
る使い方をしてね。ということらしい。
53
監査向けとは?
•Specにスコアを付けて影響度を合算、みたいな
結果を出せる。
•単品でServerspecのような利用法もできるが、

Chef Compliance(※)などの定期実行&集約す
る使い方をしてね。ということらしい。
53※...
監査向けとは?
•Specにスコアを付けて影響度を合算、みたいな
結果を出せる。
•単品でServerspecのような利用法もできるが、

Chef Compliance(※)などの定期実行&集約す
る使い方をしてね。ということらしい。
•ただ...
シェア済の監査ポリシー例
54
シェア済の監査ポリシー例
54
シェア済の監査ポリシー例
•CISのセキュリティベンチマーク
•CIS Ubuntu 14.04 LTS Server Benchmark
Level 1 & 2
54
シェア済の監査ポリシー例
•CISのセキュリティベンチマーク
•CIS Ubuntu 14.04 LTS Server Benchmark
Level 1 & 2
•ほか、Serverspecでは`細かすぎ`とされるリソー
スもプリセットで用意...
Serverspecと(独自視点で)比較
55
Serverspecと(独自視点で)比較
•Serverspec
55
Serverspecと(独自視点で)比較
•Serverspec
•対象はRake, spec_helperなどで調整。
55
Serverspecと(独自視点で)比較
•Serverspec
•対象はRake, spec_helperなどで調整。
•RSpecだと思えばうまくいく。
55
Serverspecと(独自視点で)比較
•Serverspec
•対象はRake, spec_helperなどで調整。
•RSpecだと思えばうまくいく。
•InSpec
55
Serverspecと(独自視点で)比較
•Serverspec
•対象はRake, spec_helperなどで調整。
•RSpecだと思えばうまくいく。
•InSpec
•対象をCLIのオプションでも指定できる。
55
Serverspecと(独自視点で)比較
•Serverspec
•対象はRake, spec_helperなどで調整。
•RSpecだと思えばうまくいく。
•InSpec
•対象をCLIのオプションでも指定できる。
•素のRSpecだと思うと...
Serverspecと(独自視点で)比較
•Serverspec
•対象はRake, spec_helperなどで調整。
•RSpecだと思えばうまくいく。
•InSpec
•対象をCLIのオプションでも指定できる。
•素のRSpecだと思うと...
Serverspecと(独自視点で)比較
•Serverspec
•対象はRake, spec_helperなどで調整。
•RSpecだと思えばうまくいく。
•InSpec
•対象をCLIのオプションでも指定できる。
•素のRSpecだと思うと...
Serverspecと(独自視点で)比較
•Serverspec
•対象はRake, spec_helperなどで調整。
•RSpecだと思えばうまくいく。
•InSpec
•対象をCLIのオプションでも指定できる。
•素のRSpecだと思うと...
`inspec shell`便利かも
56
$ inspec shell --backend ssh --host=以下略
Welcome to the interactive Inspec Shell
> usage
You can use ...
`inspec shell`便利かも
56
$ inspec shell --backend ssh --host=以下略
Welcome to the interactive Inspec Shell
> usage
You can use ...
`inspec shell`便利かも
56
$ inspec shell --backend ssh --host=以下略
Welcome to the interactive Inspec Shell
> usage
You can use ...
InSpecの歩み (1)
57
InSpecの歩み (1)
•セキュリティ監査SaaSベンチャーが誕生
(Vulcanosec)。
57
InSpecの歩み (1)
•セキュリティ監査SaaSベンチャーが誕生
(Vulcanosec)。
•Serverspecのカスタムルール集だった模様。
57
InSpecの歩み (1)
•セキュリティ監査SaaSベンチャーが誕生
(Vulcanosec)。
•Serverspecのカスタムルール集だった模様。
•自社サービス向けの調整で、Specinfraをベース
にした vulcanosec とい...
InSpecの歩み (1)
•セキュリティ監査SaaSベンチャーが誕生
(Vulcanosec)。
•Serverspecのカスタムルール集だった模様。
•自社サービス向けの調整で、Specinfraをベース
にした vulcanosec とい...
InSpecの歩み (2)
58
InSpecの歩み (2)
•Chefが買う。
58
InSpecの歩み (2)
•Chefが買う。
•方向性と求める汎用性のギャップがあったようで、
Specinfraを卒業。

Test-Kitchenから派生して作ったTrainベースに変
更。
58
InSpecの歩み (2)
•Chefが買う。
•方向性と求める汎用性のギャップがあったようで、
Specinfraを卒業。

Test-Kitchenから派生して作ったTrainベースに変
更。
•InSpecになる。
58
InSpecの歩み (2)
•Chefが買う。
•方向性と求める汎用性のギャップがあったようで、
Specinfraを卒業。

Test-Kitchenから派生して作ったTrainベースに変
更。
•InSpecになる。
•『Serverspe...
関連モジュールの比較表
59
-
Serverspec
(&Specinfra)
InSpec
(&Train)
リソース定義 Serverspec
InSpec
ディストリビューション
差分吸収
Specinfra
ローカルorリモート
接続...
まとめっぽい分類
60
まとめっぽい分類
•Serverspec
•自分がやりたいことを確かめる目的。
60
まとめっぽい分類
•Serverspec
•自分がやりたいことを確かめる目的。
•InSpec
•何となく不安、をセキュリティ方面から広く見
る目的。
60
Chef Compliance(旧Vulcanosec)
•25ノードまでは特に断りなく使用OK。
•超えるようなら連絡(現状は任意)
•Chefが買った時に

通知機能とかは

一旦無しになってる。
61
InSpecは以上
お知らせ
•今日行ったようなツールを
•使ってみてフィードバック
•質問したい
•デモが見たい
63
等、お気軽にご相談OKです。
マニアックツール紹介
2015年11月23日 第2回関西ITインフラ系勉強会
@sawanoboly(HiganWorks LLC, Opsrock LLC)
• Knife-Zero(構成管理)
• InSpec (テストスイート)
終
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
Upcoming SlideShare
Loading in …5
×

マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec

3,907 views

Published on

第2回関西ITインフラ系勉強会のセッション資料。

Published in: Technology
  • Be the first to comment

マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec

  1. 1. マニアックツール紹介 2015年11月23日 第2回関西ITインフラ系勉強会 @sawanoboly(HiganWorks LLC, Opsrock LLC) • Knife-Zero(構成管理) • InSpec (テストスイート)
  2. 2. HiganWorks, Opsrockについて 2 アプリケーション/サービスのための プラットフォーム構築や運用の自動化を テーマに活動 ChefやServerspec等、インフラコードを取 り扱うソリューションを提供
  3. 3. 3 著書など 関わった書籍
  4. 4. (最近の)担当範囲 •アプリケーションは誰かが用意 • それが動作するプラットフォーム全般 • エンドユーザへの配信関係全般 • あとリポジトリとかCIとかデプロイ •環境チョイスには節操なし 4
  5. 5. 今日の話 •Knife-Zero (Chefのプラグイン) •自分で作ってるから •InSpec •新しいから 5
  6. 6. 構成管理ツール Knife-Zero
 (Chefのプラグイン)
  7. 7. (一応)Chefについて 7
  8. 8. (一応)Chefについて •米Chef Incが開発している構成管理ツール。 •(主に)OS管理権限があるサーバの情報収集。 •Recipeによる定義ベースの構成変更。 7
  9. 9. (一応)Chefについて •米Chef Incが開発している構成管理ツール。 •(主に)OS管理権限があるサーバの情報収集。 •Recipeによる定義ベースの構成変更。 •派生プロジェクトがとても多い。 •最近はエンプラ・IT部門向けに強化中・・? 7
  10. 10. Knife-Zeroの話のまえに 前提知識として Chefをつかう環境の話を
  11. 11. なんかしらサーバがあります 9 Server
  12. 12. なんかしらサーバがあります 9 Server 原初のChef
  13. 13. なんかしらサーバがあります 9 Server 原初のChef ローカルを変更
  14. 14. Client/ServerとSoloへ 10 Server
  15. 15. Client/ServerとSoloへ 10 Server Chef-Server
  16. 16. Client/ServerとSoloへ 10 Server Chef-Server 情報集約
  17. 17. Client/ServerとSoloへ 10 Server Chef-Client Chef-Server 情報集約
  18. 18. Client/ServerとSoloへ 10 Server Chef-Client Chef-Server 情報集約 • 情報収集と提供 • 構成の変更
  19. 19. Client/ServerとSoloへ 10 Server Chef-Client Chef-Server 俺らの端末 情報集約 • 情報収集と提供 • 構成の変更
  20. 20. Client/ServerとSoloへ 10 Server Chef-Client Chef-Server 俺らの端末 情報集約 一括で管理 • 情報収集と提供 • 構成の変更
  21. 21. Client/ServerとSoloへ 10 Server Chef-Client Chef-Server Server 原初のChef 俺らの端末 情報集約 一括で管理 • 情報収集と提供 • 構成の変更
  22. 22. Client/ServerとSoloへ 10 Server Chef-Client Chef-Server Server 原初のChef 俺らの端末 情報集約 一括で管理 • 情報収集と提供 • 構成の変更 Chef-Solo
  23. 23. Remote(Solo) => Knife-Solo 11 Server Chef-Client Chef-Server Server Chef-Solo 俺らの端末
  24. 24. Remote(Solo) => Knife-Solo 11 Server Chef-Client Chef-Server Server Chef-Solo 俺らの端末 リモートで Soloしよう
  25. 25. Remote(Solo) => Knife-Solo 11 Server Chef-Client Chef-Server Server Chef-Solo 俺らの端末 Knife- Solo リモートで Soloしよう
  26. 26. Remote(Solo) => Knife-Solo 11 Server Chef-Client Chef-Server Server Chef-Solo 俺らの端末 Knife- Solo リモートで Soloしよう ファイル転送して Chef-Soloを実行 ※プロビジョン特化
  27. 27. Knife-Soloなら 知ってる人?
  28. 28. 14 わりと近くにいらっしゃる
  29. 29. 話をもどします
  30. 30. Server C/S環境にローカルモード追加 16 Server Chef-Client Chef-Server
  31. 31. Server C/S環境にローカルモード追加 16 Server Chef-Client Chef-Server Chef-Zero
  32. 32. Server C/S環境にローカルモード追加 16 Server Chef-Client Chef-Server Chef-Zero カレントディレクトリ(等)を 使用する簡易Chef-Server。 Client実行中だけ起動。
  33. 33. Server C/S環境にローカルモード追加 16 Server Chef-Client Chef-Server Chef-Zero カレントディレクトリ(等)を 使用する簡易Chef-Server。 Client実行中だけ起動。 Chef-Serverと同じように TCP/IP+HTTPで通信
  34. 34. あ、TCPじゃん。
  35. 35. インフラ系の方ならば 身に覚えがあるでしょうが 18
  36. 36. インフラ系の方ならば 身に覚えがあるでしょうが 18
  37. 37. インフラ系の方ならば 身に覚えがあるでしょうが •TCP Listenしたら、
 どこまでもトンネルを引っ張っられる。 18
  38. 38. Server Chef-Zeroを手元で起動してみた 19 Server Chef-Client Chef-Server 俺らの端末
  39. 39. Server Chef-Zeroを手元で起動してみた 19 Server Chef-Client Chef-Server 俺らの端末 Chef-Zero
  40. 40. Server Chef-Zeroを手元で起動してみた 19 Server Chef-Client Chef-Server 俺らの端末 Chef-Zero SSHでForward
  41. 41. Server Chef-Zeroを手元で起動してみた 19 Server Chef-Client Chef-Server 俺らの端末 Chef-Zero SSHでForward TCP/IP+HTTPで通信
  42. 42. Server Chef-Zeroを手元で起動してみた 19 Server Chef-Client Chef-Server 俺らの端末 Chef-Zero SSHでForward Knife-Zero TCP/IP+HTTPで通信
  43. 43. 以上をふまえて Knife-Zeroの話をします
  44. 44. つかいかた 21
  45. 45. つかいかた •bootstrap 21
  46. 46. つかいかた •bootstrap •対象のサーバ(以下Node)にChefをインストール 21
  47. 47. つかいかた •bootstrap •対象のサーバ(以下Node)にChefをインストール •情報を収集してローカルに保存 21
  48. 48. つかいかた •bootstrap •対象のサーバ(以下Node)にChefをインストール •情報を収集してローカルに保存 •converge 21
  49. 49. つかいかた •bootstrap •対象のサーバ(以下Node)にChefをインストール •情報を収集してローカルに保存 •converge •Chefを実行してくる 21
  50. 50. つかいかた •bootstrap •対象のサーバ(以下Node)にChefをインストール •情報を収集してローカルに保存 •converge •Chefを実行してくる •リモートのChefバージョンを上げ下げする 21
  51. 51. Knife-Zeroでよかったこと 22
  52. 52. Knife-Zeroでよかったこと •SSH x 管理権限で触れるサーバの台帳(構成管 理)が作れる&コードで管理をしやすくなった。 22
  53. 53. Knife-Zeroでよかったこと •SSH x 管理権限で触れるサーバの台帳(構成管 理)が作れる&コードで管理をしやすくなった。 •C/S環境向けのレシピが使いやすくなった。 22
  54. 54. Knife-Zeroでよかったこと •SSH x 管理権限で触れるサーバの台帳(構成管 理)が作れる&コードで管理をしやすくなった。 •C/S環境向けのレシピが使いやすくなった。 •ファイルの転送は必要分だけなので、わりと早 い。 22
  55. 55. Knife-Zeroでよかったこと •SSH x 管理権限で触れるサーバの台帳(構成管 理)が作れる&コードで管理をしやすくなった。 •C/S環境向けのレシピが使いやすくなった。 •ファイルの転送は必要分だけなので、わりと早 い。 •(リソースが許す限り)並行に変更や情報収集が 実行できる。 22
  56. 56. 詳しくはドキュメントへ •knife-zero.github.io •2カ国語サポート (日本語・英語風言語) •Webの紹介記事から全然リンクされな いので検索に出てきづらい。
 (君らなんで公式あんのにリンク貼らん のさ…) •Chefの機能としては公式の内容をほぼサ ポートしてるのでそっちを見て。 23
  57. 57. 折角なので 開発サイドの話をします
  58. 58. 中の人なので言っとくか①
  59. 59. のStargazers
  60. 60. わりと縁もゆかりもないところから☆ 27 Lviv, Ukraine Halifax, Canada Munich, Germany Darmstadt Devon, UK Maine Bristol Seattle, Wa Russia Seattle, WA Melbourne, Australia Berlin Waffles Seattle, WA Toronto, ON, Canada Gent Silver Spring, MD Italy Hopewell, NJ Hamburg, Germany Porto Porto and Madeira, Portugal Rochester, NY Berkeley, CA Altanta, GA なんか国外多いし
  61. 61. 28
  62. 62. 28
  63. 63. 28 どこで知ったんだろう…
  64. 64. 『まあまあ便利』 ってことなんでしょう、きっと。
  65. 65. 『まあまあ便利』 ってことなんでしょう、きっと。 >> 地味に開発のモチベに。
  66. 66. 中の人なので言っとくか②
  67. 67. 自分がそこまで使い込んでない 31
  68. 68. 自分がそこまで使い込んでない •生のOSに対して何かするという機会が減ってきて いるので。。。(PaaSとかがラクで。) 31
  69. 69. 自分がそこまで使い込んでない •生のOSに対して何かするという機会が減ってきて いるので。。。(PaaSとかがラクで。) •『ここはChefかなー』な時に登場。 31
  70. 70. 自分がそこまで使い込んでない •生のOSに対して何かするという機会が減ってきて いるので。。。(PaaSとかがラクで。) •『ここはChefかなー』な時に登場。 •※ただ、自分でも意識しないで使っていること がある。 31
  71. 71. 自分がそこまで使い込んでない •生のOSに対して何かするという機会が減ってきて いるので。。。(PaaSとかがラクで。) •『ここはChefかなー』な時に登場。 •※ただ、自分でも意識しないで使っていること がある。 •手作業も普通に併用するよ。 31
  72. 72. 自分がそこまで使い込んでない •生のOSに対して何かするという機会が減ってきて いるので。。。(PaaSとかがラクで。) •『ここはChefかなー』な時に登場。 •※ただ、自分でも意識しないで使っていること がある。 •手作業も普通に併用するよ。 •このへん、次の話につながります。 31
  73. 73. 中の人なので言っとくか③
  74. 74. サポートが手厚い
  75. 75. ユーザのフィードバックが頼り(※使い込んでないので) 34
  76. 76. ユーザのフィードバックが頼り(※使い込んでないので) •Issueの大半は異国から。。。国内向けはこっち から打って出ることが多い。 34
  77. 77. ユーザのフィードバックが頼り(※使い込んでないので) •Issueの大半は異国から。。。国内向けはこっち から打って出ることが多い。 •例:ツイートすると機能追加/バグ修正される。 34
  78. 78. ユーザのフィードバックが頼り(※使い込んでないので) •Issueの大半は異国から。。。国内向けはこっち から打って出ることが多い。 •例:ツイートすると機能追加/バグ修正される。 •独り言に絡んでいく。 34
  79. 79. ユーザのフィードバックが頼り(※使い込んでないので) •Issueの大半は異国から。。。国内向けはこっち から打って出ることが多い。 •例:ツイートすると機能追加/バグ修正される。 •独り言に絡んでいく。 •この手法を個人的に『みなしフィードバック』・ 『フィードフォワード』と呼んでいます。 34
  80. 80. ユーザのフィードバックが頼り(※使い込んでないので) •Issueの大半は異国から。。。国内向けはこっち から打って出ることが多い。 •例:ツイートすると機能追加/バグ修正される。 •独り言に絡んでいく。 •この手法を個人的に『みなしフィードバック』・ 『フィードフォワード』と呼んでいます。 •適当に愚痴を吐いてれば(筋が通ってりゃあ)対応 しとくのでよろしく。 34
  81. 81. プラグインでやるより 本体に追加し方がいいんじゃ? って要望もくるじゃない。
  82. 82. 本体側に押し付ける方針です Chefの更新履歴より
  83. 83. 中の人なので言っとくか④
  84. 84. 常に最新のChefで動く
  85. 85. Chef(masterブランチ)あるある 39
  86. 86. Chef(masterブランチ)あるある •後方非互換の修正 •コード量が多いのでリファクタリングでバグる 39
  87. 87. Chef(masterブランチ)あるある •後方非互換の修正 •コード量が多いのでリファクタリングでバグる •プラグイン壊れることもまあ多い •『Chef更新したらKnife-Zero動かないんだけ どー』 => 『えーどこよ。。』が何回もあった ので。 39
  88. 88. Chefの更新全部で結合テストしてます •フィードをIFTTTで監視 •=> コミット単位でCircleCI •そして副作用が。 40
  89. 89. 副作用 Chefの後方非互換発生(※)を 世界最速で知ってしまううちの 一人に ※一部の機能に限ります
  90. 90. 良くも悪くも 知ってしまい修正する羽目に
  91. 91. 中の人なので言っとくか⑤ ※ラスト
  92. 92. 対象がWindowsの場合 どーすんの? => 真面目に対応する気は 無かったが
  93. 93. 45
  94. 94. •Windows => WindowsのSSHは目立った問題なし。 •Others => Windowsで入出力がまだ微妙。 •ポートフォワードはちゃんと動いてる。 45
  95. 95. •Windows => WindowsのSSHは目立った問題なし。 •Others => Windowsで入出力がまだ微妙。 •ポートフォワードはちゃんと動いてる。 45
  96. 96. •Windows => WindowsのSSHは目立った問題なし。 •Others => Windowsで入出力がまだ微妙。 •ポートフォワードはちゃんと動いてる。 45 ※OpenSSHにこだわらなければ多分使える。
  97. 97. Knife-Zeroの話は以上
  98. 98. 新しめのテストスイート InSpec
  99. 99. InSpecって? •米Chef Incがリリースしたテストスイート
 (今はバージョン0.9.x) •Serverspec(RSpec)的な記述をベースに、監査 向けのルールを記述したりシェアしたりしやす くした。 48
  100. 100. 自前のテスト、サンプルコード (1) •これは…!? 49 1 describe package('telnetd') do 2 it { should_not be_installed } 3 end 4 5 describe inetd_conf do 6 its("telnet") { should eq nil } 7 end ~
  101. 101. 自前のテスト、サンプルコード (1) •これは…!? 49 1 describe package('telnetd') do 2 it { should_not be_installed } 3 end 4 5 describe inetd_conf do 6 its("telnet") { should eq nil } 7 end ~
  102. 102. サンプル(1)を実行 50 $ inspec exec spec/telnet_spec.rb --backend ssh --host=myhost 
 —user=root --key-files ~/.ssh/id_rsa --format=doc System Package telnetd should not be installed inetd.conf telnet should eq nil Finished in 0.20249 seconds (files took 1.78 seconds to load) 2 examples, 0 failures
  103. 103. 自前のテスト、サンプルコード (2) 51 1 only_if do 2 command('sshd').exist? 3 end 4 5 rule "sshd-11" do 6 impact 1.0 7 title "Server: Set protocol version to SSHv2" 8 desc " 9 Set the SSH protocol version to 2. Don't use legacy 10 insecure SSHv1 connections anymore. 11 " 12 describe sshd_config do 13 its('Protocol') { should eq('2') } 14 end 15 end
  104. 104. 自前のテスト、サンプルコード (2) 51 1 only_if do 2 command('sshd').exist? 3 end 4 5 rule "sshd-11" do 6 impact 1.0 7 title "Server: Set protocol version to SSHv2" 8 desc " 9 Set the SSH protocol version to 2. Don't use legacy 10 insecure SSHv1 connections anymore. 11 " 12 describe sshd_config do 13 its('Protocol') { should eq('2') } 14 end 15 end
  105. 105. 自前のテスト、サンプルコード (2) 51 1 only_if do 2 command('sshd').exist? 3 end 4 5 rule "sshd-11" do 6 impact 1.0 7 title "Server: Set protocol version to SSHv2" 8 desc " 9 Set the SSH protocol version to 2. Don't use legacy 10 insecure SSHv1 connections anymore. 11 " 12 describe sshd_config do 13 its('Protocol') { should eq('2') } 14 end 15 end
  106. 106. JSONフォーマット出力 52 $ inspec exec {中略} --format=json | jq . { "version": "3.4.1", "examples": [ - - 省略 - - ], "summary": { "duration": 0.217281, "example_count": 2, "failure_count": 0, "pending_count": 0 }, "summary_line": "2 examples, 0 failures" }
  107. 107. 監査向けとは? 53
  108. 108. 監査向けとは? •Specにスコアを付けて影響度を合算、みたいな 結果を出せる。 53
  109. 109. 監査向けとは? •Specにスコアを付けて影響度を合算、みたいな 結果を出せる。 •単品でServerspecのような利用法もできるが、
 Chef Compliance(※)などの定期実行&集約す る使い方をしてね。ということらしい。 53
  110. 110. 監査向けとは? •Specにスコアを付けて影響度を合算、みたいな 結果を出せる。 •単品でServerspecのような利用法もできるが、
 Chef Compliance(※)などの定期実行&集約す る使い方をしてね。ということらしい。 53※ http://qiita.com/sawanoboly/items/db44b2e6d8bfcbc8e990
  111. 111. 監査向けとは? •Specにスコアを付けて影響度を合算、みたいな 結果を出せる。 •単品でServerspecのような利用法もできるが、
 Chef Compliance(※)などの定期実行&集約す る使い方をしてね。ということらしい。 •ただ、単品では合算の出力なし。 53※ http://qiita.com/sawanoboly/items/db44b2e6d8bfcbc8e990
  112. 112. シェア済の監査ポリシー例 54
  113. 113. シェア済の監査ポリシー例 54
  114. 114. シェア済の監査ポリシー例 •CISのセキュリティベンチマーク •CIS Ubuntu 14.04 LTS Server Benchmark Level 1 & 2 54
  115. 115. シェア済の監査ポリシー例 •CISのセキュリティベンチマーク •CIS Ubuntu 14.04 LTS Server Benchmark Level 1 & 2 •ほか、Serverspecでは`細かすぎ`とされるリソー スもプリセットで用意していた。(コードは泥臭い) 54
  116. 116. Serverspecと(独自視点で)比較 55
  117. 117. Serverspecと(独自視点で)比較 •Serverspec 55
  118. 118. Serverspecと(独自視点で)比較 •Serverspec •対象はRake, spec_helperなどで調整。 55
  119. 119. Serverspecと(独自視点で)比較 •Serverspec •対象はRake, spec_helperなどで調整。 •RSpecだと思えばうまくいく。 55
  120. 120. Serverspecと(独自視点で)比較 •Serverspec •対象はRake, spec_helperなどで調整。 •RSpecだと思えばうまくいく。 •InSpec 55
  121. 121. Serverspecと(独自視点で)比較 •Serverspec •対象はRake, spec_helperなどで調整。 •RSpecだと思えばうまくいく。 •InSpec •対象をCLIのオプションでも指定できる。 55
  122. 122. Serverspecと(独自視点で)比較 •Serverspec •対象はRake, spec_helperなどで調整。 •RSpecだと思えばうまくいく。 •InSpec •対象をCLIのオプションでも指定できる。 •素のRSpecだと思うと『おやっ?』てなる。 55
  123. 123. Serverspecと(独自視点で)比較 •Serverspec •対象はRake, spec_helperなどで調整。 •RSpecだと思えばうまくいく。 •InSpec •対象をCLIのオプションでも指定できる。 •素のRSpecだと思うと『おやっ?』てなる。 •Exitコードは基本0(※) 55
  124. 124. Serverspecと(独自視点で)比較 •Serverspec •対象はRake, spec_helperなどで調整。 •RSpecだと思えばうまくいく。 •InSpec •対象をCLIのオプションでも指定できる。 •素のRSpecだと思うと『おやっ?』てなる。 •Exitコードは基本0(※) 55 ※今後どうなるかは知らない。
  125. 125. Serverspecと(独自視点で)比較 •Serverspec •対象はRake, spec_helperなどで調整。 •RSpecだと思えばうまくいく。 •InSpec •対象をCLIのオプションでも指定できる。 •素のRSpecだと思うと『おやっ?』てなる。 •Exitコードは基本0(※) •単品の場合、jsonフォーマットでサマリ取得がよい。 55 ※今後どうなるかは知らない。
  126. 126. `inspec shell`便利かも 56 $ inspec shell --backend ssh --host=以下略 Welcome to the interactive Inspec Shell > usage You can use resources in this environment to test the target machine. For example: command('uname -a').stdout file('/proc/cpuinfo').content You are currently running on: OS family: ubuntu OS release: 14.04 > package('apache2').installed? => true > file('/etc/default/ntp').content => "NTPD_OPTS='-g'n"
  127. 127. `inspec shell`便利かも 56 $ inspec shell --backend ssh --host=以下略 Welcome to the interactive Inspec Shell > usage You can use resources in this environment to test the target machine. For example: command('uname -a').stdout file('/proc/cpuinfo').content You are currently running on: OS family: ubuntu OS release: 14.04 > package('apache2').installed? => true > file('/etc/default/ntp').content => "NTPD_OPTS='-g'n"
  128. 128. `inspec shell`便利かも 56 $ inspec shell --backend ssh --host=以下略 Welcome to the interactive Inspec Shell > usage You can use resources in this environment to test the target machine. For example: command('uname -a').stdout file('/proc/cpuinfo').content You are currently running on: OS family: ubuntu OS release: 14.04 > package('apache2').installed? => true > file('/etc/default/ntp').content => "NTPD_OPTS='-g'n"
  129. 129. InSpecの歩み (1) 57
  130. 130. InSpecの歩み (1) •セキュリティ監査SaaSベンチャーが誕生 (Vulcanosec)。 57
  131. 131. InSpecの歩み (1) •セキュリティ監査SaaSベンチャーが誕生 (Vulcanosec)。 •Serverspecのカスタムルール集だった模様。 57
  132. 132. InSpecの歩み (1) •セキュリティ監査SaaSベンチャーが誕生 (Vulcanosec)。 •Serverspecのカスタムルール集だった模様。 •自社サービス向けの調整で、Specinfraをベース にした vulcanosec という名前のツール&サー ビスに。 57
  133. 133. InSpecの歩み (1) •セキュリティ監査SaaSベンチャーが誕生 (Vulcanosec)。 •Serverspecのカスタムルール集だった模様。 •自社サービス向けの調整で、Specinfraをベース にした vulcanosec という名前のツール&サー ビスに。 •vulcanosecは定期自動監査SaaS。 57
  134. 134. InSpecの歩み (2) 58
  135. 135. InSpecの歩み (2) •Chefが買う。 58
  136. 136. InSpecの歩み (2) •Chefが買う。 •方向性と求める汎用性のギャップがあったようで、 Specinfraを卒業。
 Test-Kitchenから派生して作ったTrainベースに変 更。 58
  137. 137. InSpecの歩み (2) •Chefが買う。 •方向性と求める汎用性のギャップがあったようで、 Specinfraを卒業。
 Test-Kitchenから派生して作ったTrainベースに変 更。 •InSpecになる。 58
  138. 138. InSpecの歩み (2) •Chefが買う。 •方向性と求める汎用性のギャップがあったようで、 Specinfraを卒業。
 Test-Kitchenから派生して作ったTrainベースに変 更。 •InSpecになる。 •『Serverspecリスペクト&客層ちょっと違うよ!』 をわりとアピールしている(と思う)。 58
  139. 139. 関連モジュールの比較表 59 - Serverspec (&Specinfra) InSpec (&Train) リソース定義 Serverspec InSpec ディストリビューション 差分吸収 Specinfra ローカルorリモート 接続 Train (Test-Kithcn由来) (※) (※この境目はまだ揺れ動いています)
  140. 140. まとめっぽい分類 60
  141. 141. まとめっぽい分類 •Serverspec •自分がやりたいことを確かめる目的。 60
  142. 142. まとめっぽい分類 •Serverspec •自分がやりたいことを確かめる目的。 •InSpec •何となく不安、をセキュリティ方面から広く見 る目的。 60
  143. 143. Chef Compliance(旧Vulcanosec) •25ノードまでは特に断りなく使用OK。 •超えるようなら連絡(現状は任意) •Chefが買った時に
 通知機能とかは
 一旦無しになってる。 61
  144. 144. InSpecは以上
  145. 145. お知らせ •今日行ったようなツールを •使ってみてフィードバック •質問したい •デモが見たい 63 等、お気軽にご相談OKです。
  146. 146. マニアックツール紹介 2015年11月23日 第2回関西ITインフラ系勉強会 @sawanoboly(HiganWorks LLC, Opsrock LLC) • Knife-Zero(構成管理) • InSpec (テストスイート) 終

×