我需要在停止tomcat服务后执行一些操作(配置一些东西).配置完成后,我需要确保tomcat服务再次启动并运行.我写过以下木偶代码:
Service {'tomcat': ensure => stopped }
->
class {'config':}
->
Service {'tomcat': ensure => running }
Run Code Online (Sandbox Code Playgroud)
在木偶申请时,它抱怨说
'错误:重复声明:服务[tomcat]已在文件中声明'
如何解决这个问题.木偶停止服务,执行某些操作然后再次恢复服务的方法是什么?
在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