你可以不正是「檢索」用事實的IP,但目錄編譯器可以和做收到它作爲一個事實。前者表明目錄編譯器在該過程中具有主動作用,而沒有。
你有兩個一般的選擇:
您可以通過編寫一個計算節點上的值上習慣的事實。依靠Facter爲其提供IP,可以簡化其工作。結果將作爲自己的獨立事實呈現給目錄編譯器,並且該端不需要任何特殊的地方就可以在任何地方使用它。
作爲一個事實計算派生值的缺點包括這樣做的代碼被複制到所有可能被檢查的節點上,並且如果一個節點受到損害,那麼原則上這個事實的值可以被欺騙。另外,這個自定義的事實可能需要在Ruby中實現,以防萬一這是你的問題。
在目錄生成器中執行計算並不是特別困難。你可以將它作爲一個自定義函數來實現,這個函數的複雜性與自定義事實相當,但我建議在一個類中進行,並將結果分配給該類的類變量。具體來說,你應該如何實現值計算取決於計算的細節。例如,
class site::derived_data {
$ip_pieces = split($ipaddress, '[.]')
# This is the derived value we are computing:
$department = $ip_pieces[2] ? {
0 => 'network operations',
# ...
default => 'other'
}
}
然後,您可以使用它在其他地方,像這樣:
class mymodule::myclass(
# parameters ...
) {
include site::derived_data
notify { $site::derived_data::department : }
}
這是非常模糊的。你應該詳細說明第2點和第3點,以便人們可以幫助你。 –
你能提供一個腳本的例子嗎? – ptierno
我認爲這裏的操作並不重要。我將要做簡單的字符串操作,並檢查是否有條件。 重點是我如何檢索事實來處理它,我應該在哪裏放置代碼? 我要編輯這個問題。 – EGS