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

Chef infra 如何在Chef节点上设置属性?,chef-infra,knife,Chef Infra,Knife,我似乎错过了厨师的一些明显的东西。我想在一个节点(文件路径)上设置一个属性,我的烹饪书可以访问该属性。这是因为某个文件位于不同节点的不同位置 我假设这将在JSON/RB文件或配方中,所以我可以将其视为代码,检查版本控制,等等 一个类似-的解决方案将其作为刀子命令,但如前所述,我更愿意使用配方或文件之类的东西(似乎更具体:-) 像这样的解决方案建议一个配方,但我是否在运行列表中指定特定于节点的receipe(类似于 knife bootstrap serverX ...-r unstall_jbo

我似乎错过了厨师的一些明显的东西。我想在一个节点(文件路径)上设置一个属性,我的烹饪书可以访问该属性。这是因为某个文件位于不同节点的不同位置

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

一个类似-的解决方案将其作为刀子命令,但如前所述,我更愿意使用配方或文件之类的东西(似乎更具体:-)

像这样的解决方案建议一个配方,但我是否在运行列表中指定特定于节点的receipe(类似于

knife bootstrap serverX ...-r unstall_jboss::serverX_setup,install_jboss::small_nfr_server...
我不想使用环境,因为这些信息是特定于节点的,而不是特定于环境的

谢谢-就像我说的,我觉得我遗漏了一些明显的问题

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

  • 用刀和锉刀:

    knife node edit
    knife node show-F json>nodename.json
    相同,使用您喜爱的编辑器编辑json文件,然后从文件nodename.json中编辑
    knife node

  • 在这个配方中

    在配方中,您只需执行一个
    节点。设置['My']['Attribute']=“/path/to/file”


  • B) 另一种方法可能更有用:

    围绕实际的
    install\u jboss
    编写包装器食谱。 这包括:

    • 添加
      依赖于“install_jboss”
      (请参阅文档中的依赖语法)
    • 在属性文件中设置所需的属性(警告:如果有从其他属性插入的属性,则必须在之后重新加载包装的cookbook属性文件,或在包装器中重新定义它们)
    • 使用
      include_recipe'install_jboss:small_nfr_server'
      调用包装中的包装食谱
      default.rb
      ,此时包装中的属性优先于
      install_jboss
      cookbook中的属性

    介绍了一种在不干扰其他属性的情况下为节点设置某些特定属性的方法(对自动化有用):


    谢谢每个节点需要一本包装器烹饪书还是每个节点只需要一个属性文件?我是否为该节点明确调用了正确的包装器cookbook/属性文件,或者在对该节点运行刀引导时是否可以自动拾取该文件?我会为每种类型的节点创建一个cookbook,因此,如果将来必须创建两个具有相同设置的节点,则一切就绪;)您仍然必须为节点提供正确的运行列表。现在,节点和烹饪书之间没有神奇的联系(通常情况下,与节点名称耦合是一个糟糕的用例),谢谢。我正在部署许多服务器,它们之间可能有(小)差异。从您的e'e所说的来看,chef似乎只有一个“坏案例”来处理这种情况?这超出了您应该致力于服务器标准化的范围,没有配置管理系统能够很好地处理这种情况。IP(主机名)可以从chef中的ohai属性派生,并允许配置的参数化模板文件。但我猜不出你说的区别
    knife exec -E 'nodes.find("name:example.com") {|n| n.default["custom"]["attribute"]="value"; n.save}'