まめ畑

ゆるゆると書いていきます

OpsWorksを触ってみた

今日、AWSの新機能OpsWorksがリリースされました。
リリースノートや機能説明は

を御覧ください。

使い方などはAmazon Web Services ブログ: 【AWS発表】AWS OpsWorks - Chefを使って柔軟にクラウド内のアプリケーション管理ができる新サービスを発表 やドキュメントが詳しく書かれているので、使ってみて気づいた点をいくつかまとめておきます。

OpsWorksはChefを使ってインスタンスの起動後、Recipeを実行しサーバを作っていくことが出来るサービスです。CloudFormationよりも気軽に使え、GitやSubversionやS3などのレポジトリを使用することが出来ます。
今、既にChefとバージョン管理システムを使っている場合は、Customレポジトリとして指定してあげる事で使用することが出来ます。
AWSでもデフォルトRecipeとして、Haproxy / Application Server(Rails/PHP/satic) / MySQL / memcached / ganglia が用意されています。その他、鍵の登録やstart / shutdown周りのものなどAWSが用意しているRecipeは
https://github.com/aws/opsworks-cookbooks
に置かれています。

OpsWorksのイメージとしては

  • Stack
    • Proxy / Application Server / DB など1つのアプリケーションを構成するインスタンス群(Layerを束ねたまとまり)を定義
  • Layer
    • LB や Application Server / DB や cacheなどの各レイヤーでどのRecipeを使うか(haproxyやRails server / MySQLなどのミドルウェア何を使うか)
    • ここで、Built-in Recipeを使うこともできますし、自前の物を使うことも可能です
  • Apps
    • 実際にデプロイするアプリケーションを指定します。Gitなどのレポジトリを指定することが出来ます(BrancheやRevisionなども)
  • Instance
    • 各Layerにで起動するInstanceタイプやAZを指定します

この様な感じで1つのアプリケーションを構成するサーバ群をStackとして作成します。後は、インスタンスをOpsWorksのコンソールから起動してやると、Recipe通りにサーバが作成されます。

また、インスタンスの起動も24h動かしておくものと、時間を基準にスケジュールで・負荷に応じてなどが選べます。

軽く使ってみた感想など

まずはコンソール
f:id:con_mame:20130219190800p:plain
f:id:con_mame:20130219190759p:plain

起動出来るマシンイメージは
f:id:con_mame:20130219193806p:plain
Amazon LinuxとUbuntu12.04の2種類のみ

haproxyはヘルスチェック用の設定を、DBやMemachedはメモリ割り当て量やrootパスワードを設定することが出来ます。haproxyのヘルスチェックはELBからとかに使用出来ます。その他、EIPやEBSの割り当てなどもInstance追加時に設定できるのと、インスタンス毎にインスタンスサイズやAZを指定出来ます。これはEditから変更可能です。
f:id:con_mame:20130219190806p:plain
f:id:con_mame:20130219190805p:plain

Railsサーバは以下の様な設定項目があります。使用するgemバージョンやRubyバージョンを選ぶことが可能です。
f:id:con_mame:20130219190802p:plain


Built-in Recipeだけでベーシックな構成が作成可能です。

また、OSのパッケージも指定しておくことがコンソールから可能です。
f:id:con_mame:20130219190803p:plain

気づいたこととか

いくつか気づいたことをまとめておきます

  • 起動できるマシンイメージは2種類のみ(いまのところ)
  • Application ServerでInstance追加時のオプションでSSL証明書を設定する事が可能ですが、証明証のライセンスで起動分もしくは無制限の物を買っておかないと、どんどん起動した時にライセンス違反になってしまう
  • Stackを削除するときは登録されてるinstanceとappを全部解除してからじゃないと消せない
  • Layerは登録されてるinstanceを全部削除してからじゃないと消せない

f:id:con_mame:20130219190801p:plain
f:id:con_mame:20130219190807p:plain

今のところこんな感じです。

開発環境を一式直ぐに揃えたいとか、検証環境を作りたい、似たような構成で本番サーバを作りたいなど色々な用途に使用できると思いました。
各LayerでAMIを使って、それから起動していくこともできますが、OpsWorksなら1つのstackをボタン一発で一気に起動しアプリケーションのデプロイも可能という利点があります。
Git や Subversionレポジトリも登録できるので、移行も簡単かと思います。

自前で、構成管理のサーバを立てているという方も多いと思いますが、サーバ台数が増加すると、masterサーバが過負荷になったり、そもそもそのインスタンス代がかかってしまします。
OpsWorksは無料で使用できるので気軽に試すことが出来ます。

AWSはどこまで便利になるんだろうか。。

OpsってOpscodeのOpsはかかってないのかな…