Das mag offensichtlich sein. Nach einer Suche in der Hilfe von facter, auf der Website von puppetlab und bei Google kann ich jedoch immer noch nicht herausfinden, wie ich einen verschachtelten facter-Fakt abrufen kann.
Ich kann zum Beispiel:
>facter os
{"release"=>{"major"=>"6", "minor"=>"7", "full"=>"6.7"}, "family"=>"RedHat", "name"=>"CentOS"}
Wie rufe ich mit Facter über die Befehlszeile beliebige verschachtelte Fakten os['name']
ab ?os['release']['minor']
Antwort1
Verschachtelte Faktenwerte können in der CLI angezeigt werden, indem ein Punkt zwischen den Variablen verwendet wird.
os['release']['minor']
Um beispielsweise Folgendes in der CLI abzurufen , geben Sie Folgendes ein:facter os.release.minor
BEARBEITEN: Anscheinend funktioniert dies nur mit Factor 3.x.
Dieses Dokument gibt einen kurzen Hinweis darauf, wie man auf diese strukturierten (auch verschachtelten) Fakten zugreift (http://docs.puppetlabs.com/facter/3.1/core_facts.html):
Hinweis zu Legacy-Fakten: Ab Facter 3 werden Legacy-Fakten wie Architektur standardmäßig ausgeblendet, um Rauschen in der Standard-Befehlszeilenausgabe von Facter zu reduzieren. Diese älteren Fakten sind jetzt Teil nützlicherer strukturierter Fakten. Beispielsweise ist Architektur jetzt Teil des OS-Fakts und als os.architecture zugänglich. Sie können diese Legacy-Fakten weiterhin in Puppet-Manifesten verwenden ($architecture), sie auf der Befehlszeile anfordern (facter architecture) und sie neben strukturierten Fakten anzeigen (facter --show-legacy).
Leider kann ich keine Informationen zum Zugriff auf verschachtelte Fakten mit älteren Versionen finden.
In Factor v3 können Sie Folgendes tun:
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
Antwort2
Das ist nicht das, was facter
es tun soll. Wenn Sie es puppet
wie erwartet verwenden, können Sie auf jede Tatsache einzeln zugreifen.
Bis zu einem gewissen Grad können Sie dies umgehen, indem Sie JSON
die Ausgabe verwenden:
facter --json os | grep major
"major": "6",
und wenn Sie einen CLI-JSON-Parser zur Verfügung haben, ist alles möglich.
Verwenden vonjq
:
facter --json os | jq .os.release.minor
"6"