Chef cron_d 资源操作未考虑条件
Chef cron_d resource action not considering conditions
我使用厨师客户端 12.21.12 定义了如下食谱
cron_d 'cookbooks_report' do
action ((node.roles.include?('dev') && node.tags.include?('dev-env'))? :create : :delete
minute '0'
hour '0'
weekday '1'
command .....
end
有条件的操作 - 这没有按预期工作。
action ((node.roles.include?('dev') && node.tags.include?('dev-env'))? :create : :delete
action
是否支持 cron_d 资源中的条件? - 看起来支持,参考我的评论。
我是否需要使用 not_if 或 if_only 来应用该条件? - 不需要这个。
两者之间有什么显着差异吗
node.roles.include?('value')
和 node['role'].include?('value')
?
如何查看哪一个在此处有效?
看起来问题是我的本地开发使用了 chef-client 14 和 运行 chef-client 12 版本的节点。
node.roles.include('value')
-> 食谱中的 chef-client 14 抛出了语法错误。因此更新为 node['roles'].include('value')
这已成功推送到 chef infra 服务器。
但节点 chef-client 版本 12 无法解析它并始终假定为真。
下面是带有节点 ['role'].include('value').
的 Chef 12 客户端
* cron_d[demo-cron] action create
* file[demo-cron legacy named cron.d file] action delete (skipped due to only_if)
* template[/etc/cron.d/demo-cron] action create
- create new file /etc/cron.d/demo-cron
- update content in file /etc/cron.d/demo-cron from none to 15e86f
所以我在我的食谱中更新了 node.roles?include('value')
并将其推送到 chef-server 降低了我的 chef-client 版本。然后这就成功了。
我使用厨师客户端 12.21.12 定义了如下食谱
cron_d 'cookbooks_report' do
action ((node.roles.include?('dev') && node.tags.include?('dev-env'))? :create : :delete
minute '0'
hour '0'
weekday '1'
command .....
end
有条件的操作 - 这没有按预期工作。
action ((node.roles.include?('dev') && node.tags.include?('dev-env'))? :create : :delete
action
是否支持 cron_d 资源中的条件? - 看起来支持,参考我的评论。
我是否需要使用 not_if 或 if_only 来应用该条件? - 不需要这个。
两者之间有什么显着差异吗
node.roles.include?('value')
和 node['role'].include?('value')
?
如何查看哪一个在此处有效?
看起来问题是我的本地开发使用了 chef-client 14 和 运行 chef-client 12 版本的节点。
node.roles.include('value')
-> 食谱中的 chef-client 14 抛出了语法错误。因此更新为 node['roles'].include('value')
这已成功推送到 chef infra 服务器。
但节点 chef-client 版本 12 无法解析它并始终假定为真。
下面是带有节点 ['role'].include('value').
的 Chef 12 客户端 * cron_d[demo-cron] action create
* file[demo-cron legacy named cron.d file] action delete (skipped due to only_if)
* template[/etc/cron.d/demo-cron] action create
- create new file /etc/cron.d/demo-cron
- update content in file /etc/cron.d/demo-cron from none to 15e86f
所以我在我的食谱中更新了 node.roles?include('value')
并将其推送到 chef-server 降低了我的 chef-client 版本。然后这就成功了。