据说我使用了 onlyif 参数,但服务类型似乎不存在该参数。
我该怎么做才能仅在安装后启用此服务?它是用二进制安装程序安装的,因此测试安装目录是否存在
class scom {
service { 'scx-cimd':
ensure => running,
enable => true,
hasstatus => true,
hasrestart => true,
onlyif => "test -f /opt/microsoft/scx"
}
}
当前的错误消息是“无效参数 onlyif”,因为服务没有 onlyif 参数。仅当安装目录存在时,如何才能启用此服务?
答案1
服务类型(3.x,2.x) 没有 onlyif 参数,该参数是 exec 类型的一部分 (3.x,2.x。
要做你想做的事,有两种方法。第一种方法是正常且首选的做事方法。第二种方法是一个也可以工作的 hack,理想情况下服务的 chkconfig 应该是一个单独的执行程序,但是即使已经以这种方式配置了服务,chkconfiging 服务也没有坏处。
选项 1. 编写事实以查看服务是否已安装,并在服务类型周围添加条件:
# service_scx_installed.rb Factor.add('service_scx_installed') 做 设置代码做 文件.存在吗?('/opt/microsoft/scx') 结尾 结尾 # scom.pp 类 scom { 如果 $service_scx_installed { 服务{'scx-cimd': 确保=>运行, 启用=>真, 状态 => true, 已重新启动=> true, } } }
选项 2. 将所有逻辑放入大型执行程序中:
exec {'启动并 chkconfig scx 服务': 命令 => 'chkconfig scx 服务打开;服务 scx 重新启动', onlyif => ['test -f /opt/microsoft/scx', '!服务 scx 状态'], 提供者=>“外壳”, }