Fatos do sistema padrão do Puppet e do Facter
-
12-12-2019 - |
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?
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 Debianx86_64
paraamd64
- 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.