Chef在JSON角色中使用node_name变量

Chef在JSON角色中使用node_name变量,json,chef-infra,Json,Chef Infra,有没有办法在角色中使用NODE_NAME值? 事实上,我正在编写一个设置节点主机名的基本角色,我希望使用节点名称作为“短主机名” 节点名称已在/etc/chef/client.rb中正确配置 非常感谢!!!:) 这不可能直接实现,角色只是静态JSON数据。您可以在配方代码中使用某种字符串替换,但这需要先在使用该属性的烹饪书中进行更改。您可以尝试“{node.name}”我想在角色内部。。?我认为这是行不通的,需要在一本食谱内完成。虽然角色是由Chef服务器解释的。@StephenKing是我的疑

有没有办法在角色中使用NODE_NAME值? 事实上,我正在编写一个设置节点主机名的基本角色,我希望使用节点名称作为“短主机名”

节点名称已在/etc/chef/client.rb中正确配置


非常感谢!!!:)

这不可能直接实现,角色只是静态JSON数据。您可以在配方代码中使用某种字符串替换,但这需要先在使用该属性的烹饪书中进行更改。

您可以尝试
“{node.name}”
我想在角色内部。。?我认为这是行不通的,需要在一本食谱内完成。虽然角色是由Chef服务器解释的。@StephenKing是我的疑问,但是角色是由Chef客户端检索的,并在配方属性文件(覆盖其级别)和环境之后解释的,但我可能是错的。我也不确定。。但如果我们有JSON角色。。不确定这些是否可以通过ruby进行解释。可能@coderanger知道:-)@StephenKing我仍然不确定,但是它们是由chef客户机按照定义的顺序加载的,所以我假设当您在资源中使用属性时(这次在ruby上下文中),属性本身的插值应该可以工作。您好@coderanger,非常感谢!:-)我将以不同的方式处理:-)
{
   "name": "Chef-RHEL",
   "description": "Chef-RHEL role",
   "json_class": "Chef::Role",
   "default_attributes": {
     "set_fqdn": "*.example.com",
     "system": {
       "timezone": "Europe/Paris",
       "short_hostname": "{NODE_NAME}",
       "domain_name": "example.com"
     }
   },
   "override_attributes": {
   },
   "chef_type": "role",
   "run_list": [
                "recipe[system::default]"
   ],
   "env_run_lists": {
   }
}