1

私は Chef を初めて使用し、AWS OpsWorks 環境を実行しており、Chef 11.10 を介してコードをデプロイしています。aliasapache2 を実行しているインスタンスの vhost ファイル内に次の2 行を作成しようとしています。

alias /foo /my/dir/name/
alias /bar /another/my/dir/name

OpsWorks がすべてのインスタンスに正常にプルして配布している S3 バケットにカスタム クックブックがあります。そのカスタム クックブックには、次のようなレシピがありvhosts.rbます。

include_recipe "apache2"

web_app "Test1" do
  server_name "Web1.com"
  server_aliases ["www.Web1.com"]
  allow_override "all"
  docroot "/srv/www/web_test/current/sites/"
end

これにより vhost ファイルが正常に作成されますが、エイリアス行を追加する方法がわかりません。OpsCode のデフォルトの apache2 クックブックを調べましたがaliasdefault.rbmod_aliasweb_app、またはweb_app.conf.erb.

これらのエイリアス行を追加するにはどうすればよいですか? これは簡単だと思いますが、それを理解しようとして溺れています。どんな助けでも大歓迎です。

4

1 に答える 1

4

apache2 クックブックのプロバイダーは、生成された conf ファイルへのディレクティブのweb_app追加をサポートしていません。Alias目的を達成する最も簡単な方法は、テンプレート ファイルを拡張templates/default/web_app.conf.erbし、次のようなブロックを追加することです。

<% if @aliases -%>
   <% @aliases.each do |alias| -%>
     Alias <%= alias %>
   <% end -%>
<% end -%>

次に、web_app呼び出しを次のように変更します。

web_app "Test1" do
  server_name "Web1.com"
  server_aliases ["www.Web1.com"]
  allow_override "all"
  docroot "/srv/www/web_test/current/sites/"
  aliases ["/foo /bar", "/baz /meh"]
end

web_app定義は、追加のパラメーターをテンプレートに渡し、それらをインスタンス変数として使用できるようにします。

注: テンプレート ファイルを変更するためのさまざまな複雑さの手法があります。S3ファイルで直接変更するか、本格的なラッパークックブックを作成してBerkshelf経由で管理できます。

于 2014-07-09T21:20:59.643 に答える