我有后援,这是由木偶处理,也使用工头。下面是我的init.pp文件:
class backuppc::service {
if $::operatingsystemcodename == 'squeeze' {
service { 'backuppc' : ensure => running, hasstatus => false, pattern => '/usr/share/backuppc/bin/BackupPC' }
} else {
service { 'backuppc' : ensure => running, hasstatus => true }
}
service { 'apache2' : ensure => running }
}当我在节点上运行傀儡时,它会将此报告抛给领班:
类backuppc::service {如果$::operatingsystemcodename ==‘挤压’{ service { 'backuppc‘:确保=>运行,有状态=> false,模式=> '/usr/share/backuppc/bin/BackupPC’} if { service { 'backuppc‘:确保=>运行,hasstatus =>真}服务{ 'apache2’:确保=> true }} 从停止到运行的更改失败:无法启动Servicebackuppc:执行'/etc/init.d/backuppc‘返回1:启动BackupPC .2016-05-31 17:13:25另一个BackupPC正在运行(pid 6731);退出
节点正在使用debain squeeze 6.0.10运行。在这方面有什么帮助吗?
发布于 2016-06-01 03:50:21
这..。
从停止到运行的更改失败:无法启动Servicebackuppc:执行'/etc/init.d/backuppc‘返回1:启动BackupPC .2016-05-31 17:13:25另一个BackupPC正在运行(pid 6731);退出
..。这意味着这个傀儡试图用BackupPC启动/etc/init.d/backuppc start,这发现进程已经在运行。这表明傀儡错误地确定了BackupPC服务的状态。
我在源代码中找不到对一个名为operatingsystemcodename的因素事实的引用。是领班提供了这个变量,还是您在其他地方定义它?也许你的意思是lsbdistcodename?
如果是这样,并且$::operatingsystemcodename是未定义的,那么您的条件将始终传递到else分支,并且资源将使用hasstatus => true定义。木偶将尝试使用/etc/init.d/backuppc status来检查服务是否正在运行。因此,如果init脚本的status操作在某种程度上被破坏(例如,总是返回一个非0退出代码),傀儡将尝试在每个代理运行时启动服务。
因此,首先,我要验证$::operatingsystemcodename是否在所讨论的节点上返回“挤压”。
如果没有,我将检查/etc/init.d/backuppc status的各个状态下的退出代码,启动时返回零,停止时返回非零。
另一方面,如果$::operatingsystemcodename是未定义的,或者是一些意料之外的值,那么我会选择在if语句中使用另一个表达式。在本例中,您还希望通过在运行属性服务时检查BackupPC表来验证BackupPC是正确的。
编辑:或者,您可以为属性提供一个值,其中包含一个由傀儡使用的自定义命令来检查BackupPC服务的状态。我希望像status => 'pgrep -f BackupPC这样的东西能够很好地工作。虽然木偶在ruby代码中已经做到了这一点,所以我不指望它能解决您的问题。
虽然有点过时的这篇博客文章涵盖了一些常见的提示故障排除木偶。
https://stackoverflow.com/questions/37539848
复制相似问题