【问题标题】:How to disable chef-client run如何禁用厨师客户端运行
【发布时间】:2014-06-12 20:09:37
【问题描述】:

我想禁用 chef-client 运行而不是停止 chef-client 服务或删除 cron 作业计划,这意味着 chef-client 将永远不会再次运行,除非手动运行。

来自 puppet 背景,我正在寻找一种替代方案,例如“puppet agent --disable”,它可以让 chef-client 服务/cron 保持运行,但不会改变任何资源。

更有可能强制每个 chef-client 运行到 --why-run 模式。在升级或应用程序部署期间非常有用。它将允许在厨师角色/食谱中进行修订/版本更改并应用于节点集,否则厨师客户端服务或 cron 必须先停止/禁用并稍后重新启用,这不是正确的方法。

我在 chef-client 二进制文件中看不到任何此类选项。

Chef 服务器和客户端版本 - 11.8.2。

-谢谢

【问题讨论】:

    标签: chef-infra


    【解决方案1】:

    这不是正确的方法。

    为什么要这么说?停止和启动服务正是为这种情况而设计的。只需使用(取决于您管理服务的首选方式)service stop chef-client,然后在您准备好恢复操作后再次运行 service start chef-client

    当我们想在将服务器上的某些配置应用到 Chef 脚本之前弄乱它们时,我们会经常使用它。这样可以确保 Chef 在我们乱七八糟的过程中不会运行并恢复我们的手动更改。

    【讨论】:

    • 启动服务将执行 Chef 运行,任何手动更改都将被还原,并且将应用引入 Chef 的新更改。我只是试图将 chef-client 服务或 chef-client 手动运行在 noop 或 --why-run 模式下,这样我每次将新代码部署到一组节点时都不必停止/启动服务。这样我可以简单地告诉厨师客户不要执行任何操作,而是继续运行。 Puppet 有 --disable 模式,它做的事情完全一样,它还可以防止节点同时启动时 puppet 服务器的高负载。
    • 我仍然不太了解您所追求的用例。如果您不希望恢复手动更改,那么为什么还要在那时启动 chef-client 呢?至于--why-run 模式和“节点同时启动时服务器的高负载”,我建议您同时查看--why-run--splay 标志,它们可以解决您描述的这些情况。
    • --disable 有用的一个实例是多人管理机器时。您不会意外地重新启用服务,您可以区分“服务从未启动/失败”和“某些人故意禁用该服务”。
    • 不是 service chef-client stop 和 service chef-client start 吗?我认为答案的停止和开始不应该在中间,而应该在结尾。
    【解决方案2】:
    sudo systemctl stop chef-client
    

    在 RHEL 7.5 64 位上为我工作

    【讨论】:

      【解决方案3】:
      /etc/init.d/chef-client stop
      

      在运行 2.6.32-504.16.2.el6.x86_64 内核的 CentOS 版本 6.6(最终版)上为我工作

      【讨论】:

        【解决方案4】:

        想要这样的东西的原因——我也在考虑 Puppet——包括:

        • 想要在系统上长时间测试某些东西,而不会受到 Chef 的破坏。实验室/虚拟测试系统并不总是足够的。

        • 不必因为我停止了特定系统上的服务而让 24/7 的工作人员收到警报

        在 /var/chef 中查找一些信号量文件很容易实现。

        【讨论】:

          最近更新 更多