为了使用Puppet类部署Varnish,我需要停止Varnish来移动和部署文件,然后最后确保Varnish启动。
我的问题很简单,如何在Puppet类中定义两次服务,以便在不同的步骤停止或启动服务?
class varnish::install (
(...)
service { "varnish":
ensure => "stopped",
require => Package['varnish'],
before => Exec['mv-lib-varnish'],
}
(...)
service { "varnish":
ensure => "running",
require => File["$varnishncsa_file"],
}
}
我有一个Duplicate definition: Service[varnish] (...)
错误,这是合乎逻辑的......
在Puppet类中管理服务的最佳做法是什么?划分多个类,或者有一个“重命名”服务的选项可以多次声明它?
答案 0 :(得分:3)
尝试以下方法以消除重复错误,但您尝试做的是错误的。 Puppet将系统带到某个一致的状态 - 所以告诉停止服务X,做一些工作,启动服务X - 它超出正确的木偶使用范围,如果服务所依赖的某些文件被修改,则puppet更像是重启服务。
class varnish::install (
(...)
service { "varnish-stop":
name => "varnish"
ensure => "stopped",
require => Package['varnish'],
before => Exec['mv-lib-varnish'],
}
(...)
service { "varnish-start":
name => "varnish"
ensure => "running",
require => File["$varnishncsa_file"],
}
}
答案 1 :(得分:1)
将exec与服务重启一起用作"部署文件"的钩子(通知)。行动(包/另一个执行官)。将服务本身定义为仅运行一次,因为这是您通常想要保证的。 Puppet用于描述目标状态。