這可能是顯而易見的。然而,在搜尋了facter的幫助、puppetlab的網站和Google之後,我仍然無法弄清楚如何檢索嵌套的facterfact。
例如,我可以這樣做:
>facter os
{"release"=>{"major"=>"6", "minor"=>"7", "full"=>"6.7"}, "family"=>"RedHat", "name"=>"CentOS"}
如何透過命令列使用facter檢索os['name']
或或任何任意嵌套事實?os['release']['minor']
答案1
可以透過在變數之間使用點在 CLI 中查看嵌套事實值
os['release']['minor']
例如,在 CLI 中 檢索類型:facter os.release.minor
編輯: 顯然這僅適用於 Factor 3.x。
本文檔簡要提及如何存取這些結構化(又稱嵌套)事實(http://docs.puppetlabs.com/facter/3.1/core_facts.html):
遺留事實 注意:從 Facter 3 開始,預設會隱藏架構等遺留事實,以減少 Facter 預設命令列輸出中的雜訊。這些較舊的事實現在是更有用的結構化事實的一部分;例如,架構現在是作業系統事實的一部分,並且可以作為 os.architecture 進行存取。您仍然可以在 Puppet 清單 ($architecture) 中使用這些遺留事實,在命令列上請求它們(facter 架構),並與結構化事實一起查看它們 (facter --show-legacy)。
不幸的是,我找不到有關使用舊版本存取嵌套事實的資訊。
事實上 v3 你可以執行以下操作:
facter os
{
architecture => "amd64",
distro => {
codename => "trusty",
description => "Ubuntu 14.04.3 LTS",
id => "Ubuntu",
release => {
full => "14.04",
major => "14.04"
}
},
family => "Debian",
hardware => "x86_64",
name => "Ubuntu",
release => {
full => "14.04",
major => "14.04"
},
selinux => {
enabled => false
}
}
。
facter os.release
{
full => "14.04",
major => "14.04"
}
。
facter os.release.major
14.04
答案2
那不是facter
應該做的。如果您按預期使用它puppet
,您可以單獨訪問每個事實。
在某種程度上,如果使用JSON
輸出,則可以解決此問題:
facter --json os | grep major
"major": "6",
如果您有可用的 CLI JSON 解析器,一切皆有可能。
使用jq
:
facter --json os | jq .os.release.minor
"6"