我正在使用chef-client cookbook将计算机配置为主厨客户端。创建此客户端时如何配置节点属性?
我不想knife node edit
。我的目标是在创建此节点时设置一些节点属性,可能是通过向JSON文件添加内容。
更新:
我正在创建数百个节点,这些节点将使用此脚本(see the gist)来引导Chef-clients。脚本中的Node_name对于每个节点都是不同的。同样,我想为将它们组合在一起的节点设置一个自定义属性。
比如说我想将属于特定项目的所有节点组合在一起。我在想我会向Node添加一个属性“project_id”。这样我以后可以搜索属于项目的所有节点。这对于部署特别有用 - 同时尝试查找属于特定项目的所有db_master角色/ webserver角色/ memcached角色。
所以我想要做的是:脚本中应该有一些占位符(您在gist中看到),我可以在其中添加自定义属性,如project_id或其他任何节点。这可能吗?
答案 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]"
它应该适用于所有属性。