我有一个角色,我需要使用特定于该节点的值:
default_attributes "varnish" => {
"listen_address" => node['ipaddress'],
"listen_port" => "80",
# ...
}
然而,这可能是:NameError: undefined local variable or method
node'for role [caching_server]:Chef :: Role`。
厨师 - 客户评估“角色”吗?我是否需要以稍微不同的方式访问此变量?或者是否应该在角色之外定义此属性?
答案 0 :(得分:4)
角色是静态的,并在上传时评估。
这就是为什么角色被视为邪恶:全局,静态的东西,你不能对它们进行版本化。
社区现在遵循Berkshelf方式(http://www.slideshare.net/opscode/the-berkshelf-way-20882903,http://www.youtube.com/watch?v=hYt0E84kYUI)。
其中一个原则是将逻辑从您的角色推向配方,您可以更好地控制节点的配置方式。