【问题标题】:package name doesn't match service name包名称与服务名称不匹配
【发布时间】:2015-08-12 20:12:01
【问题描述】:

我正在尝试编写可在 ubuntu 和 debian 下运行的食谱。 我在 ubuntu 和 debian 中使用了同名的包。但在 debian 中,包名与服务名不匹配。

示例: ubuntu - package name = foo, service = foo. debian - package name = foo, servie = xxxx

我需要名称来明确启动/重新启动服务或通知服务。那么,使用正确的服务名称的最佳方法是什么?当然,我可以在 ubuntu 和 debian 的属性文件中分别预定义名称,但我想尝试自动执行此操作。

【问题讨论】:

  • 可能有人熟悉这种情况。我说的是 iptables-persistent 包。它已在最新的 debian 中进行了更改。您可以安装 iptables-persistent 但服务是 netfilter-persistent。问题是,当前的食谱正在使用 ubuntu 值得信赖,我需要向后兼容。

标签: chef-infra cookbook recipe


【解决方案1】:

由于在许多情况下都会出现这种差异,因此厨师的文档中甚至包含了一个示例,关于 service resource:

service 'crond' do
  case node['platform']
  when 'redhat', 'centos', 'scientific', 'fedora', 'amazon'
    service_name 'crond'
  when 'debian', 'ubuntu', 'suse'
    service_name 'cron'
  end
  action [:start, :enable]
end

【讨论】:

  • 感谢您的重播。我想尝试找到一个解决方案,可以避免每次更改服务名称时都编辑说明书。
  • 您也可以包含不同平台版本的条件。尽量不要使事情过于复杂 - 任何事情都可能随着新的操作系统版本而改变
猜你喜欢
  • 2015-07-31
  • 2016-04-11
  • 2014-10-13
  • 2020-12-14
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
相关资源
最近更新 更多