【问题标题】:need clarification regarding the management of nodes, roles within Chef需要澄清有关节点管理、Chef 中的角色
【发布时间】:2019-01-03 17:54:16
【问题描述】:
我已经阅读了很多关于厨师的文档,从食谱到角色以及刀具工具的使用。我对运行配方感到满意,并使用角色将它们与节点相关联。我不满意的方面是 UI 和节点、角色等的内部管理。请注意,我来自 Ansible,其中每个配置都可以在 repo 中进行版本控制,例如 git。
- 如何在 UI 中跟踪节点等的变化 - 是否有审计工具可以让我们看到随着时间的推移发生了什么变化?我在网上搜索了一个演示,但发现的信息很少。
- 是否可以同步厨师服务器和一个说 git 存储库,所以至少可以在那里看到节点、角色等定义的变化?在 ansible 中,我可以在配置文件中保持我的期望并让工具导入它。有没有办法做类似的事情?我读到了“基础设施即代码”,但它不是违背了这里的目的,即这段代码不能轻易地进行版本控制吗?
【问题讨论】:
标签:
chef-infra
inventory
recipe
【解决方案1】:
让我试着澄清一下……
- 如何在 UI 中跟踪节点等的变化 - 是否有审计工具可以让我们看到随着时间的推移发生了什么变化?我在网上搜索了一个演示,但没有找到任何信息。
有很多方法可以收敛一个节点(运行你的配方),一旦收敛完成,节点属性就会被存储。它们的存储位置取决于您如何聚合节点:
-
服务器\客户端架构:节点属性将存储在 Chef 服务器上
-
零\本地模式架构:节点属性将存储在本地的json文件中
如果你配置了knife correctly(参见client.rb),你就可以使用knife 来检索节点属性。 for instance:
$ knife search "name:node.example.com" --long
- 是否可以同步厨师服务器和一个说 git 存储库,所以至少可以在那里看到节点、角色等定义的变化?在 ansible 中,我可以在配置文件中保持我的期望并让工具导入它。有没有办法做类似的事情?我读到了“基础设施即代码”,但它不是违背了这里的目的,即这段代码不能轻易地进行版本控制吗?
当然可以。只需将您所有的食谱置于源代码控制管理之下。
如果您使用服务器\客户端架构,则在完成说明书开发和测试后,upload your cookbooks to chef-server 然后在感兴趣的节点上运行 chef-client。
【解决方案2】:
由于我不熟悉 Chef 的 UI,所以我将尝试简要回答您的第二个问题。
你有两个选择:
- 如果您想坚持角色,可以关注Policyfile model/pattern。
- 您可以放弃角色。您可以切换到包装食谱模式,将食谱视为角色。例如,您创建元(包装器)食谱 web_server 而不是 web_server 角色,您只需在其中包含其他食谱或设置属性。您可以像任何其他食谱一样对包装器食谱进行版本控制。对于节点,您只分配包装器说明书,或者每个节点类型只有一个包装器说明书。