需要说明节点管理,Chef中的角色

时间:2019-01-03 17:54:16

标签: chef inventory recipe

我已经阅读了很多有关厨师的文档,从食谱到角色以及其刀具的用法。我对运行配方感到满意,并使用角色将其与节点关联。我不满意的方面是UI和节点,角色等的内部管理。请注意,我来自Ansible,可以在诸如git之类的仓库中对每个配置进行版本控制。

  • 如何在UI中跟踪节点等的更改-是否有审核工具可让我们查看随着时间的变化?我在网上搜索了一个演示,但发现的信息很少。
  • 是否可以同步Chef服务器和一个git仓库,以便至少可以在其中看到节点,角色等的定义?在Ansible中,我可以将期望保留在配置文件中,并让工具导入它。有什么办法可以做类似的事情吗?我读过有关“基础结构即代码”的信息,但这是否违背了该代码无法轻松进行版本控制的目的?

2 个答案:

答案 0 :(得分:2)

让我尝试澄清一下...

  
      
  • 如何在UI中跟踪节点等的更改-是否有审核工具可让我们查看随着时间的变化?我在网上搜索了一个演示,但发现的信息很少。
  •   

有很多方法可以收敛节点(运行配方),一旦收敛,就可以存储节点属性。它们的存储位置取决于您如何聚合节点:

  • 服务器\客户端架构:节点属性将存储在Chef服务器上
  • 零\本地模式体系结构:节点属性将本地存储在json文件中

如果您配置了knife correctly(请参见client.rb),则可以使用利刃来获取节点属性。 for instance

$ knife search "name:node.example.com" --long
  
      
  • 是否可以同步Chef服务器和一个git仓库,以便至少可以在其中看到节点,角色等的定义?在Ansible中,我可以将期望保留在配置文件中,并让工具导入它。有什么办法可以做类似的事情吗?我读过有关“基础结构即代码”的信息,但这是否违背了该代码无法轻松进行版本控制的目的?
  •   

确保有可能。只需将所有菜谱置于源代码管理管理下即可。 如果您使用服务器\客户端体系结构,则在完成食谱开发和测试后,upload your cookbooks to chef-server,然后在感兴趣的节点上运行Chef-client。

答案 1 :(得分:1)

由于我不熟悉Chef的UI,因此我将尝试简要回答您的第二个问题。

您有两个选择:

  1. 如果您想坚持自己的角色,可以遵循Policyfile模型/模式。
  2. 您可以放弃角色。您可以切换到包装食谱模式,在其中将食谱视为角色。例如,您可以创建元(包装)食谱web_server而不是web_server角色,而仅在其中包含其他食谱或设置属性。您可以像其他任何食谱一样对包装食谱进行版本控制。对于这些节点,您只能分配包装食谱,或者每个节点类型只有一个包装食谱。