Extraia fatos hash aninhados da ferramenta de linha de comando do fantoche. Como?

1

Isso pode ser óbvio. No entanto, depois de pesquisar pela ajuda do facter, pelo site do puppetlab e pelo Google, ainda não consegui descobrir como recuperar um fato de facetador aninhado.

Por exemplo, eu posso fazer:

>facter os

{"release"=>{"major"=>"6", "minor"=>"7", "full"=>"6.7"}, "family"=>"RedHat", "name"=>"CentOS"}

Como recupero os['name'] ou os['release']['minor'] ou qualquer fato aninhado arbitrariamente via linha de comando com facter?

    
por Swartz 29.09.2015 / 19:53

2 respostas

2

Valores factuais aninhados podem ser visualizados no CLI usando um ponto entre variáveis

por exemplo. para recuperar os['release']['minor'] no tipo de CLI: facter os.release.minor

EDITAR: Aparentemente, isso só funciona com o facter 3.x.

Este documento faz uma breve menção sobre como acessar esses fatos estruturados (aninhados) ( link ):

Legacy Facts Note: As of Facter 3, legacy facts such as architecture are hidden by default to reduce noise in Facter’s default command-line output. These older facts are now part of more useful structured facts; for example, architecture is now part of the os fact and accessible as os.architecture. You can still use these legacy facts in Puppet manifests ($architecture), request them on the command line (facter architecture), and view them alongside structured facts (facter --show-legacy).

Infelizmente, não consigo encontrar informações sobre como acessar fatos aninhados usando versões mais antigas.

No facter v3, você pode fazer o seguinte:

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
    
por 07.12.2015 / 17:55
1

Isso não é o que o facter deve fazer. Se você usá-lo dentro de puppet conforme o esperado, poderá acessar todos os fatos separadamente.

Até certo ponto, você pode contornar isso se usar JSON output:

facter --json os | grep major
      "major": "6",

e se você tiver um analisador JSON JSON disponível, tudo será possível.

Usando jq :

facter --json os | jq .os.release.minor
   "6"
    
por 29.09.2015 / 20:25

Tags