如何在Chef客户端上设置节点属性?

时间:2012-11-14 15:29:57

标签: chef

我正在使用chef-client cookbook将计算机配置为主厨客户端。创建此客户端时如何配置节点属性?

我不想knife node edit。我的目标是在创建此节点时设置一些节点属性,可能是通过向JSON文件添加内容。

更新:

我正在创建数百个节点,这些节点将使用此脚本(see the gist)来引导Chef-clients。脚本中的Node_name对于每个节点都是不同的。同样,我想为将它们组合在一起的节点设置一个自定义属性。

比如说我想将属于特定项目的所有节点组合在一起。我在想我会向Node添加一个属性“project_id”。这样我以后可以搜索属于项目的所有节点。这对于部署特别有用 - 同时尝试查找属于特定项目的所有db_master角色/ webserver角色/ memcached角色。

所以我想要做的是:脚本中应该有一些占位符(您在gist中看到),我可以在其中添加自定义属性,如project_id或其他任何节点。这可能吗?

3 个答案:

答案 0 :(得分:4)

以上工作或您可以使用类似

之类的东西在食谱中创建它们
Node[attribute_name]

为了与您的json功能保持一致,您可以利用属性或标签

添加属性会在您生成的json文件中使用类似这样的内容。可以通过参数或csv / xml输入

在脚本中生成属性名称和值
{

    "test_attribute" : "testvalue"
}

在您链接的示例中,他们在chef-client哈希

下设置属性
"chef_client": {
 "server_url": "http://ec2-23-20-173-176.compute-1.amazonaws.com:4000",
 "interval": "20"
}

这些属性是作为普通节点属性创建的,例如node["chef_client"]["interval"]可以访问。

这有意义吗?

答案 1 :(得分:1)

为客户端提供角色并在其中添加属性或使用chef-client的-j参数传递包含节点数据的.json文件。

答案 2 :(得分:-4)

假设您要将配方鼠标添加到节点target1。

knife node run_list add target1 "recipe[mouse]"

它应该适用于所有属性。