And*_*c ॐ 3 cron chef-infra chef-recipe
首先,可以(并且这是一个好习惯)厨师在特定角色的指定时间间隔运行食谱吗?
我有一个管理用户帐户和ssh身份的ruby脚本,它目前每小时运行一次cron,我想把它变成一个主厨配方,原因很明显(我希望它能在所有机器上运行).
我可以看到两种方法:
将脚本转换为模板,配方将简单地将模板呈现给给定路径,然后注册cronjob
要么
将脚本分解为资源,提供程序等,让Chef每小时运行一次.
想法?
您可以将chef-client作为守护程序(-d选项,在init脚本中使用)运行,或者在upstart,runit/daemontools或bluepill 等服务管理工具下运行.你当然也可以从cron启动它 - 只需确保不在那里运行守护进程模式:).
Chef的资源提供者采取幂等操作来将资源配置为处于所需状态.这意味着如果Chef已经在系统上运行,它只会修改资源,如果它们与配方所说的不匹配.例如,如果你有一个食谱说:
package "haproxy"
service "haproxy" do
action [:enable, :start]
end
template "/etc/haproxy/haproxy.cfg" do
source "haproxy.cfg.erb"
end
Run Code Online (Sandbox Code Playgroud)
该包将在Chef第一次运行时安装,除非从系统中删除包,否则不会再次修改包,或者您修改资源.同样,将启用haproxy服务(通过您平台的服务管理工具,通常是/etc/rc*.d中的符号链接),然后启动(例如,通过/etc/init.d/haproxy start).最后,只有当模板内容发生变化时,Chef才会呈现模板的新版本.对于模板,它根据SHA256校验和确定.
有一些例外 - 如果没有提供某种限定符条件,execute,script和ruby_block资源就不是幂等的.
此外,Chef在使用服务器时没有"一次性"或"一次性"配方运行列表.最近在Chef邮件列表上有一个关于该主题的帖子.
| 归档时间: |
|
| 查看次数: |
3535 次 |
| 最近记录: |