連載
» 2013年04月17日 17時55分 公開

AWS OpsWorksアプリケーション運用の勘所(1):AWS OpsWorksって何? から、運用しやすくなる下準備のポイントまで (2/5)

[あけり,@IT]

運用しやすさを重視した準備の進め方

 ここからは、今後の「運用のしやすさ」をポイントに導入準備の手順を見ていきます。ポイントに絞って解説しますので、Chefやgithubの操作については別途ドキュメントなどを参照してください。

カスタムレシピの準備

 まずは、カスタムレシピの準備をします。自分でいちからcookbookを作っても構いませんが、手間を考えるとAWSがgithub上に用意しているRecipeをforkして自分のgithubアカウントに移してから用意する方が楽でしょう。ここではその方法で作成していきます。

https://github.com/aws/opsworks-cookbooks

 自分のリポジトリにforkしたら、まずはアプリケーションごとにbranchを切っておくと後々便利です。今回はEC-CUBEを使うので、eccubeというブランチを切りました。これで自分用にResipeをカスタマイズして使えるようになります。

 利用時はstackにCustom chef recipeを設定しておくと良いでしょう。設定は、Layerの設定のcustom recipeのところで指定します。

 レシピのオーバーライドはできないようで、built in recipeと同じ名前だと実行されませんので注意が必要です。

ディレクトリのパーミッションの設定

 AWS OpsWorksでは、ディレクトリの所有者がdeploy:rootになっているため、アプリケーションの書き込みができなくなってしまいます。そもそもローカルのディスクに書き込むようなものはスケーリング時に問題になるので「やめとけ」って話なんでしょうが、オープンソースのさまざまなアプリケーションの中にはローカルにファイルを書き出すものが結構あります。

 ですから、これをdeploy:apacheにして、パーミッションを775にするか、もしくはapache:rootにして755にするかのどちらかに変更しておく方が都合が良さそうです。ここは少しrecipeをいじる必要があるでしょう。

 そこでカスタムレシピの出番となります。

 current/htmlとcurrent/dataの2つとその配下のディレクトリに対してdeploy:apache 0775にするrecipeを書きます。筆者は残念ながらchefにはあまり詳しくないので、再帰的にディレクトリの情報を書き換える方法が見つからず、今回はスクリプトを使った方法で実施しました。下記Rubyのコードでは、単純に2つのディレクトリに対してchownとchmodを実行させています。

#
# Cookbook Name:: deploy
# Recipe:: eccube
#
node[:deploy].each do |application, deploy|
  if deploy[:application_type] != 'php'
    Chef::Log.debug("Skipping deploy::php application #{application} as it is not an PHP app")
    next
  end
  script "chmod_applicaton" do
    Chef::Log.info("tottokug-Log permission change ")
    interpreter "bash"
    cwd deploy[:deploy_to]
    user "root"
    code <<-EOH
    chmod -R 775 current/html current/data
    chown -R deploy:apache current/html current/data
    EOH
  end
end

 上記のようなファイルをcookbookのdeploy/recipes/eccube.rbとして追加します。また、cookbookのdeploy/metadata.rbにも下記の1行追加しておきましょう。

recipe "deploy::eccube", "permission"

 ここまでの作業が終わったらgithubにpushしておきましょう。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。