Pergunta

Ainda sou muito novo no fantoche, mas estou escrevendo algumas implantações com ele.

Me deparei com um problema em que não conseguia acertar os links simbólicos porque, por algum motivo, estava obtendo uma incompatibilidade entre as pastas do sistema existentes e a variável ${architecture} do fantoche.

Preciso que o seguinte código funcione da seguinte maneira:

No Ubuntu 12.04 x86_64 eu deveria obter um link de /usr/lib/libz.so para /usr/lib/x86_64-linux-gnu/libz.so No entanto, estou me instando a /usr/lib/amd64-linux-gnu/libz.so que não existe criando do que um link quebrado.

file {"/usr/lib/libz.so":
    ensure => link,
    target => "/usr/lib/${architecture}-linux-gnu/libz.so",
}

O Puppet usa o Facter para obter fatos do sistema e, executando o facter na minha linha de comando, obtenho o seguinte:

root@somehost:/root# facter
architecture => amd64
facterversion => 1.6.5
hardwareisa => x86_64
(....)

Correndo lscpu Eu recebo:

root@tsomehost:/root# lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
(....)

Minha pergunta é: de onde a Facter tira seus fatos?

Foi útil?

Solução

A documentação do Facter agora inclui documentos sobre como os fatos principais são resolvidos.

  • arquitetura usa hardwaremodel, que chama uname -m e depois nas conversões do Debian x86_64 para amd64
  • hardwareisa chamadas uname -p

$hardwaremodel pode ser o que você deseja aqui, no entanto, acho que retornará x86_64 se você usou um kernel de 64 bits com uma área de usuário de 32 bits, o que provavelmente não é correto para o seu caso de uso.

Outras dicas

Qual é a sua versão de Puppet and Facter?

Talvez você tenha uma versão <1.6.5 Facter e, portanto, tenha este bug: http://projects.puppetlabs.com/issues/11511

Tente atualizar, se puder.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top