我已经为SUSE编写了厨师食谱,以安装软件包,在其中安装软件包,但是即使厨师配置没有更改,每次厨师客户机运行时,它仍会继续运行enable命令。
配方示例示例:
zypper_package 'apache2' do
action :install
end
service 'apache2' do
action [:enable, :start]
end
请指教,如何使其幂等?
最佳答案
SuSE遇到了这种情况。至少对于我正在使用的Chef版本(12.13,不确定较新的版本),似乎无法正确确定初始化,因此内部测试(如果已启用该服务)无法正常工作。
最有趣的是,我发现在SLES 11上工作的提供程序是Chef::Provider::Service::Redhat
。我必须同时支持11和12,因此我最终在资源定义中使用了if块
service 'apache2' do
action [:enable, :start]
if node['init_package'] != 'systemd'
provider Chef::Provider::Service::Redhat
end
end
我只是花了30分钟的大部分时间来浏览所有食谱,以查找原始食谱,但是不能,我只是确认SLES SP4表现出您所描述的行为,并且上述内容已将其修复
-----> Converging <default-sles-11-sp4>...
Recipe: apache_test::default
* zypper_package[apache2] action install (up to date)
* service[apache2] action enable (up to date)
* service[apache2] action start (up to date)
关于linux - 如何使厨师食谱在SUSE OS的厨师中发挥作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46974796/