2013年6月14日

Beanstalkのセットアップの仕組み

Elastic Beanstalk を試しに使ってみたのですが、カスタムAMIを作ろうとしたとき、その元となるAMIにはTomcatなどが入っていませんでした。
(カスタムAMIの使用方法はこちら

じゃあ、どうやってインスートールしているんだーーーと思っていたのですが、その謎が解けました。

Beanstalkから起動した場合、/var/log/yum.logを見ると、tomcat等をインストールしているのがわかります。
でも、普通に起動した場合はインストールされません。

この謎は、User Data にありました。

Beanstalkから起動したインスタンスのUserDataを確認してみると、スクリプトが埋め込まれており、
そのスクリプト内でS3からスクリプトをダウンロードして、それを実行しています。

User Dataのスクリプトはcloud-initにて実行されます。
実際は /etc/init.d/cloud-init-user-scripts から /var/lib/cloud/data/scripts のスクリプトを実行しているみたいですね。

EC2のCloud Initについてはこちらから確認できます。
いろいろ奥が深そうですね。

ドキュメントにはこのように書かれています。
Amazon Linux AMI では、次の Cloud-init アクションを使用します(/etc/sysconfig/cloudinit で設定可能)。

action: INIT(常に実行)
  • デフォルトのロケールを設定します。
  • ホスト名を設定します。
  • ユーザーデータを解析および処理します。
action: CONFIG_SSH
  • ホストプライベート SSHkeys を生成します。
  • 容易にログインおよび管理できるようユーザーのパブリック SSHkeys を .ssh/authorized_keys に追加します。
  • action: PACKAGE_SETUP
  • yum repo を準備します。
  • ユーザーデータで定義されたパッケージアクションを処理します。
action: RUNCMD
  • シェルコマンドを実行します。
action: RUN_USER_SCRIPTS
  • ユーザーデータにあるユーザースクリプトを実行します。
action: CONFIG_MOUNTS
  • エフェメラルドライブをマウントします。

ちなみにManagement Consoleから確認できるのですが、Beanstalkを使うと内部的にはCloudFormationを使っているみたいです。

CloudFormationもBeanstalkは難しいですね。。。

0 コメント:

コメントを投稿