Linux

定期執行 Chef/Puppet 的優缺點是什麼?

  • July 10, 2018

我總是在他們過去定期執行 Puppet 的地方工作。因此,分發更改很容易,而且可以即時進行。在新團隊中,他們對定期執行 Chef 代理不滿意。他們只用它來引導作業系統,然後殺死它。我不明白為什麼有人會使用像 Chef 這樣的配置管理工具而不必定期執行它。無論我們在做什麼引導,都可以通過基本的 shell 腳本來完成——安裝 xyz 軟體,複製配置文件,重新啟動服務。

他們說在生產中定期執行它太危險了,因為他們不確定程式碼是否是冪等的。

我的查詢是:

  • 你們中有多少人使用編排工具只是為了引導?這不是像在小巷里以每小時 20 英里的速度駕駛布加迪嗎?
  • 當您擴大規模時,您在定期執行此程序時是否發現任何問題?你會怎麼處理?(我知道的一種方法是以單人模式執行代理,並讓他們從可以同時處理多個下載的某個儲存庫/工件下載食譜,而不是壓倒 Puppet/Chef 伺服器)。
  • 我如何鼓勵團隊將程式碼修復為冪等並定期執行代理?或者從 Chef 轉移到像 bash 這樣簡單的東西,以減少維護/編寫程式碼的成本。
  • 我說得對嗎,我們沒有按照應有的方式使用這些工具?
  • 我在這裡錯過/忽略了什麼嗎?

引導編排

有像 Terraform 這樣的工具實際上專注於該過程的這一部分。我還將 ansible 用於一些不需要經常重新執行的臨時任務。

不過,一般來說,最佳實踐是至少每小時執行一次配置管理。授予或刪除訪問權限通常是通過這些機制發生的,延遲更新可能會導致合規性或可用性問題。在一家大型商店,我們將 puppet 分成兩部分,因此可以暫停特定於應用程序的內容,而不會破壞處理訪問控制更新和“無法”切斷的“shadow puppet”。

定期執行的問題

如果你寫了糟糕的食譜,那麼你可以很快摧毀所有的生產。有一些流程,其中角色在進入 staging 之前被發佈到 QA 並經過驗證,並在進入 prod 之前重新驗證。Chef 具有內置的測試機制。類似的技術可以與其他技術一起使用。

如何鼓勵定​​期執行它

我將首先關注正在被掩蓋的問題。如果您不經常執行您的食譜,那麼您將不會注意到它們何時因作業系統或您的應用程序的更改而開始不起作用。

然後我會提到,在需要時可以很快地在任何地方進行更改。Chef 執行之間的間隔應該是您願意等待更改在整個環境中傳播的最長時間。

你是對的嗎?

大多。如果它對他們來說足夠好,他們可能認為不需要改變任何東西。您可能需要製作一個展示來展示價值並使其對人們真實。或者您可能需要等待您的組織成熟到可以處理您所教的內容的程度。

你錯過了什麼?

您似乎沒有考慮的主要事情是可能的性能影響。如果應用程序對後台執行的東西真的很敏感,那麼在 chef 執行時您會看到較低的吞吐量或較高的延遲。如果是這種情況,您將需要調整您的食譜或只讓它在非高峰時間執行。

我見過的另一件事是記憶體耗盡。該應用程序會逐漸消耗記憶體,直到廚師無法再執行。希望您可以監控記憶體級別以及廚師是否正在工作以擷取此類事情。

除了性能和記憶體之外,我建議閱讀像Release It這樣的書,它解釋了很多關於如何建構可靠的生產系統的內容。

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