Capistrano デプロイメントと互換性のある Puppet を介したサーバーのプロビジョニングに問題があります。puppetlabs/apacheを使用して仮想ホストをセットアップしていますが、存在することを (正当に) チェックしていdocroot
ます (存在しない場合は作成し、ネストされたディレクトリの問題の可能性を無視します)。ただし、truedocroot
は であり、Capistrano はデプロイ時に/var/www/vhosts/${::fqdn}/current/public
適切なシンボリック リンク (からcurrent
へ) を作成し、そのディレクトリ パスが事前に Puppet によって設定されている場合 (シンボリック リンクではなく実際のディレクトリであるため、および空ではない)。releases/{releasestamp}
current
私は次のようなものを追加することを考えました:
file { "/var/www/vhosts/${::fqdn}/current":
ensure => 'link',
target => '/tmp/initial'
}
に空のファイルを設定して、/tmp/initial/public/index.html
Capistrano がcurrent
デプロイ時に適切なリリースを参照できるようにします。ただし、これは、誰かが (たとえば、構成の変更を適用するために) プロビジョニングを再実行するたびに、シンボリック リンクがジャンク ディレクトリに再配置されることを意味します (その時点で存在していたとしても)。
助言がありますか?プロビジョニングをアプリケーション プロビジョニングとサーバー プロビジョニングに分割し、デプロイ時に Capistrano にアプリケーション プロビジョニングを実行させることを検討しましたが、これは簡潔に保ちたいと思います。