2016-11-07 58 views
0

我熟悉厨师,并希望建立我的工作流程没有中央服务器(使用厨师零和刀零)。然而,一切工作正常,但厨师零存储在.json文件中的节点信息,这些信息相当大,并且经常更改以至于无法存储在git存储库中,并且我想在每个工作日重新扫描服务器,而不是将其定义存储在存储库中 - 这应该很容易自动化,因为我们没有很多服务器。是否有任何命令可以让我通过提供其ssh证书将现有的融合节点添加到chef-zero?我知道knife zero bootstrap <node-ip>会做的伎俩,但它也触发额外的收敛我不想发生。刀零现有节点发现

+0

为那些谁可能会发现' - 无收敛'选项:可悲的是,这并不节省节点定义 – Etki

+0

避免收敛去反对厨师的ide philosophy哲学(多次运行,只在需要时才采取行动)。所以不,厨师没有办法达到你想要的,重新思考你的需求/烹饪书籍在想要的状态下思考,你不会在乎多次运行厨师(如同任何其他SCM) – Tensibai

+0

@Tensibai而idempotence是真正的主厨的方面,无需获取节点状态并注册它。 – Etki

回答

0

整个问题是围绕错误的假设:

  • 我想厨师节点仍然存在,并管理它自己的状态。不是这样。节点状态在主厨运行结束时序列化并传递给服务器,因此无法重新发现节点,因为我试图在没有主厨的情况下尝试。如果你需要服务器属性,你可以试着用空运行列表来聚合节点;由于运行列表不会保留在节点本身上,因此这应该是安全操作。
  • 我还认为,厨师零是以某种方式管理节点状态以其他方式比使用json文件。那是我试图直接在json中指定节点角色的结果,而他们不断从run_list重建,所以我很困惑,看到我的角色不适用;这使得我发现“发现”根本就没有必要。

以下结构是足够的厨师零见到节点,并成功地收敛它:

{ 
    "name": "sonarqube.srv.company.my", 
    "automatic": { 
    // automatic attributes are managed by ohai, so be ready that next 
    // chef run may use another fqdn if you haven't pinned it with 
    // any means possible 
    "fqdn": "99-199-255-99.srv.company.my" 
    }, 
    "run_list": [ 
    "role[role-1]" 
    "recipe[cookbook::recipe]" 
    ] 
} 

如果您存储一样,在git的定义,你总是有你手头的基础设施,并可以做knife converge name:sonarqube.srv.company.my在任何时刻,并且胜过我所有的需求。我的个人工作流程包含名为managed-nodes的目录,其节点规格如上,覆盖nodes目录bin/reset包含的bash脚本。只要我将它们存储在适当的运行列表和属性中,一切都像魅力一样。但是,如果您选择类似的工作流程,请记住,如果没有成功的厨师在节点上运行,则不需要完整的属性列表。

没有持久服务器的纯粹基于git的厨师工作流程的必要性是由我想不透露的一些内部原因决定的。 好吧,我只是想幂等的可靠。

荣誉@Tensibai全力以赴。

0

只是要清楚,你基本上是在描述你自己的(坏)厨师服务器。如果你想要集中管理,你应该使用厨师服务器,并节省一些时间:)