如何在 Puppet 中定义两次相同的服务? [英] How define twice the same service in Puppet?
问题描述
为了使用 Puppet 类部署 Varnish,我需要停止 Varnish 以移动和部署文件,然后在最后确保 Varnish 已启动.
In order to deploy Varnish with a Puppet class, I need stop Varnish for move and deploy files, then at the end, ensure that Varnish is started.
我的问题很简单,如何在 Puppet 类中定义两次服务,以便在不同的步骤停止或启动服务?
My problem is simple, how I can define twice a service in a Puppet class, in order to stop or start the service at differents steps ?
class varnish::install (
(...)
service { "varnish":
ensure => "stopped",
require => Package['varnish'],
before => Exec['mv-lib-varnish'],
}
(...)
service { "varnish":
ensure => "running",
require => File["$varnishncsa_file"],
}
}
我有一个重复定义:Service[varnish] (...)
错误,这是合乎逻辑的...
I've an Duplicate definition: Service[varnish] (...)
error, and it's logical...
在 Puppet 类中管理服务的最佳实践是什么?分成多个类,或者有一个选项可以重命名"一个服务以多次声明它?
What's the best practice to manage services in a Puppet class ? Divide in multiple classes, or there is an option for "rename" a service for declare it several times ?
推荐答案
尝试以下操作来消除重复错误,但您尝试做的是错误的.Puppet 使系统处于某种一致状态——所以告诉停止服务 X,做一些工作,启动服务 X——它超出了适当的 puppet 使用范围,puppet 更像是如果服务所依赖的某些文件被修改,则重启服务.>
try the following to get rid of duplicate error, but what you are trying to do is wrong. Puppet brings system to certain consistent state - so telling stop service X, do some work , start service X - it out of scope of proper puppet use, puppet is more like restart service if some files on which the service depends were modified.
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"],
}
}
这篇关于如何在 Puppet 中定义两次相同的服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!