在puppet中,如何停止服务,执行某些操作然后启动服务?

Ana*_*tel 5 puppet

我需要在停止tomcat服务后执行一些操作(配置一些东西).配置完成后,我需要确保tomcat服务再次启动并运行.我写过以下木偶代码:

Service {'tomcat': ensure => stopped }
->
class {'config':}
->
Service {'tomcat': ensure => running }
Run Code Online (Sandbox Code Playgroud)

在木偶申请时,它抱怨说

'错误:重复声明:服务[tomcat]已在文件中声明'

如何解决这个问题.木偶停止服务,执行某些操作然后再次恢复服务的方法是什么?

BMW*_*BMW 5

在puppet中,您不能再次声明相同的服务.那是你的错误.

使用puppet,您无需关心tomcat停止/启动过程.它关注最终状态(称为"同一性").在定义包,配置文件和服务之间的关系后,它将为您完成所有工作.例如,你需要了解下面的傀儡和流程之间的差异->~>.

Package['tomcat'] -> File['server.xml']  ~> Service['tomcat']
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您在tomcat配置文件中应用更改,puppet将自动重新启动tomcat服务.

供您参考,这里是来自Introduction to Puppet博客的复制粘贴,用于解释idempotency的含义:

Puppet和大多数其他工具之间的一个重要区别是Puppet配置是幂等的,这意味着它们可以安全地多次运行.一旦开发了配置,您的计算机将经常应用配置 - 默认情况下,每30分钟一次 - 如果系统状态与配置状态不匹配,Puppet将仅对系统进行任何更改.

2016年更新:

这是另一篇关于幂等性的官方Puppet博客文章:https://puppet.com/blog/idempotence-not-just-a-big-and-scary-word