繁体   English   中英

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

[英]How To Set An Attribute on a Chef Node?

我似乎错过了与Chef明显不同的东西。 我想在我的cookbook可以访问的节点(文件路径)上设置一个属性。这是因为某个文件位于不同节点上的不同位置。

我假设这将是一个JSON / RB文件或配方,所以我可以将其视为代码,检查版本控制等。

我如何使用刀编辑ec2节点的厨师属性这样的解决方案 - 将其作为Knife命令,但如上所述,我宁愿有类似食谱或文件的东西(似乎更有形:-))

如何在Chef客户端上设置节点属性的解决方案 建议一个食谱,但是我在运行列表中指定我的节点特定的recipe(类似于

knife bootstrap serverX ...-r unstall_jboss::serverX_setup,install_jboss::small_nfr_server...

我宁愿不使用环境,因为此信息特定于节点,而不是环境。

谢谢 - 就像我说的,我觉得我错过了一些明显的东西

A)您问题的原始解决方案:

  1. 用刀和文件:

    knife node edit <nodename>knife node show <nodename> -F json > nodename.json ,使用您喜欢的编辑器编辑json文件,然后knife node from file nodename.json编辑knife node from file nodename.json

  2. 在这个食谱中

    在配方中你可以做一个node.set['My']['Attribute'] = "/path/to/file"


B)另一种可以更有用的方法:

在实际的install_jboss周围编写包装器烹饪书。 这包括:

  • 添加一个depends 'install_jboss' (请参阅元数据文档中的depends语法)
  • 在属性文件中设置您希望的属性(警告是否有从其他属性插入的属性,您必须在之后重新加载包装的cookbook属性文件,或者在您的包装器中重新定义它们)
  • 使用include_recipe 'install_jboss:small_nfr_server'在包装器default.rb调用包装的cookbook配方,此时包装器中的属性优先于install_jboss cookbook中的属性。

以设置节点某些特定属性,而不会干扰其它属性(自动化有用)的一种方法描述在这里

knife exec -E 'nodes.find("name:example.com") {|n| n.default["custom"]["attribute"]="value"; n.save}'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM