Puppet

如何讓 puppet 在目錄執行結束時啟動所有服務?

  • April 21, 2020

尤其是在從頭開始設置一個全新的伺服器時,puppet 往往會在所有依賴項都得到滿足後立即啟動依賴服務。這有時會導致服務在其他包的設置(可能不依賴於服務)仍在執行時不必要地過早啟動。

是否有任何單行定義或配方可以在整個目錄執行結束時自動使所有服務啟動/刷新?我試圖弄清楚是否可以使用執行階段,但據我了解,這將要求所有服務定義都明確定義為“最後”階段。


*更新 1:*我的問題的一些背景。Puppet 在節點的初始設置期間工作相當密集,因此保留了相當小的虛擬機的資源(在我的例子中,開發機器上的 Vagrant)。當設置階段達到一些服務(在我的情況下是後台工作人員)準備就緒時,Puppet 啟動它們並且工作人員開始從隊列中接收作業。這種工作負載會減慢仍在進行的 Puppet 節點設置過程,同時 Puppet 也會減慢工作人員的速度,直到整個設置完成並且盒子處於穩定狀態。

這就是為什麼我開始認為最好讓 Puppet 在節點上的所有服務啟動之前完成初始設置,以及為什麼我想知道是否有任何簡單的方法可以用 Puppet 做到這一點。

實現此目的的一種方法是

  1. 如上所述訂閱。
  2. 使用舞台元參數

您可以通過以下方式將其作為預設值分配給服務資源類型

Service { stage => last }

如果您在nodes.pp 中定義它,它將應用於所有節點,或者您可以為每個節點定義它。

我建議不要全球重啟。相反,使用 puppet 依賴項。

就像是:

service { 'first':
     ensure    => running,
     enable    => true,
   }

service { 'second':
     ensure    => running,
     enable    => true,
     subscribe => Service['first']
}

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