Habitat Meetup #1

Habitat Meetup #1

ちょっと前にChef社からの新しいプロダクト、Habitatがリリースされましたね。これがどういうものなのかイマイチピンとこなかったのですが、meetupが開催されるとのことだったので参加してきました。 φ(..)

当日の流れ

  1. Chef Automateの話
  2. Habitat考察
  3. Chefconf 2016参加レポート

1. Chef Automateの話

前半はChef Automateの話だった。

Chef Automateとは、Chef社の各ツール(Chef, InSpec, Habitat, etc...)を統合し提供している包括的な管理ツール。

今回、例としてルートディレクトリにアクセスすると中身が見えてしまう問題のあるウェブページに対して、Chef Automateを使ってその問題の検知から修正、適用までの流れが紹介された。

問題の検知はChef Complianceが使われていた。Chef ComplianceはWeb管理画面があって、そこでInSpecというChef社のテストフレームワークをリモート実行したり、レポートの作成などの機能を提供する。

InSpecはserverspecをもっとエンタープライズ向けにしたようなイメージ?(合ってるっぽい)で、InSpecでは定義したポリシーの影響度合いを設定できたりする。

例えば上のルートディレクトリにアクセスすると中身が見えてしまう問題は、serverspecでは検知できない(apacheの設定は間違っていないので)。しかし、InSpecではコンプライアンスのポリシーに反しているので問題有りとして検知される。

コンプライアンスのポリシーは自分で設定できるが、CISにあるような基本的な項目はデフォルトでサポート&随時アップデートされるらしい。そのポリシーというのはどのように定義されているかというと、例ではウェブページで直接ファイル見れちゃうリンクを探すスクリプトだった(振る舞いテスト感)。

要するにInSpecはCompliance as Codeであり、これによって開発者とセキュリティチームがスムーズに連携できるようになる。開発者はいちいちセキュリティ担当に連絡したり自分たちでポリシーに反してないかチェックする面倒がなくなるので開発に集中できるし、セキュリティ担当も担当者がいちいちできあがった機能のポリシーチェックをしなくていいので面倒が省ける。開発のスピードが向上し、開発者とセキュリティ担当の喧嘩も起きない!

結果的に会社として守るべきものは守られ、本来やるべきことに集中できるようになる。

上のようにポリシーチェックがされた後は、ポリシーに準じて設定なおして適用!一連の流れや進捗はChef Automateの管理画面で見ることができる。実際に本番環境に適用したり、人間が承認する場面はボタンポチポチで適用できる。

...とここでスライドの最後まで行く前に時間切れになっちゃったのでChef Compliance以外はあまりよくわからなかった(本当は最後までいけばHabitatも含まれていて、その話まで行く予定だったぽい)。

感想

  • Chef社のツールはChef以外使ったことが無いに等しいので改めてChef社ツールのエコシステムでかいなと思った
  • コンプライアンスをコード化するのは面白いと思った!
  • だいぶエンタープライズ寄りの話だったので個人で試してみるにはハードルが高いな…
  • (Habitatの話は…!?)
  • In(frastructure)Spec(ification)!!!

2. Habitat考察

スライド: https://speakerdeck.com/takaishi/introduction-habitat

Habitatとは

Habitatが何なのかいまいちよくわからなかったので、この話が特に面白かった!

Chefと比較したHabitatのイメージ

  • Chef: データセンターの自動化
  • Habitat: アプリケーションの自動化

Habitatの役割

Habitatはinfrastructure as codeを4層にカテゴリ分けした図では一番下のinfrastructure services(オーケストレーション)に位置する。

では、これまでのinfrastructure servicesと何が違うかというと、このオーケストレーション層は今まではいろんなツールを組み合わせて実現していた。

  • デプロイ: capistrano
  • サービスディスカバリ: consul
  • などなど

対してHabitatならこれらを単体で実現できる。これが既存ツールとHabitatの違いであり、Habitatの強み。

Habitatの特徴: スーパーバイザー機能

スライドにデモの流れも載っているので細かい内容は割愛するが、スーパーバイザー機能が特に面白かったので書く!

スーパーバイザーの主な機能

  • アプリの実行&監視、設定の変更を行う機能(アプリ落ちたら自動起動してくれる)
  • クラスタリング機能(他のスーパーバイザーと連携できる)

スーパーバイザーができること

  • consulとかetcdのような感じでクラスタリングできる
  • クラスタ内では例えばrailsのノード数などの情報を持っていて、利用できる
  • テンプレート機能があり、たとえばdatabase.ymlをテンプレート化し、dbのアドレスの指定をHabitat任せにできる

デモではnginxの設定(複数のアプリケーションサーバーへのプロキシ設定)がクラスタの数によって書き換わる様子が紹介された。実際にクラスタの増減でプロキシ先のアドレスが増減したところで拍手が!

感想

  • Habitatは docker + consul みたいなイメージがついた
  • それプラスαとしてmesosやdockerイメージへのエクスポート機能や、アプリのビルド環境をサンドボックスで用意する仕組みなど、よりプラットフォーム非依存な機能が付いた感じ
  • Chefとの使い分けについての部分は、よくわからず(最初のセッションが最後まで終わればわかったのかも?)

3. Chefconf 2016キーノート報告

キーノートの内容をさらっと紹介する感じだった。

Chefconf 2016でのHabitatデモでは、先ほどのデモと違ってredisを使ったデモでredisのマスターをHabitatがゴシッププロトコルを使い選出している様子が紹介された。あとはChefsoloをChef Automateに移行するデモの紹介があった。

Chefの理念的なところも紹介された。Chefはスピードが使命!新しいサービスやソリューションを出す時、とにかくスピードが大事。

これは「シリコンバレーで共通の理解」という話で深掘りされていた。

  • アイデアを出すのは簡単
  • それをいかに早くデリバリーすることが重要!

具体例としてamazon fireが挙げられた。amazon fireでは再生中にストップした場合、画面にそのシーンに出演している俳優の名前等が出る機能がある。これは誰でも思いつくような機能でありながら、意外に誰もやってないことであり、出たアイデアを本当に実現することが大事という話だった。

スピード命。

感想

  • スピード命!!
  • 実際Chefは新しいサービスや機能のリリースが早い
  • Habitatもどんどん進化していきそう

参考リンク