確保 Puppet 在部署過程中執行程式步驟

確保 Puppet 在部署過程中執行程式步驟

我知道在 Puppet 中使用流程步驟通常會令人不悅,但由於我們使用它來部署 Veritas 管理的叢集應用程序,因此在呼叫 rpm 安裝之前必須執行一組特定的步驟。

目前,我們手動凍結 Veritas 集群,以便它不會嘗試對應用程式進行故障轉移,運行 Puppet,它會安裝 RPM(必要時關閉應用程式),並指示 Puppet 不要啟動應用程式。然後,我們手動啟動應用程式並解凍 Veritas。最後,我們驗證狀態。

我想自動化這些 Veritas 步驟,這樣我們只需執行 Puppet。這些步驟僅在我們的生產環境中完成。對於所有其他的,我們只需要呼叫 RPM 安裝。讓事情變得複雜的是,如果沒有任何改變,我不想執行任何這些步驟。

做這樣的事情的首選方法是什麼?我正在讀關於運行階段,但似乎需要對我現有的程式碼進行重大重構。

想知道是否有人可以給我一些關於如何處理這個問題的想法。

答案1

根據您對問題的描述,您要么需要使用計劃,要么將所有內容放入 exec 或腳本中,以便您可以指定事物的順序。 Puppet 的表現是它們不具備處理您的用例的能力。

一個例子是:


exec { 'do veritas upgrade' :
  onlyif => '${lookup(veritas_version)} is greater than /usr/bin/veritas --version',
  exec => 'freeze && stop && install && start && unfreeze && verify',
}

相關內容