Provisioning Frameworks Casual Talks vol.1 に行ってきた #pfcasual

金曜日にヒカリエで開催された Provisioning Frameworks Casual Talks vol.1 に参加 & 少しだけお手伝いしてきたのでまとめ。@zabbiozabbio さんと一緒に 27F のエレベーターホールで待ち受けていたのが自分です。 serverspec の話 chef + puppet の話というよりも chef 使うにしても、puppet 使うにしても、(Touryo 使うにしても)、serverspec 使って構成管理ツールとは別にサーバの構成をテストすべきだよねという話が印象に残っていて、どの構成管理ツール使うか検討している間に、まずは serverspec でテストするようにしておくのがよさそうかなと思いました。 で、attribute(config) の管理方法の話 serverspec 自体は出たときからよさそうだなとは思っていたものの、attribute に入れた内容が設定ファイルに反映されているかみたいなテストをしようとすると上記のような疑問にぶち当たって、serverspec が構成管理ツールに依存するのイケてないなーとか思っていましたが、家に帰って twitter 眺めてたら @riywo 先生がボソっといいことつぶやいてました。 弊社でいえば、たとえば admintool 的なツールが attribute 持っていて、provision と test の両方から参照できるみたいになっていれば、なんとなく上記の問題も解決できそうで、chef-solo -j URL で URL 指定して json 取ってこれると言ってた気がするので、なんかこの辺りうまくやれるツールがあるとよさそうですね:D 2013/05/12 23:34 追記 serverspec でホスト固有の属性値を扱う方法 で参考になりそうな仕組みが提案されてたので参考にしたいところです。 自動更新の話 @sonots さんのブログ にまとまってる話。自分は自動更新は怖い派ですが、実現できないか考える余地は色々とありそうだと思いました。話に出ていた staging はもちろん @sethvargo 先生がお話していた、environments を使えば production の一部のサーバだけ更新するみたいなこともできそうで、staging → production の一部 →production 全部 (or ブルー・グルーン・デプロイで新しいクラスタにだけ) といったように反映しつつテスト回せば、取り返しがつかなくなる前に気づくことも可能なのかもしれないとか思いました。(話聞いた印象なだけで裏取ったりはしてないですが…) »

Author image Takumi Sakamoto

Los Angeles に行ってきた

帰ってきてから 1 週間ぐらいたってしまいましたが、ゴールデンウィークを利用して Los Angeles と New York に行ってきたのでまとめ。ひとまず Los Angeles 編。 We Need a Car ヨーロッパ旅行の感覚で現地に着いてから色々考えようとか思ってましたが、公共交通機関で移動すると時間かかりすぎなのが非常に辛い町でした。ロサンゼルス国際空港の近くのホテルに宿泊していましたが、ビーチで有名な Santa Monica まではバスで 40 分程度、Hollywood までは 1 時間はかかってしまいます。逆にタクシーだとそれぞれ 30 分程度で着いてしまうので、レンタカー借りて移動するのが正解でした…。 Disney Resort California の Disney Resort は LAX から南に車で 40 分ほどの Anaheim にあります。LAX からは有料のシャトルバスが出ていて、”Long Distance Vans” と書かれた緑色の案内版の下で待ってると “Disney Resort” と書かれたバスが通るので合図して停車してもらって乗ります。片道 $20 程度。「帰りも乗ってくか?」と聞かれたので、「09:00 からショーがあってそれを見たいから 10:00 に迎えに来てくれて、ホテルまで送ってくれるなら」と交渉したところ、「ノープロブレム」とのことだったのでお願いしました。 日本におけるディズニーランドとディズニーシーのように、Disney Park と Disney California Park の 2 つがあったので、1 日でどちらにも出入りが自由な Park Hopper Ticket を $125 で購入。日本のディズニーランドが 6200 円なので大体同じくらいの感覚なんじゃないかと思います。 »

Author image Takumi Sakamoto

crontab で date コマンド使う場合の注意

crontab で定期的にを実行したときに出力されたものをログとして書き出すときに、ファイル名のサフィックスとして日時をつけることでログローテーションさせたいというケースはあると思います。ですが、以下のような記述はうまくいきません。 0 0 * * * /home/takus/bin/oreno_script.pl > /tmp/log.`date -d '1 days ago' +%Y%m%d` 2>&1 これは % が crontab では特別な意味を持つ文字であるのが原因で、下記のように % はバックスラッシュでエスケープしておく必要があります。 0 0 * * * /home/takus/bin/oreno_script.pl > /tmp/log.`date -d '1 days ago' +\%Y\%m\%d` 2>&1 crontab は man を読んで正しく使いましょう。 参考 詳細は man 5 crontab で確認できます。 »

Author image Takumi Sakamoto

ブラウザから tail -f log | grep keyword できるツール supergrep

エンジニアならサーバにログインしてコマンド打てば済む話ですが、世の中には非エンジニアでも tail -f log | grep keyword みたいにログを見れるようにしたいという案件がたまにあるみたいです。自分で書いてもよかったのですが、supergrep というツールがあったので使ってみました。 Is It A Bird? Is It A Plane? No, It’s Supergrep! esty/supergrep インストール supergrep は node.js で書かれているので、node のインストールから。node の作法はよく知らないので適当です。 git clone https://github.com/creationix/nvm.git ~/nvm . ~/nvm/nvm.sh nvm install v0.10.5 nvm alias default v0.10.5 node -v 続いて supergrep をインストールして起動します。これだけ。起動時に ‘Warning: express.createServer() is deprecated, express’ が出るのはご愛敬。 git clone https://github.com/etsy/supergrep.git cd supergrep npm install ./runlocal http://hostname:3000 にブラウザからアクセスするとログが見れる状態になりました。 設定 デフォルトでは /var/log/httpd/{info.log,php.log} を見るようになっていますが、他のログもみたい場合は localConfig. »

Author image Takumi Sakamoto

CentOS に Riak をインストール & Data::Riak::Fast で操作してみる

最近、社内 TechTalk で何か話せという依頼があり、ちょうど Riak Serious Talk もあるので、Riak についてアーキテクチャから利用例まで調べて話してみました。その課程で Riak のインストール等したので適当にブログっておきます。 インストール Vagrantbox.es から CentOS 6.4 x86_64 Minimal を持ってきてテストサーバを用意。起動後にひとまず iptables だけ停止。Vagrant の操作などは割愛します。 依存パッケージ導入 Erlang をインストールするのに必要なパッケージをインストールします。 sudo yum groupinstall “Development tools” sudo yum install git sudo yum install libwx unixODBC.x86_64 unixODBC-devel.x86_6 wxBase.x86_64 wxGTK.x86_64 wxGTK-gl wget https://elearning.erlang-solutions.com/couchdb//rbingen_adapter//package_R15B01_centos664_1333462308/esl-erlang-R15B01-1.x86_64.rpm sudo rpm -ivh esl-erlang-R15B01-1.x86_64.rpm Riak をインストール とりあえず make まで。ソースは Basho のサイトから入手できます。 wget http://downloads.basho.com.s3-website-us-east-1.amazonaws.com/riak/1.3/1.3.0/riak-1.3.0.tar.gz tar zxvf riak-1.3.0.tar.gz cd riak-1.3.0 make devrel Riak を起動してみる 4 ノードを起動。ulimit しているのはなしだと警告が出るので一応。 »

Author image Takumi Sakamoto

Test::Fake::HTTPD で Web API クライアントをテスト

ある社内向け Web API のクライアントのテスト書く時にどうすべきかなと小一時間調べてみて、Test::Fake::HTTPD がよさそうなので使ってみたメモ。思うがままにレスポンス返せるし、実際に本番サーバ叩いたりしなくてもいいし、オフラインでもテストできて、だいぶテストが捗りそうです。 #!/usr/bin/env perl use warnings; use strict; use Test::More; use Test::Fake::HTTPD; use JSON::XS; use Furl::HTTP; subtest api => sub { my $response = { '/1/statuses/user_timeline/takus.json?count=1' => [ { 'created_at' => 'Thu Mar 21 07:22:25 +0000 2013', 'text' => 'Hello, world', 'user' => { 'screen_name' => 'takus', 'lang' => 'en', 'location' => 'Tokyo, Japan', }, 'id' => '314638108048097280', } ], }; my $httpd = run_http_server { my $req = shift; if ( $response->{ $req->uri } ) { return HTTP::Response->new( 200, 'ok', [ 'Content-Type' => 'text/html' ], encode_json $response->{ $req->uri } ); } return HTTP::Response->new( 404, $req->uri . »

Author image Takumi Sakamoto

2012 年を振り返って

あけましておめでとうございます。年越し前に書こうと思っていましたが、あけおめ砲に備えて色々準備してるうちにいつの間にか年越ししてしまっていたので、今さらながら 2012 年を振り返ってみます。 卒業 今となっては大学院を卒業したのが遠い昔のように思いますが、2012 年の出来事だったんですよね。当時、インフラを担当してた My365 が順調に伸びつつあったので、成長に合わせてスケールするように色々と試行錯誤しながら、修士論文+国際会議用の論文を書いていたので、両方とも中途半端な感じになってしまったことは自分としては非常に残念でした。結果的に My365 はその頃のシステムをベースに今も動き続けいて、論文は Short Paper として IEEE CLOUD 2012 という会議に採録されたわけで、全て失敗したというわけでもないのですが、振り返ってみればどちらよくできる部分があったんじゃなかという反省ばかりです…。 就職 仕事は無事に希望通りの部署に配属されて、大規模 Web サービスのインフラの面倒をみるようなお仕事をしています。システムの規模もそれに関わる人の数も、今まで少人数で見てたサービスとは桁違いで、最初は戸惑う部分も多かったですが、10 ヶ月も経つとできることも増えてきて、毎日楽しく働けています。 課外活動 仕事以外でも モヒカン揃いの Monitoring casual #1 で発表 してみたり、@shun0102 と“Web若手エンジニアの会” を立ち上げたり、YAPC::ASIA 2012 のボランティア をやってみたりと振り返れば色々なイベントに参加した 1 年でした。 特に、カジュアルに始めた “Web若手エンジニアの会” が気がつけば 3 回もやった上に、前回は 50 人規模になるような大きなイベントになってビックリしていますが、オモシロイ人もたくさん来てくれるようになっていいイベントになりつつあり、会場提供してくれてる会社の方々や、興味深い発表をしてくれるスピーカーの方々にはただただ感謝するばかりです。 プライベート 2012 年はヨーロッパ、グアム、台北など色々な所に旅行に行きました。中でも 3 月のクロアチア〜スロベニア〜イタリア 1 人旅 は、ほんとに一日一日が刺激的で「*旅は麻薬みたいなものだ*」と言ってる人の気持ちがようやく分かったような気がします。 まとめ 技術に関するエントリが出てこないこの振り返りエントリに象徴されるように、アウトプットが少ないのは大きな反省点で、2013 年はもっとアウトプットを意識しながら過ごしていきたいと思っています。 というわけで、今年もよろしくお願いいたします。 »

Author image Takumi Sakamoto

Macbook で外部ディスプレイ接続時にウィンドウをイイカンジに並べる

By Theis Kofoed Hjorth Macbook で外部ディスプレイを利用してる人なら「このウィンドウはここに配置しておきたい!」みたいなのがあるかと思います。自分の場合は、MacbookAir のディスプレイにブラウザと Twitter、メインディスプレイに作業用のターミナル、サブディスプレイにサービスのダッシュボードやエラーログを tail するターミナルなんかを並べていて、各ウィンドウごとにポジションを決めて使っています。 しかし、Mac では会議などのために外部ディスプレイを外してしまうとせっかく好みの位置に並べたウィンドウが元の位置に戻ってしまいます。で、また会議から戻ってくると、自分好みの位置にチマチマ並べ直すわけですが、毎回こんな作業やるなんて面倒ですよね。 そこで自分は forget-me-not というソフトを使っています。このアプリは外部ディスプレイを接続した時のウィンドウ配置を記憶しておいてくれて、再接続時に自動で復元してくれるので、上にあげたような悩みをズバリ解決してくれてます。おまけに無料です! 自分は forget-me-not で十分なのでほかのソフトは調べてませんが、他にも有料のより高機能なソフトがあったり、@hirose31 さんのように AppleScript で好みの配置に並べるという手もあるようなので、参考までに並べておきます。自分も興味あるので、使ってみた感想とかあれば教えていただけると嬉しいです。 追記 2012/12/21 モロ被りなタイミングで @kenjiskywalker さんが Stay の紹介記事を書いてらっしゃったので参考リンクに追加させていただきます。forget-me-not が環境によってはうまく動かなかったりすることもあるみたいなので、そんな方は Stay を試してみるといいかもしれません。買ってみようと思った方はぜひあちらのブログのリンクを踏んで買っていただければと思います! 参考リンク forget-me-not StayさえあればもうMBAをサブディスプレイに繋げるのは怖くない - kenjiskywalker no memo ウィンドウをキッチリカッチリ配置したい - (ひ)メモ breeze stay divvy »

Author image Takumi Sakamoto

YAPC::ASIA 2012 に行ってきた

ブログを書くまでが YAPC ということで,遅ればせながらブログを書こうと思います.ブログが数ヶ月ぶりの更新ですね…orz 事実を積み上げて判断。古典的でも地道にやる @myfinder さんの「平均レスポンスタイム50msをPerlで捌く中規模サービスの実装/運用」の中で,キーワード的に何度も出てきていたこの言葉がすごく印象に残りました.常に正しい判断をするために地道に努力している姿勢は見習うべきものだなーと感心して,自分もそういうエンジニアでありたいなと改めて思いました. ボランティアスタッフとして 今回はボランティアスタッフとして YAPC に携わらせていただきました。平日じゃありえないくらい早起きしたり,一般で参加するよりは大変でしたが,このような素晴らしいカンファレンスにスタッフとして携われたのはすごくいい経験になったと思います.また,去年の YAPC で最後にスタッフが壇上に上がっていて羨ましいなと思ったのですが,今年は自分がそこにいられてすごく嬉しかったです. 反省 去年の感想エントリに「何か発表したいなー」と書いておきながら,何も喋らなかったのが残念すぎでした.自分のくだらない話してもしょうがないなーという思いがどっかにありましたが,talk を聞いていると同じようなことやってたり考えてる人は結構いるわけで,とりあえず「my365 インフラ成長の軌跡と反省点」みたいな内容で喋ってみればよかった・・・.ひとまず今後は申し込みドリブンでネタ考えて発表するみたいなことをもっとやっていかないといけないと思いました. まとめ というわけで,スタッフのみなさん,スピーカーのみなさん,参加者のみなさんお疲れ様でした.また来年もよろしくお願いいたします. »

Author image Takumi Sakamoto