MesosとCephのクラスタをAWSに構築するTerraformのmoduleを書いた

冬休みの宿題として、Mesos+Dockerでアプリちゃんと動かしたい!→Shared Filesystemが欲しい→Cephやりたい!→AWSのorchestrationが必要→Terraform面白い!というyak shavingを経て、なぜかずっとTerraformをいじってました。とりあえずちゃんと動くのができたので公開。

細かい話は1年ぶりの英語で適当に書きなぐったつもりなので、こちらにはポエムでも。

Terraform面白い

このブログとかを移行しようと考えてて、AWSを遊びじゃなくて運用しようとしたら、VPCとかサーバ以外に管理しなきゃいけないのが多すぎて( ゚д゚)ポカーンってなってました。CloudFormationでもよかったんですが、せっかくなのでHashicorp products遊んでおこうと思ってTerraformを選びました。

作るべきresourceを定義していけばある程度自動でdependency graphを作ってくれるのはいいですね。Atlasも試用してたんですがまだ作りかけな感じだったので普通の使い方しかしてません。destroyってすれば作ってた環境を全消しできるので、マニュアルでやってていろんなゴミが残るのとかを気にせずに作っては壊すことができました。DSLはかなりstrictになっているので、できることが限られますが、逆に削ぎ落とすことができるので良かったですね。template的なものとかvariableにlistを設定できるようになればもっと表現力が上がりそうで今後に期待。

ちなみに、documentとかにはよくAWSのaccess keyとかをベタ書きしてありますが、コード読むと環境変数から読む機能が既に入ってるので、実は書かなくていいんですよね。

Packerも面白い

リリース以来久々にさわりましたが、こちらもよくできてる。あるAMIを元に新しいAMIを作るのが凄まじく簡単でした、まるでDockerfileの様。そして実はDocker imageも作れるという。

ただ、VPCをあんまり考えた作りにはなってない様で、その辺が組み込みになると良さそうだなーと思いました。今回はPacker用に適当なVPC+subnetを作っておいて環境変数経由で渡してます。Terraformよろしくkey pairみたいにtemporaryのをその場で作ってくれるとうれしいですね。t2なinstanceはVPC必須なのでこの辺対応は必要そうだからPRしようかしら。

Ceph構築めんどい

これが一番苦労した。なによりも手順が多い。最初はprovisioning自作しようかなと思ったけど、結局ceph-deployに落ち着いた。認証とか別にいらないんじゃないかなーとか思わないこともなかったけど、一応セオリー通り作ってみました。

ちなみに作ってみたら見事に動作してて感動しました。monのinstanceをterminateして、Terraformでapplyしなおすとちゃんとprovisionしなおしてclusterにrejoinできた時はやった!って声がでました。osdもadminも同様にいつ死んでも復活できます。どのinstanceもゼロから作りなおせるのに、一度作ったclusterは情報の海の中でずっと生き続けているというのがなんともスピリチュアルだなぁと思いましたまる

で、Ceph(CephFS)を入れた理由はMesos/Marathon/Dockerなプロセス間でどうしてもファイルの共有ないと辛いよなーと思った次第。例えばWordPress動かすと、アップロードされる画像とかDBに入らない情報をstoreしないといけないわけで。今回CephFSを作れたので、あとはこれをDockerにmountしてあげればいいはず。

MesosだとHDFSが標準的っぽいけど、そもそもあれはFilesystemとして使うにはアレだし、このためにHadoop構築するのもダルいし、というわけでCephFSを試しました。Mesosがなにかdistributed shared filesystemを標準で取り込んでくれるといいんだけどなぁ。CephFSはまだproduction readyじゃないのがあと一歩だけど、S3/Swift互換のObject storeにもなるし、そもそもblock deviceとしても使えるので、あると便利だと思うんだよなー。

Mesos何もはじまってない!

本当はMesosつかってアプリ動かすはずだったのに、なぜかずっとCephやTerraformの勉強してて一向に進んでなかった。やっと構築方法が確立したのでこれから本来やりたかったことが始められるはず、、、ちょっと力尽きたけど。。。

1年間スルーしてる間にMesosにDocker対応もとりこまれてたし、MesosphereはDCOSを来年出すみたいだし(下のdemoは必見)、本格的に面白くなる1年なのかもなー。