【问题标题】:chef get converged-attributes without deploying厨师无需部署即可获得融合属性
【发布时间】:2018-09-14 15:00:21
【问题描述】:

我们正在使用 chef 来部署我们所有的堆栈。

我需要为我们部署的每个环境构建一个运行手册。 我一直在解析环境、节点和配方文件,但是我需要提取的信息越多,它就越复杂,因为我在我的应用程序中融合属性。

我想使用我们的 chef 部署生成的 converged-attributes.json 文件而不部署任何代码,因为我们无法将生产部署到构建运行手册。

我们还计划在环境存在之前构建运行手册,以向 DevOps 团队提供配置信息(例如内存要求、端口等)。

有没有办法使用任何 chef/knife 组件或库来执行以下操作?

  1. 收敛每个节点的属性
  2. 将聚合属性写入我的应用程序在 Mac OSX 上可以访问的位置。
  3. 在尝试访问任何服务器之前退出

【问题讨论】:

    标签: attributes chef-infra knife


    【解决方案1】:

    这在一般情况下是不可能的。 Chef 本质上是可执行代码,完全计算副作用的唯一方法是实际执行它。这就是chef-client 所做的,您不能在外部“聚合”节点,因此第 3 步实际上没有任何意义。您可以尝试使用为什么运行模式,但我们真的不推荐它,并且可能会删除该功能,因为它在大多数情况下弊大于利。角色和环境是静态数据,因此您可以解析和操作它们,但说明书是代码,必须在原地运行才能确切知道它们会做什么。

    【讨论】:

    • 是的,这是有道理的。由于服务器可能还没有建立起来,是否可以在 Vagrant 机器上运行它?
    • 这取决于你和你的食谱。 Chef 很乐意在任何东西上运行,但最终的属性可能会有所不同,例如,如果您的食谱会自动对 CPU 数量或 RAM 量做出反应。
    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多