2014-04-14 56 views
1

我想迭代所有已定義類型的實例(例如Apache :: Vhost)。然而,這個循環只會在範圍內列出我的資源。如何在Puppet中迭代已定義類型的實例

<% scope.catalog.vertices.each do |resource| -%> 
<%# if resource.type == "Apache::Vhost" -%> 
#Include <%= resource.title %> 
<% end -%> 
+0

你不應該這樣做,因爲這會引入解析順序依賴關係。我不認爲有強大的方法來做到這一點。 – bartavelle

+0

我對此有依賴關係 類['Apache :: Params'] - > Apache :: Vhost <| |> – krogon

+0

最終解決資源間依賴關係,而您的模板將在目錄編譯過程中解決。這意味着如果你在「之後定義一個'apache :: vhost'」(其中after是未定義的,因爲你沒有解析訂單AFAIK),你定義了你的模板,它不會出現。 – bartavelle

回答

1

在編譯時行走目錄durig(「catalog building」)是一個壞主意。

如果您確實需要此功能,請考慮將迭代代碼移至custom provider,該代碼將生成類似於您的主側面模板此刻嘗試的文件內容。

在同步階段,您可以通過安全地訪問完整的目錄。