Puppet

使用軟體開發生命週期方法管理 puppet 模組的最佳實踐?

  • January 23, 2015

人們如何在您的原始碼儲存庫中組織他們的 Puppet 清單和模組?我沒有看到任何明顯的方法可以在單個 Puppet Master 上分階段實施 Puppet 的更改。

其他人如何管理這個?每個伺服器組/SDLC 階段一個主伺服器實例?我非常想在每個階段使用相同的 Puppet 模組,並且只使用 subversion 來更改將哪個版本的 Puppet 模組應用於每個伺服器組/SDLC 階段,以便我可以分階段推出更改。我正在尋找一種方法來利用相同的模組並避免由於重複模組而導致的事故和變化。

我正在考慮使用 puppet 管理大量伺服器,其中包括幾個 SDLC(軟體開發生命週期)階段。災難恢復、生產、分期、使用者驗收測試、測試、開發、培訓

編輯以澄清第二部分:

以及如何在原始碼庫中維護分支?例如,使用 dev 和 test 分支,以及定義我從何處獲取更新檔的文件。

您是否編輯:

repo:/dev/patchessource.txt 包含“patchserver/dev”

repo:/test/patchessource.txt 包含“patchserver/test”

並且讓這些文件不同,並且必須通過合併以及從開發到測試的所有內容來保持這種差異,或者人們是否為每個環境擁有不同的文件並將它們作為一個整體遷移:

repo:/dev/devpatchsource.txt 包含“patchserver/dev”

repo:/dev/testpatchsource.txt 包含“patchserver/test”

這樣,當您將開發儲存庫合併到測試儲存庫時,您不必擔心開發特定設置會覆蓋您的測試特定設置?

對於可能不精通原始碼管理工具的後續管理員,我沒有看到一個明顯的解決方案來簡化它。

任何提示將非常感謝。

環境是如何解決這個問題的。使用環境,您可以為生產、登台、UA 測試、測試、開發、培訓等定義配置。

深入解釋如何做到這一點有點廣泛,但這裡有一些參考資料可供您閱讀以幫助您入門:

在主記憶體儲庫中,您有一個development,testingproduction(或任何適合您的工作流程)的分支。您在開發分支上愉快地編寫 Puppet 程式碼,送出、送出、推送。當您推送(通過一些 Git 掛鉤或 cron 作業)時,您的 Puppet Master 會更新(通過 R10K),並且您的節點會在其計劃時間獲得更新。

據推測,您有設置為development環境的節點,因此您可以將更改推送到development分支。你可以測試這一切。

您對您的更改感到滿意,合併到下一個工作流程步驟分支 - 比如說production. 推送合併的更改並開始循環 - Puppet Master 獲取production環境更改,生產節點應用新配置。

現在,我看到人們普遍感到困惑。Control Repo的development分支並不意味著“這是程序員機器的配置”。不,這意味著它是你的 Puppet 開發分支。

那麼,您如何為 3 個團隊(Dev、QA 和 Pproduction)維護一組伺服器,比如 Web 伺服器。即,這些組中的每一個都有一個 Web 伺服器,它們的配置幾乎相同,但有細微差別,因為一個是現場生產系統,一個是 QA 組,另一個是 Dev。

為此,您使用 Hiera。每個節點都將應用相同的類,但參數的細微差別或您通過 Hiera 設置的內容。


當然,您也可以使用分支來表示“被管理的機器類型”而不是 Hiera,但這有點荒謬,因為您不會將 Git 分支用於其真正目的。分支將完全不同,您需要通過從一個複制/粘貼到另一個手動“合併”它們。那將是,醜陋的。

引用自:https://serverfault.com/questions/661016