이것은 명백할 수도 있습니다. 그러나 팩터의 도움말, puppetlab 웹사이트 및 Google을 검색한 후에도 중첩된 팩터 팩트를 검색하는 방법을 여전히 알 수 없습니다.
예를 들어 다음과 같이 할 수 있습니다.
>facter os
{"release"=>{"major"=>"6", "minor"=>"7", "full"=>"6.7"}, "family"=>"RedHat", "name"=>"CentOS"}
팩터가 포함된 명령줄을 통해 임의의 중첩 팩트를 검색하려면 os['name']
어떻게 해야 합니까 ?os['release']['minor']
답변1
중첩된 팩트 값은 변수 사이에 점을 사용하여 CLI에서 볼 수 있습니다.
os['release']['minor']
예를 들어 CLI 유형에서 검색하려면 다음을 입력하세요 .facter os.release.minor
편집하다: 분명히 이것은 팩터 3.x에서만 작동합니다.
이 문서에서는 이러한 구조화된(일명 중첩된) 사실에 액세스하는 방법에 대해 간략하게 언급합니다(http://docs.puppetlabs.com/facter/3.1/core_facts.html):
레거시 사실 참고: Facter 3에서는 Facter의 기본 명령줄 출력에서 노이즈를 줄이기 위해 아키텍처와 같은 레거시 사실이 기본적으로 숨겨집니다. 이러한 오래된 사실은 이제 보다 유용한 구조화된 사실의 일부가 되었습니다. 예를 들어, 아키텍처는 이제 os 사실의 일부이며 os.architecture로 액세스할 수 있습니다. Puppet 매니페스트($architecture)에서 이러한 레거시 사실을 계속 사용하고, 명령줄에서 요청하고(facter 아키텍처), 구조화된 사실과 함께 볼 수 있습니다(facter --show-legacy).
안타깝게도 이전 버전을 사용하여 중첩된 사실에 액세스하는 방법에 대한 정보를 찾을 수 없습니다.
Facter 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"