我已经为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/

10-16 23:56