我为 Puppet 编写了两个不同的模块,一个确保 Tomcat7 已安装并运行,另一个将 Web 应用程序部署到 Tomcat webapps 文件夹中。
但是,如果我使用这两个模块将 puppet 作为守护进程运行,则每次 pupped 与 puppetmaster 同步时都会部署应用程序,所以我想我应该执行以下操作:
- 将 tomcat 模块添加到要由此类节点执行的 list 列表中。通过这种方式,我将确保 Tomcat 每 30 分钟启动并运行一次。
然后:
一个。通过以下命令在 Puppet 代理上调用一个非守护进程的一次性任务,使用标记来指定我只想运行部署应用程序模块。
puppet agent --server MYSERVER --no-daemonize --onetime --tags deploy_app
B.以某种方式修改我的部署应用程序模块,可能在工件中指定应用程序的版本,以从 puppetmaster 自动部署而不是调用 puppet 代理。
什么是正确的方法?公司通常会做什么来使用 Puppet 运行此类任务?
我猜如果你从 puppetmaster 部署很难知道什么时候部署了你的应用程序,所以你在部署过程中失去了控制,我猜这是不好的。
最佳答案
这实际上取决于您如何编写用于部署工件的 list ,但理想情况下,您应该首先在执行过程中检查是否需要更新。您可以通过将工件提取到临时位置并在其上运行二进制差异来实现。
关于tomcat - Puppet 中的一次性调用任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24669597/