サンプルテンプレートに基づいて、カスタムbootstrapテンプレートに取り組んでいます。ワークステーションから新しいサーバーに検証キーを取得する例と、私が言えることから見ていきます。キーパスは、変数validation_keyのknife.rbで指定されています。また、bootstrapテンプレートでは、<%= validate_key%>でエコーされます。
これは魔法ですかRubyもの、ナイフで処理されるvalidation_keyパス変数であり、テンプレートを処理するときにコンテンツが別の変数に読み込まれます。これにより、パスが次の文字列に変換されます。そのパスにあるファイルの内容?
Knife.rbでfoo =/tmp/test.txtを宣言した場合、<%= foo%>を使用してbootstrapテンプレートのtest.txtの内容にアクセスできますか?
FROM: https://github.com/opscode/chef/blob/master/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb
(
cat <<'EOP'
<%= validation_key %>
EOP
) > /tmp/validation.pem
<%
および%>
ビジネスは Rubyのテンプレートシステム の一部であり、Chefでも使用されています。 validation_key
への参照は、bootstrapテンプレートコードによって渡されるローカル変数です。
Chef内でのERBテンプレートのより一般的な使用法は、たとえばApacheコミュニティクックブックから構成ファイルを作成することです。
templates/default/ports.conf.erb
<% @Apache_listen_ports.each do |port| %>
Listen <%= port %>
<% end %>
このリソースは、レシピのどこかに作成されます。
recipes/default.rb
template "/etc/Apache2/ports.conf" do
source "ports.conf.erb"
variables :Apache_listen_ports => [80, 443]
end
最初に重要なことは、ERBによって実行されるコードを記述するための<%
の使用と、式の結果(通常は変数のみ)を返す<%=
の使用に注意することです。