[英]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)您问题的原始解决方案:
用刀和文件:
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
。
在这个食谱中
在配方中你可以做一个node.set['My']['Attribute'] = "/path/to/file"
B)另一种可以更有用的方法:
在实际的install_jboss
周围编写包装器烹饪书。 这包括:
depends 'install_jboss'
(请参阅元数据文档中的depends语法) 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.