我熟悉厨师,想要在没有中央服务器的情况下建立我的工作流程(使用厨师零和刀零)。一切正常,但是,chef-zero存储有关.json文件中节点的信息,这些文件相当大并且经常更改以存储在git存储库中,我想在每个工作日重新扫描服务器而不是将它们的定义存储在存储库中 - 这应该很容易自动化,因为我们没有很多服务器。是否有任何命令可以让我通过提供他们的ssh凭证将现有的融合节点添加到chef-zero?我知道knife zero bootstrap <node-ip>
会做到这一点,但它也会触发额外的收敛,我不想发生。
答案 0 :(得分:0)
整个问题是基于错误的假设:
run_list
不断重建的,所以我很困惑看到我的角色不适用;这使得&#34;发现&#34;我说的根本没必要。以下结构足以让chef-zero看到节点并成功收敛它:
{
"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
上包含bash脚本的bin/reset
目录。只要我用适当的运行列表和属性存储它们,一切都像魅力一样。但是,如果您选择类似的工作流程,请记住,如果没有成功的厨师在节点上运行,您就不必拥有完整的属性列表。
纯粹基于git的厨师工作流程没有持久服务器的必要性由我想不透露的一些内部原因决定。 好的,我只想要幂等的ansible。
Kudos竭尽全力去@Tensibai。
答案 1 :(得分:0)
为了清楚起见,您基本上是在描述制作自己的(糟糕的)Chef Server。如果您想要集中管理,您应该只使用Chef Server并节省一些时间:)