厨师:模板'名称'从变量?

时间:2016-04-03 11:28:20

标签: ruby chef

我在attributes/default.rb中有一个属性:

default["host_name"] = "domain.com"

并希望使用该属性的主机名创建NGINX的配置:

...
template "/etc/nginx/conf.d/#{@host_name}.conf" do
  source 'domain.conf.erb'
  owner 'root'
  group 'root'
  mode '0644'
end
...

但在构建过程中 - Chef无法看到host_name

 ...
 [14:18:28][Step 1/1] Recipe: nginx_proxy::default
 [14:18:28][Step 1/1]   * template[/etc/nginx/conf.d/.conf] action create
 [14:18:28][Step 1/1]     - create new file /etc/nginx/conf.d/.conf
 [14:18:28][Step 1/1]     - update content in file /etc/nginx/conf.d/.conf rom none to cc9a26
 ...

这里有什么问题?它可以实现吗?

厨师文档不会对"动态"做任何事情。 name的{​​{1}}。

1 个答案:

答案 0 :(得分:2)

您需要使用node对象access its attributes。您尝试使用@host_name访问的是本地变量。

以下内容应该有效:

template "/etc/nginx/conf.d/#{node['host_name']}.conf" do
  source 'domain.conf.erb'
  owner 'root'
  group 'root'
  mode '0644'
end