我知道在 Puppet 中使用程序步骤通常会被反对,但由于我们使用它来部署 Veritas 管理的集群应用程序,因此在调用 rpm 安装之前必须执行一组特定的步骤。
目前,我们手动冻结 Veritas 集群,以便它不会尝试对应用程序进行故障转移,运行 Puppet,安装 RPM(必要时关闭应用程序),并指示 Puppet 不要启动应用程序。然后我们手动启动应用程序并解冻 Veritas。最后,我们验证状态。
我想自动化这些 Veritas 步骤,这样我们只需运行 Puppet。这些步骤只在我们的生产环境中完成。对于所有其他步骤,我们只需调用 RPM 安装。更复杂的是,如果没有任何变化,我不想执行任何这些步骤。
做这样的事情的首选方法是什么?我读过运行阶段,但似乎需要对我现有的代码进行重大重构。
想知道是否有人可以给我一些关于如何处理这个问题的想法。
答案1
根据您对问题的描述,您需要使用计划或将所有内容放入可执行文件或脚本中,以便指定事物的顺序。Puppet 表明它们无法处理您的用例。
例如:
exec { 'do veritas upgrade' :
onlyif => '${lookup(veritas_version)} is greater than /usr/bin/veritas --version',
exec => 'freeze && stop && install && start && unfreeze && verify',
}