我对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'
有没有办法做某种条件语句,例如,如果程序包确实存在(然后在程序包移除之前运行),那么只能执行停止程序?
在基于debian的系统上(我也假定在rpm系统上)删除一个包在删除文件(deb包中的prerm阶段)之前停止它的服务。
但是你所要求的可以通过在“require”
package { 'supervisor': ensure => absent, require => Service["supervisor"], } service { 'supervisor': ensure => stopped, enable => false, hasstatus => true, }