Hosted Chef (Chef Server) に触れて冪等性を実感する

Opscode Chefの国内販売ベンダー(表現合ってるのか心配..)であるクリエーションラインさん主催のイベント「CL.kitchen vol.5」 に参加し、Hosted Chef(Chef Server)の入門的ハンズオンにトライしてきました。

講師は、先日の神戸・横浜でもお世話になった、@urasoko さん。

ハンズオンの内容はこんな感じ

  • Opscode Chefについて
  • 一般的なChef ServerとClient & Nodeの関係
  • 重要コンセプトと単語
  • ハンズオン
  • Hosted Chef Serverへのユーザー登録
  • Workstationの設定
  • knife-ec2のインストールと設定
  • cookbookの準備とサーバでの確認
  • Apacheを設定するcookbookの自作
  • Attributesの検索の結果をattribute.htmlに適用
  • WorkstationからknifeコマンドでEC2を起動し設定

 ※ CLさんのイベント記事よりコピペ

ハンズオンの環境(超ざっくり)

  1. 自分のPC(Mac)
  2. EC2上のワークステーション(ここでレシピを作ったりknifeを実行したり。自分のPCでも良いんだけど、今回はここで。)
  3. Chef Server(今回はOpscode社のHosted Chefを使用)
  4. EC2上でChefにより作成されるノード(Serverに情報を取り行き、自動で環境を整える)

おおざっぱに流れを言うと、以下のような感じです。

ハンズオンをやった結果(成果&気づき)

  • knife ec2でインスタンス起動&chef clientが実行できた。knifeコマンドの処理の内容と流れが分かり、けっこうモヤモヤ解消
  • Attributes(変数指定)の設定が初めてうまく通った。今回はコピペだし当然なんだけど...
  • 純粋に、Chef Serverってsoloより面白いかも。まだ今は、cronで定期的にchef clientを動かすような感覚に多少抵抗があるんだけど、 きっと、長い目で見たときに強い(コンフィグが腐らない)のは、そっなんだろうなとか、Chef Serverを使うことを考えると自然とDevOpsな分野に考えが及びますなー
  • Hosted Chefの初期登録からセットップまでが若干手間で分かりづらい。でもたぶん自前でChef Serverを立てて運用するよりはマシなんでしょう。
  • ネットワーク機器の自動構築も可能という情報は、追って調べてみる。どの辺りが対応してるんだろうか
  • クリエーションラインさんのオフィスが想像以上にお洒落。あの建物はいわゆるリノベ物件ってやつですか?俺の中の篤史を何とか抑えて大人しく帰りました

ちなみに、Hosted Chef は5ノードまで無償なので、 とりあえずChef Serverを使ってみたいって時に最適すな。

一番大事なこと

Chef = インフラストラクチャをある状態に収束させるためのフレームワーク

特に、Chef Serverは単なる自動化ツールではないよと

今後、自分で調べたいこと

  • Chef ServerのSearch機能でどこまでノードの情報が拾えて管理できるのか
  • ruby知らないけどクックブック書きたい

最後に

8/31(土)に、浦底さん発起のJAWS-UG千葉(AWSのユーザーグループ)の第一回イベントがあるそうで、 Chefネタがあるかどうかは知らないけど、すでに興味深いテーマが挙っていて自分は参加登録しました。

JAWS-UG千葉團第1回勉強会 2013/08/31 (土) 13:00 - 17:00

また、今週のデブサミにも浦底さんは出られるそうで、 そんな圧力高めな週に丁寧に教えて頂いてどうもありがとうございました。

July Tech Festa 2013(CEP Tool "Setsuna" Hands-on)

 品川の産業技術大学院大学で行われた「July Tech Festa 2013」というインフラ系の勉強会に行ってきました。テーマは「コードの中のインフラ (Infrastructure as Programming)」という事で、発表・ハンズオンともに、そっち系ですw。

 5トラックが並行して行われており、とても網羅できないので、印象に残ったセッションを1つだけ挙げておきます。

 

    「初めてのCEP! Setsunaハンズオン

        講師:デジタル・ラボ 岩瀬 高博さん

 

 分散KVS-Okuyamaの開発などで知られる岩瀬さんが、自ら開発したCEP(複合イベント処理)ツール「Setsuna」について初心者向けハンズオンを開いて下さいました。

  以下、その内容と感想です。

自分で聞いてメモった内容なので、誤り等あればご指摘頂けると助かります!_o_

1.CEPってなに?

 Complex Event Proccessingの略。直訳すると、"複合"、"出来事"、"処理"。

ん?という感じですが、いくつかの条件が重なったときだけに、イベント(=プロセスを再起動するとか、通知するとか)を行ってくれるツールとのこと。

  世間的には、ESperだとかの高価な製品が有名だそうですが、手軽でシンプルなCEPが欲しく「Setsuna」の開発に至ったとか。

 今回のハンズオンでは、OSのロードアベレージと、Webサーバのレスポンスを組み合わせた形でのデモ環境を用意してくれました。

  ※余談:デモ環境(Windows)が、岩瀬さんの想定された64bitではなかったということで、ツールのベースとなるJavaが正常に動作しないというハプニングがありました。こういうのはなかなか想定し辛いですね。。 (個人的には、今後、勉強会を運営する側になったときの良いTIpsを得ました;)

2. CEPツールのメリット

 複数のデータを横断的に見ることが出来ると、いままで見えなかったことが見えたりしてくる。単体の事象では異常と言い切れず、いくつかの事象が重なって初めて異常と判断できるようなケースにおいて、データの複合的な解析が役立つ。

 これを高速に処理し、後続処理まで面倒を見てくれるのが、CEPツールである。

 なお、このロジックはクレジットカードの不正利用調査や株取引などにも広く使われている分野だとか。

3. Setsunaのアーキテクチャ

SetsunaCore

        カスタマイズ要素を制御し、全体をコントロールするコア要素

3つのカスタマイズ要素

・Adapter

        Setsunaにイベントを入力する部分。

        入力後のデータを好きな単位で分解可能

・Query

        Adapterからの入力に検索を行い、データの変化を調べるもの。トリガーとクエリーの2つがある。

            ->トリガー:単純な変化をつかむ

               ->クエリー:SQLを使って複雑な条件で検証する

・UserEvent

        メール通知やサーバ再起動など、条件によって起動する処理を行うところ。

 

 処理の流れとしては、"Adapter"で入力した情報を"Query"で定義した条件で変化を調べ、"UserEvent"でイベントを起動すると。(多分そういうお話しだったと思う...汗)

 

※ 「Setsuna」は、Javeで実装されたOSSのCEPツール。他のCEPツールに比べ、簡単に動作させる事が特徴。データの変化を定義する言語はSQL。 
※ インプットデータはインメモリDBに展開しており、通常、データは短時間でサイクルされる。

4. ハンズオンの内容について

 「Setsuna」のアーキテクチャを分かりやすく理解できるよう、順に定義(Adapter->Query->UserEvent)を重ねていく内容でした。サーバの負荷が一定を超えても、httpdに変化がなければOKというシナリオで、実際の使いどころがイメージしやすいものでした。

 Setsunaはパイプ入力とMessagePack-RPC入力が実装済みなので、パイプ入力を使うときはこんな感じになる。

$ java -cp ./ TopDummy | java -jar setsuna.jar -stream topst

※デモ環境がtopのないWindows環境ゆえ、パイプ前の部分はtopのダミーコマンド。これを"setsuna.jar"がスペース区切りで分解して、DBに格納してくれる。

f:id:benkana:20130714135529j:plain

↑Setsunaを実行し、標準出力に結果を出しているところ。(後続のイベントは未定義の場合、画面のように標準出力となる。)

 

 これに、データの変化を検知するTriggerを付け足すと、こんな感じの命令になる。

$ java -cp ./ TopDummy | java -jar setsuna.jar -stream topst -trigger "colomn11 >2"

上記は、"カラム11(現在のロードアベレージ部分)"が"2"以上の場合をトリガーとした場合。

 ここまでは、普通にシェル操作で出来てしまう部分だが、Setsunaではさらに、SQLを条件式に付け足すことが出来る。(このクエリの部分を正しくメモれなかったので、後で試して追記します。)

 また、SQLの手入力は面倒なので、"easyquery"という関数が用意されている。これを使うと便利!

4. 触れてみての感想

デモ環境に難があり、時間内では正直動かすのがやっという状況でしたけど、イメージしていたほどは難しくもなく、複合的なイベント処理がもたらすメリットに大きな可能性を感じました。かなり使い道がありそうな気がするので、しばらく触ってみたいと思います!

 

西日本弾丸(JAWS-UG 神戸編)

f:id:benkana:20130706095732j:plain

 

 前日の瀬戸内小旅行に続き、翌7/6(土)は神戸で行われた「第2回 JAWS−UG 神戸」に参加してきました。今回は、OpsWorks(Chef)がテーマという事で、普段の業務にも欠かせないプロビジョニング方面の話を幅広く聞く事ができました。

 

各セッションの内容、感想など

  1. 「自動化も、アマゾンで。」 堀内さん(AWS)
     AWSとOpsWorksの概要について幅広く解説され、インフラのコモディティ化を推進する上で、OpsWorksをはじめとしたプロビジョニング系サービスの価値を話されました。まだ始まって間もないサービスという事で、既存のAWSサービスとの親和性はまだまだこれからといった印象ですが、先日のELBへの対応や、EBSへの接続に対応したことでEC2の最小インスタンスである"t1.micro"も扱えるようになるなど、Chefとセットで今後も要注目だと思います。

  2. 「初めてのChef教室」 安藤さん(Engine Yard)
     このセッションの基となったものを、以前、USTかなにかで拝聴したことがありますが、今回、その最新版を生で聞くことができ、細かい部分まで理解する事ができました。Chef初心者が戸惑いやすいポイント(バージョン間の注意点、用語の扱われ方、Webに散在する情報の見極め方など)を丁寧に扱われてました。

  3. 「開発運用の現場でのChef活用」 佐々木さん(NRIネットコム)
     午後最初の佐々木さんのセッションは、実際にSIの現場でChefで使ってどうだったかという、これも大変貴重なお話。レシピをフォーラムからコピるか1から自作するか(佐々木さんは全て自作する事を選ばれたという。)、アプリケーションのリリースまでChefで行うか、またはリリース専用ツールを使うかといった現場の悩みどころを教えて頂きました。また、自動化の先に何があるのかといった、考えさせられるテーマに触れられ、佐々木さんは「自動修復が可能な、自律的なシステムを実現できるのではないか」と仰ってました。

  4. 「Chef(Server)とAWS OpsWorksの比較」澤登さん(HiganWorks)
     タイトルの通り、Chef ServerとOpsWorksの違いをアプリケーションのデプロイを交えて細かく説明され、違いを分かっていない自分に正にうってつけの内容でした。

  5. 「Jenkins & fabric & python & boto & awscliでAMIの自動作成 & AutoScale」玉川さん(sky)
     コードのコミットをきっかけに、それ以降のビルド->AMI作成->AutoScale設定変更->インスタンス入替えを完全自動化するという、凄まじいデモを見せて下さいました!

  6. WordPress Cloud Designe Pattern」岡本さん(DigitalCube)
     通常、WordPressサイトを堅く構成していくとやや複雑な環境になりがちなところを、静的化プラグインを使うことでS3にダイレクトホスティングできる!という内容でした。控えめにお話しされてましたが、かなり使えるプラグインじゃないでしょうか。

  7. 「一撃 CloudFormation」吉田さん(cloudpack)
     Chefは使っていないと言い放ち、堂々とCloudFormationを説く吉田さんに男気を見ました。ネタかと思わせつつ、OpsWorksとCFの役割の違いがよく分かるお話しでタメになりました。

  8. 「Chef With AWS」浦底さん(クリエーションライン)
     米国でのハリケーン災害時における、迅速な地図情報共有にAWSとChefが貢献したという熱い話を紹介されました。

  9. 「VagrantをWeb開発環境に使う」新原さん
     Vagrantは使いやすいし、こわくないよ〜というお話しで、セットアップのデモを見せて下さいました。

  10. ピタゴラスイッチでAWS自動化」清水さん
     清水さん渾身のAWS自動化マシンに深く感動しました!これは面白テクノロジーとして、世に広めたい作品ですね!

 帰りの飛行機の都合で懇親会に参加出来なかったことが心残りでしたが、、刺激的な発表を行って頂いたご登壇の皆様と、準備・運営されたJAWS-UG神戸の皆様に、この場を借りてお礼申し上げます。

  これらの内容をもとに、自分でもくもくChefっていきます。

西日本弾丸(瀬戸内小旅行編)

 転職して半年が過ぎ、めでたく有休が支給された。入社時にひそかに決意した「有休出るまで会社休まん」という今どき小学生でも言わないような目標を無事達成したので、ここらで軽く息抜いとこうと支給日に申請を出して小旅行へ出た。

 

やりたかったこと

・本場のさぬきうどんを食べたい

・直島へ行きたい

・Chefがテーマの勉強会に参加したい(7/6 JAWS-UG 神戸)

 

 この3つを1泊2日に押し込み、会社帰りの足で深夜バスに乗って上から順に辿った。久しぶりの深夜バスはやっぱり長く退屈で、明け朝、高松駅前に降りたときの解放感が半端無かった。

  うどん県と言うくらいだから、だいたいどこへ行っても関東で食べるよりはうまかろうと、あえて下調べせずに駅前から適当に歩いて最初のうどん屋に入ることに。数秒で見つかると思ったら意外にも30分近く歩いてしまったけど、 「さか枝」というお店で食べたぶっかけ(冷)は、確かに自分が食べてきた"讃岐うどん"の麺とは別物で、口に入れた瞬間、味王が驚くように体が固まった。正直、添え物の天ぷらは普通と思ったが、麺だけは全く別次元。あれを関東で食べられるお店ないのかな。(地元民気取りで写真は自重したけど、作法が分からず終始オロオロでバレバレ)

 食べた後は琴電というかわいいローカル線で高松駅横の港まで戻り、フェリーで直島へ移動。

f:id:benkana:20130705103244j:plain

f:id:benkana:20130705123435j:plain

f:id:benkana:20130705131102j:plain

f:id:benkana:20130705134708j:plain

f:id:benkana:20130705133854j:plain

 

 直島は長年行きたかった夢の島。ちょうど今年は瀬戸内国際芸術祭が行われる年らしいけど、あいにく春期(-4/21)と夏期(7/20-)の合間なので、たぶん普段の直島だったんだと思う。

 安藤忠雄建築で有名な地中美術館は、非常にセコい事言うと数作品で2000円!? 高っ!! となるんだけど、空を切り取るコンクリート壁にウグイスの鳴き声が響くだとか、光の明暗で無機質な壁が表情豊かに見えるだとか、作品もさることながら、そこにいるだけで五感を刺激されるいい場所だった。建築と展示作品を50:50と捉えるなら、高いチケットにも納得できるし、時間を置いて建物の変化を見にまた来たいと思う。

 これから直島へ行く人へ1つアドバイスするとしたら、飲み物は常に欠かさず持って回りましょう!ということ。島の南部に点在する美術作品につられて歩きまわるうちに、気がつけば喉はカラカラ、自販機、、、なんて自然豊かな島のそこらにある訳なく、けっこう危険な状況に陥ってしまった。上の黄色いかぼちゃでは、ふらつきながら撮ってます。海水飲めるかな、、、バカなこと言うな!みたいな一人問答をしてぎりぎり生還。

 下の2枚の写真は直島銭湯という相当ぶっ飛んだ銭湯。(14時営業開始という事で、残念ながら入浴できず。) こんな感じで、ほかにも島中心部で展開される「家プロジェクト」だとか、島全体で見るべきところは多い。

 聞いた話でしかないけども、この島はかつて産業汚染されて禿げ山となってしまったものの、沢山の人の手によって再生に向けた努力が行われいるという姿勢を、短時間の滞在でも色々と感じ取った。見放したらそこでおしまいという、福島の南相馬で感じた気持ちと同じだろうか。諦めないという強さこそ、人類最後の希望...とかなんとか考えにふけりつつ、そういえばこの島はカップルだらけで俺みたいなおっさん一人旅野郎なんて全然いねえ!畜生!と、島を後にした。

 夜は岡山で過ごし、翌朝、新幹線で神戸へ。JAWS-UG神戸の内容は別で上げよう。