Puppet:删除软件包并确保已停止

Puppet:删除软件包并确保已停止

我对 Puppet 还很陌生,但到目前为止我非常喜欢它。目前我正在设置它来自动化一个小型架构。

不过我有一个问题——我想删除一个包并确保它已停止。为了实现这一点,我在清单中添加了以下条目:

package { 'supervisor':
    ensure => absent,
}

service { 'supervisor':
    ensure     => stopped,
    enable     => false,
    hasstatus  => true,
}

问题在于,一旦清单应用到节点一次,下次运行时就会出现以下错误:

debug: Service[supervisor](provider=debian): Could not find supervisor in /etc/init.d
debug: Service[supervisor](provider=debian): Could not find supervisor.sh in /etc/init.d
err: /Stage[main]/Screenly_core/Service[supervisor]: Could not evaluate: Could not find init script for 'supervisor'

有没有什么办法可以执行某种条件语句,使得只有当包确实存在时才执行停止程序(然后在删除包之前运行)?

答案1

在基于 debian 的系统上(我认为在 rpm 系统上也是如此),删除包会在删除文件之前停止其服务(deb 包中的 prerm 阶段)。

但是你的要求可以通过插入带有“require”的依赖项来实现

package { 'supervisor':
    ensure => absent,
    require => Service["supervisor"],
}

service { 'supervisor':
    ensure     => stopped,
    enable     => false,
    hasstatus  => true,
}

相关内容