【问题标题】:Does chef-client run on startup?厨师客户端是否在启动时运行?
【发布时间】:2016-09-06 17:23:14
【问题描述】:

chef-client 是作为服务器启动的一部分运行,还是仅在 chef-client 食谱的下一个内部集上运行?

是否有 Chef-client 食谱设置可以让服务器在启动后立即运行 chef-client(没有看到),而无需手动编辑启动脚本?

我之所以问,是因为我正在禁用透明页面(根据 this mongo doc)。

我可以轻松地让配方将正确的参数回显到正确的文件,但在重新启动时设置会切换回来。如果我知道 chef-client 将首先在重启时运行,我就不必担心会弄乱启动脚本。

【问题讨论】:

    标签: linux mongodb chef-infra chef-recipe cookbook


    【解决方案1】:

    默认情况下,chef-client 未配置为作为 init 任务运行。不过,厨师客户端可以作为守护进程运行。 chef-client 食谱可用于将 chef-client 配置为守护进程。将默认配方添加到节点的运行列表中,然后使用该说明书中的属性来配置厨师客户端的行为。

    https://docs.chef.io/ctl_chef_client.html#run-as-a-service

    如果您愿意,可以使用 chef-client::init_service recipe 将其配置为初始化服务。

    https://github.com/chef-cookbooks/chef-client/blob/master/recipes/init_service.rb

    【讨论】:

    • 确定,所以如果我将该配方添加到节点运行列表中,它将在启动时启动厨师客户端运行?
    • 首先,您必须通过在该节点上执行该配方来将 chef-client 配置为服务。下一次,当它启动/重新启动时,chef-client 将启动。
    【解决方案2】:
    1. 你可以使用 cron 运行 chef,有一个特殊的 'macro' @reboot,你应该在你的 crontab 中添加类似的行:

      @reboot /path/to/my/chef-client
      
    2. 某些 Linux 发行版支持 /etc/rc.local 文件(肯定是 Debian/Ubuntu)或执行的类似文件。

    【讨论】:

      最近更新 更多