gpt4 book ai didi

cron - Chef - 重复 Recipe 执行

转载 作者:行者123 更新时间:2023-12-05 01:19:26 25 4
gpt4 key购买 nike

首先, Chef 可以(并且这是一种好的做法)以指定的时间间隔为特定角色运行 Recipe 吗?

我有一个管理用户帐户和 ssh 身份的 ruby​​ 脚本,它目前每小时在 cron 上运行一次,出于显而易见的原因,我想把它变成一个 Chef Recipe (我希望它在所有地方都有机器)。

我可以看到两种方法:

将脚本转换为模板,配方将简单地将模板渲染到给定路径,然后注册一个 cronjob

将脚本分解为资源、提供者等,并让 Chef 每小时运行一次。

想法?

最佳答案

您可以将 chef-client 作为守护进程运行(-d 选项,在 init 脚本中使用),或在服务管理工具(如 upstart)下运行, runit/daemontools或蓝药丸。你当然也可以从 cron 启动它——只要确保不要在那里运行守护程序模式 :)。

Chef 的资源提供者采取幂等操作将资源配置为所需状态。这意味着如果 Chef 已经在系统上运行,它只会在资源与配方所说的不匹配时修改资源。例如,如果您有一个 Recipe ,上面写着:

package "haproxy"

service "haproxy" do
action [:enable, :start]
end

template "/etc/haproxy/haproxy.cfg" do
source "haproxy.cfg.erb"
end

该软件包将在 chef 首次运行时安装,并且不会再次修改,除非该软件包已从系统中删除,或者您修改了资源。同样,haproxy 服务将被启用(通过您平台的服务管理工具,通常是/etc/rc*.d 中的符号链接(symbolic link))然后启动(例如,通过/etc/init.d/haproxy start)。最后,只有当模板的内容发生变化时,Chef 才会渲染模板的新版本。对于模板,它根据 SHA256 校验和确定这一点。

有一些异常(exception) - 执行、脚本和 ruby​​_block 资源如果不提供某种限定符条件就不是幂等的。

此外,Chef 在使用服务器时没有“一次性”或“一次性” Recipe 运行列表。有一个 thread on the Chef mailing list最近关于这个话题。

关于cron - Chef - 重复 Recipe 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4913521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com