147
マニアックツール紹介 2015年11月23日 第2回関西ITインフラ系勉強会 @sawanoboly(HiganWorks LLC, Opsrock LLC) Knife-Zero(構成管理) InSpec (テストスイート)

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

Embed Size (px)

Citation preview

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

マニアックツール紹介

2015年11月23日 第2回関西ITインフラ系勉強会

@sawanoboly(HiganWorks LLC, Opsrock LLC)

• Knife-Zero(構成管理) • InSpec (テストスイート)

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

HiganWorks, Opsrockについて

2

アプリケーション/サービスのための プラットフォーム構築や運用の自動化を テーマに活動

ChefやServerspec等、インフラコードを取り扱うソリューションを提供

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

3

著書など関わった書籍

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

(最近の)担当範囲•アプリケーションは誰かが用意 • それが動作するプラットフォーム全般 • エンドユーザへの配信関係全般 • あとリポジトリとかCIとかデプロイ

•環境チョイスには節操なし

4

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

今日の話•Knife-Zero (Chefのプラグイン) •自分で作ってるから

•InSpec •新しいから

5

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

構成管理ツール Knife-Zero

(Chefのプラグイン)

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

(一応)Chefについて

7

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

(一応)Chefについて•米Chef Incが開発している構成管理ツール。 •(主に)OS管理権限があるサーバの情報収集。 •Recipeによる定義ベースの構成変更。

7

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

(一応)Chefについて•米Chef Incが開発している構成管理ツール。 •(主に)OS管理権限があるサーバの情報収集。 •Recipeによる定義ベースの構成変更。•派生プロジェクトがとても多い。 •最近はエンプラ・IT部門向けに強化中・・?

7

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

Knife-Zeroの話のまえに 前提知識として

Chefをつかう環境の話を

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

なんかしらサーバがあります

9

Server

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

なんかしらサーバがあります

9

Server

原初のChef

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

なんかしらサーバがあります

9

Server

原初のChef

ローカルを変更

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

Client/ServerとSoloへ

10

Server

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

Client/ServerとSoloへ

10

Server

Chef-Server

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

Client/ServerとSoloへ

10

Server

Chef-Server 情報集約

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

Client/ServerとSoloへ

10

Server

Chef-Client

Chef-Server 情報集約

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

Client/ServerとSoloへ

10

Server

Chef-Client

Chef-Server 情報集約

• 情報収集と提供 • 構成の変更

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

Client/ServerとSoloへ

10

Server

Chef-Client

Chef-Server 俺らの端末情報集約

• 情報収集と提供 • 構成の変更

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

Client/ServerとSoloへ

10

Server

Chef-Client

Chef-Server 俺らの端末情報集約

一括で管理

• 情報収集と提供 • 構成の変更

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

Client/ServerとSoloへ

10

Server

Chef-Client

Chef-Server

Server

原初のChef

俺らの端末情報集約

一括で管理

• 情報収集と提供 • 構成の変更

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

Client/ServerとSoloへ

10

Server

Chef-Client

Chef-Server

Server

原初のChef

俺らの端末情報集約

一括で管理

• 情報収集と提供 • 構成の変更

Chef-Solo

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

Remote(Solo) => Knife-Solo

11

Server

Chef-Client

Chef-Server

Server

Chef-Solo

俺らの端末

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

Remote(Solo) => Knife-Solo

11

Server

Chef-Client

Chef-Server

Server

Chef-Solo

俺らの端末リモートで Soloしよう

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

Remote(Solo) => Knife-Solo

11

Server

Chef-Client

Chef-Server

Server

Chef-Solo

俺らの端末Knife-Solo

リモートで Soloしよう

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

Remote(Solo) => Knife-Solo

11

Server

Chef-Client

Chef-Server

Server

Chef-Solo

俺らの端末Knife-Solo

リモートで Soloしよう

ファイル転送して Chef-Soloを実行 ※プロビジョン特化

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

Knife-Soloなら 知ってる人?

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

14

わりと近くにいらっしゃる

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

話をもどします

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

Server

C/S環境にローカルモード追加

16

Server

Chef-Client

Chef-Server

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

Server

C/S環境にローカルモード追加

16

Server

Chef-Client

Chef-Server

Chef-Zero

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

Server

C/S環境にローカルモード追加

16

Server

Chef-Client

Chef-Server

Chef-Zero

カレントディレクトリ(等)を 使用する簡易Chef-Server。 Client実行中だけ起動。

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

Server

C/S環境にローカルモード追加

16

Server

Chef-Client

Chef-Server

Chef-Zero

カレントディレクトリ(等)を 使用する簡易Chef-Server。 Client実行中だけ起動。

Chef-Serverと同じように TCP/IP+HTTPで通信

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

あ、TCPじゃん。

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

インフラ系の方ならば 身に覚えがあるでしょうが

18

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

インフラ系の方ならば 身に覚えがあるでしょうが

18

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

インフラ系の方ならば 身に覚えがあるでしょうが

•TCP Listenしたら、どこまでもトンネルを引っ張っられる。

18

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

Server

Chef-Zeroを手元で起動してみた

19

Server

Chef-Client

Chef-Server 俺らの端末

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

Server

Chef-Zeroを手元で起動してみた

19

Server

Chef-Client

Chef-Server 俺らの端末Chef-Zero

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

Server

Chef-Zeroを手元で起動してみた

19

Server

Chef-Client

Chef-Server 俺らの端末Chef-Zero

SSHでForward

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

Server

Chef-Zeroを手元で起動してみた

19

Server

Chef-Client

Chef-Server 俺らの端末Chef-Zero

SSHでForward

TCP/IP+HTTPで通信

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

Server

Chef-Zeroを手元で起動してみた

19

Server

Chef-Client

Chef-Server 俺らの端末Chef-Zero

SSHでForward

Knife-Zero

TCP/IP+HTTPで通信

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

以上をふまえて Knife-Zeroの話をします

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

つかいかた

21

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

つかいかた•bootstrap

21

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

つかいかた•bootstrap•対象のサーバ(以下Node)にChefをインストール

21

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

つかいかた•bootstrap•対象のサーバ(以下Node)にChefをインストール•情報を収集してローカルに保存

21

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

つかいかた•bootstrap•対象のサーバ(以下Node)にChefをインストール•情報を収集してローカルに保存•converge

21

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

つかいかた•bootstrap•対象のサーバ(以下Node)にChefをインストール•情報を収集してローカルに保存•converge•Chefを実行してくる

21

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

つかいかた•bootstrap•対象のサーバ(以下Node)にChefをインストール•情報を収集してローカルに保存•converge•Chefを実行してくる•リモートのChefバージョンを上げ下げする

21

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

Knife-Zeroでよかったこと

22

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

Knife-Zeroでよかったこと•SSH x 管理権限で触れるサーバの台帳(構成管理)が作れる&コードで管理をしやすくなった。

22

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

Knife-Zeroでよかったこと•SSH x 管理権限で触れるサーバの台帳(構成管理)が作れる&コードで管理をしやすくなった。•C/S環境向けのレシピが使いやすくなった。

22

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

Knife-Zeroでよかったこと•SSH x 管理権限で触れるサーバの台帳(構成管理)が作れる&コードで管理をしやすくなった。•C/S環境向けのレシピが使いやすくなった。•ファイルの転送は必要分だけなので、わりと早い。

22

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

Knife-Zeroでよかったこと•SSH x 管理権限で触れるサーバの台帳(構成管理)が作れる&コードで管理をしやすくなった。•C/S環境向けのレシピが使いやすくなった。•ファイルの転送は必要分だけなので、わりと早い。•(リソースが許す限り)並行に変更や情報収集が実行できる。

22

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

詳しくはドキュメントへ•knife-zero.github.io •2カ国語サポート (日本語・英語風言語) •Webの紹介記事から全然リンクされないので検索に出てきづらい。 (君らなんで公式あんのにリンク貼らんのさ…)

•Chefの機能としては公式の内容をほぼサポートしてるのでそっちを見て。

23

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

折角なので 開発サイドの話をします

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

中の人なので言っとくか①

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

謎のStargazers

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

わりと縁もゆかりもないところから☆

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

なんか国外多いし

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

28

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

28

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

28

どこで知ったんだろう…

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

『まあまあ便利』 ってことなんでしょう、きっと。

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

『まあまあ便利』 ってことなんでしょう、きっと。

>> 地味に開発のモチベに。

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

中の人なので言っとくか②

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

自分がそこまで使い込んでない

31

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

自分がそこまで使い込んでない•生のOSに対して何かするという機会が減ってきているので。。。(PaaSとかがラクで。)

31

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

自分がそこまで使い込んでない•生のOSに対して何かするという機会が減ってきているので。。。(PaaSとかがラクで。)•『ここはChefかなー』な時に登場。

31

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

自分がそこまで使い込んでない•生のOSに対して何かするという機会が減ってきているので。。。(PaaSとかがラクで。)•『ここはChefかなー』な時に登場。•※ただ、自分でも意識しないで使っていることがある。

31

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

自分がそこまで使い込んでない•生のOSに対して何かするという機会が減ってきているので。。。(PaaSとかがラクで。)•『ここはChefかなー』な時に登場。•※ただ、自分でも意識しないで使っていることがある。

•手作業も普通に併用するよ。

31

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

自分がそこまで使い込んでない•生のOSに対して何かするという機会が減ってきているので。。。(PaaSとかがラクで。)•『ここはChefかなー』な時に登場。•※ただ、自分でも意識しないで使っていることがある。

•手作業も普通に併用するよ。•このへん、次の話につながります。

31

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

中の人なので言っとくか③

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

サポートが手厚い

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

ユーザのフィードバックが頼り(※使い込んでないので)

34

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

ユーザのフィードバックが頼り(※使い込んでないので)

•Issueの大半は異国から。。。国内向けはこっちから打って出ることが多い。

34

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

ユーザのフィードバックが頼り(※使い込んでないので)

•Issueの大半は異国から。。。国内向けはこっちから打って出ることが多い。•例:ツイートすると機能追加/バグ修正される。

34

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

ユーザのフィードバックが頼り(※使い込んでないので)

•Issueの大半は異国から。。。国内向けはこっちから打って出ることが多い。•例:ツイートすると機能追加/バグ修正される。•独り言に絡んでいく。

34

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

ユーザのフィードバックが頼り(※使い込んでないので)

•Issueの大半は異国から。。。国内向けはこっちから打って出ることが多い。•例:ツイートすると機能追加/バグ修正される。•独り言に絡んでいく。•この手法を個人的に『みなしフィードバック』・『フィードフォワード』と呼んでいます。

34

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

ユーザのフィードバックが頼り(※使い込んでないので)

•Issueの大半は異国から。。。国内向けはこっちから打って出ることが多い。•例:ツイートすると機能追加/バグ修正される。•独り言に絡んでいく。•この手法を個人的に『みなしフィードバック』・『フィードフォワード』と呼んでいます。

•適当に愚痴を吐いてれば(筋が通ってりゃあ)対応しとくのでよろしく。

34

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

プラグインでやるより 本体に追加し方がいいんじゃ? って要望もくるじゃない。

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

本体側に押し付ける方針です

Chefの更新履歴より

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

中の人なので言っとくか④

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

常に最新のChefで動く

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

Chef(masterブランチ)あるある

39

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

Chef(masterブランチ)あるある•後方非互換の修正 •コード量が多いのでリファクタリングでバグる

39

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

Chef(masterブランチ)あるある•後方非互換の修正 •コード量が多いのでリファクタリングでバグる•プラグイン壊れることもまあ多い •『Chef更新したらKnife-Zero動かないんだけどー』 => 『えーどこよ。。』が何回もあったので。

39

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

Chefの更新全部で結合テストしてます•フィードをIFTTTで監視 •=> コミット単位でCircleCI •そして副作用が。

40

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

‘副作用’ Chefの後方非互換発生(※)を 世界最速で知ってしまううちの

一人に※一部の機能に限ります

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

良くも悪くも 知ってしまい修正する羽目に

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

中の人なので言っとくか⑤※ラスト

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

対象がWindowsの場合 どーすんの?

=> 真面目に対応する気は 無かったが

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

45

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

•Windows => WindowsのSSHは目立った問題なし。 •Others => Windowsで入出力がまだ微妙。 •ポートフォワードはちゃんと動いてる。

45

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

•Windows => WindowsのSSHは目立った問題なし。 •Others => Windowsで入出力がまだ微妙。 •ポートフォワードはちゃんと動いてる。

45

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

•Windows => WindowsのSSHは目立った問題なし。 •Others => Windowsで入出力がまだ微妙。 •ポートフォワードはちゃんと動いてる。

45

※OpenSSHにこだわらなければ多分使える。

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

Knife-Zeroの話は以上

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

新しめのテストスイート InSpec

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

InSpecって?•米Chef Incがリリースしたテストスイート(今はバージョン0.9.x) •Serverspec(RSpec)的な記述をベースに、監査向けのルールを記述したりシェアしたりしやすくした。

48

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

自前のテスト、サンプルコード (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~

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

自前のテスト、サンプルコード (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~

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

サンプル(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

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

自前のテスト、サンプルコード (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

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

自前のテスト、サンプルコード (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

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

自前のテスト、サンプルコード (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

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

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"}

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

監査向けとは?

53

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

監査向けとは?•Specにスコアを付けて影響度を合算、みたいな結果を出せる。

53

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

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

53

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

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

53※ http://qiita.com/sawanoboly/items/db44b2e6d8bfcbc8e990

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

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

53※ http://qiita.com/sawanoboly/items/db44b2e6d8bfcbc8e990

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

シェア済の監査ポリシー例

54

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

シェア済の監査ポリシー例

54

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

シェア済の監査ポリシー例

•CISのセキュリティベンチマーク •CIS Ubuntu 14.04 LTS Server Benchmark Level 1 & 2

54

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

シェア済の監査ポリシー例

•CISのセキュリティベンチマーク •CIS Ubuntu 14.04 LTS Server Benchmark Level 1 & 2

•ほか、Serverspecでは`細かすぎ`とされるリソースもプリセットで用意していた。(コードは泥臭い)

54

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

Serverspecと(独自視点で)比較

55

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

Serverspecと(独自視点で)比較•Serverspec

55

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

Serverspecと(独自視点で)比較•Serverspec•対象はRake, spec_helperなどで調整。

55

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

Serverspecと(独自視点で)比較•Serverspec•対象はRake, spec_helperなどで調整。•RSpecだと思えばうまくいく。

55

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

Serverspecと(独自視点で)比較•Serverspec•対象はRake, spec_helperなどで調整。•RSpecだと思えばうまくいく。•InSpec

55

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

Serverspecと(独自視点で)比較•Serverspec•対象はRake, spec_helperなどで調整。•RSpecだと思えばうまくいく。•InSpec•対象をCLIのオプションでも指定できる。

55

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

Serverspecと(独自視点で)比較•Serverspec•対象はRake, spec_helperなどで調整。•RSpecだと思えばうまくいく。•InSpec•対象をCLIのオプションでも指定できる。•素のRSpecだと思うと『おやっ?』てなる。

55

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

Serverspecと(独自視点で)比較•Serverspec•対象はRake, spec_helperなどで調整。•RSpecだと思えばうまくいく。•InSpec•対象をCLIのオプションでも指定できる。•素のRSpecだと思うと『おやっ?』てなる。•Exitコードは基本0(※)

55

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

Serverspecと(独自視点で)比較•Serverspec•対象はRake, spec_helperなどで調整。•RSpecだと思えばうまくいく。•InSpec•対象をCLIのオプションでも指定できる。•素のRSpecだと思うと『おやっ?』てなる。•Exitコードは基本0(※)

55※今後どうなるかは知らない。

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

Serverspecと(独自視点で)比較•Serverspec•対象はRake, spec_helperなどで調整。•RSpecだと思えばうまくいく。•InSpec•対象をCLIのオプションでも指定できる。•素のRSpecだと思うと『おやっ?』てなる。•Exitコードは基本0(※)•単品の場合、jsonフォーマットでサマリ取得がよい。

55※今後どうなるかは知らない。

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

`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"

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

`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"

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

`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"

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

InSpecの歩み (1)

57

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

InSpecの歩み (1)•セキュリティ監査SaaSベンチャーが誕生(Vulcanosec)。

57

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

InSpecの歩み (1)•セキュリティ監査SaaSベンチャーが誕生(Vulcanosec)。•Serverspecのカスタムルール集だった模様。

57

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

InSpecの歩み (1)•セキュリティ監査SaaSベンチャーが誕生(Vulcanosec)。•Serverspecのカスタムルール集だった模様。•自社サービス向けの調整で、Specinfraをベースにした vulcanosec という名前のツール&サービスに。

57

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

InSpecの歩み (1)•セキュリティ監査SaaSベンチャーが誕生(Vulcanosec)。•Serverspecのカスタムルール集だった模様。•自社サービス向けの調整で、Specinfraをベースにした vulcanosec という名前のツール&サービスに。•vulcanosecは定期自動監査SaaS。

57

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

InSpecの歩み (2)

58

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

InSpecの歩み (2)•Chefが買う。

58

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

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

58

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

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

58

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

InSpecの歩み (2)•Chefが買う。•方向性と求める汎用性のギャップがあったようで、Specinfraを卒業。Test-Kitchenから派生して作ったTrainベースに変更。•InSpecになる。•『Serverspecリスペクト&客層ちょっと違うよ!』をわりとアピールしている(と思う)。

58

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

関連モジュールの比較表

59

- Serverspec (&Specinfra)

InSpec (&Train)

リソース定義 ServerspecInSpec

ディストリビューション 差分吸収

Specinfraローカルorリモート

接続Train

(Test-Kithcn由来)

(※)

(※この境目はまだ揺れ動いています)

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

まとめっぽい分類

60

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

まとめっぽい分類•Serverspec •自分がやりたいことを確かめる目的。

60

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

まとめっぽい分類•Serverspec •自分がやりたいことを確かめる目的。•InSpec •何となく不安、をセキュリティ方面から広く見る目的。

60

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

Chef Compliance(旧Vulcanosec)

•25ノードまでは特に断りなく使用OK。 •超えるようなら連絡(現状は任意) •Chefが買った時に通知機能とかは一旦無しになってる。

61

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

InSpecは以上

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

お知らせ•今日行ったようなツールを •使ってみてフィードバック •質問したい •デモが見たい

63

等、お気軽にご相談OKです。

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

マニアックツール紹介

2015年11月23日 第2回関西ITインフラ系勉強会

@sawanoboly(HiganWorks LLC, Opsrock LLC)

• Knife-Zero(構成管理) • InSpec (テストスイート)