Skip to content

chefのdeployリソースを使ってみる

mechamogera edited this page Aug 29, 2012 · 11 revisions

デプロイ構成

 [release dir]
 |-- current -> [release dir]/releases/20120829044144
 |-- releases
 |   |-- 20120829040421
 |   |-- 20120829042522
 |   |-- 20120829043409
 |   |-- 20120829043514
 |   `-- 20120829044144
 `-- shared
  • shared
  • リリース毎のコードに依存しない設定ファイルや一時ファイルを管理する
  • ユーザが管理する必要がある
  • railsアプリだと一般的にはconfig、log、pids、systemディレクトリが存在することになる
  • releases
  • 最新の5つのデプロイしたアプリを保持する
  • デプロイプロセスが作成する
  • current
  • 現在のリリースバージョンへのリンク
  • デプロイプロセスが作成する

デプロイフェーズ

  • デプロイはcheckout、migrate、symlink、restartの4つのフェーズを実行する
  1. checkout
  • 指定されたリビジョンをSCMリソースを使って取得する。
  • SCMリソースは取得したコードをshared/cached-copyに配置し、releasesにコピーする
  1. migrate
  • migrateが実行されるなら、Chefはデータベース設定ファイルのsharedからreleasesに配置したコードへのシンボルリンクを作成する
  • railsアプリでは、migration_commandは一般的にrake db:migrateに設定される
  1. symlink
  • releasesに配置したコードから特定のディレクトリを消してsharedからリンクをはる(デフォルトはlog、tmp/pid、public/system)
  • ユーザがsharedにリンクするディレクトリを用意する必要がある
  • 完了したらreleasesからcurrentにシンボルリンクされる
  1. restart
  • レシピのリスタートコマンドに従ってアプリがリスタートされる
Clone this wiki locally