【问题标题】:Chef: template 'name' from variable?厨师:来自变量的模板“名称”?
【发布时间】:2016-04-03 19:42:50
【问题描述】:

我在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
 ...

这里有什么问题?到底能不能实现?

主厨文档没有为template 提及“动态”name

【问题讨论】:

    标签: ruby chef-infra


    【解决方案1】:

    您需要将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
    

    【讨论】:

      猜你喜欢
      • 2016-11-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      相关资源
      最近更新 更多