Факты о системе по умолчанию Puppet и Facter
-
12-12-2019 - |
Вопрос
Я все еще новичок в puppet, однако пишу с его помощью несколько развертываний.
Я столкнулся с проблемой, из-за которой я не мог правильно получить символические ссылки, потому что по какой-то причине я получал несоответствие между существующими системными папками и марионеточной переменной ${architecture}.
Мне нужен следующий код, чтобы работать следующим образом:
В Ubuntu 12.04 x86_64 я мог бы получить ссылку с /usr/lib/libz.so
к /usr/lib/x86_64-linux-gnu/libz.so
Тем не менее, я начинаю /usr/lib/amd64-linux-gnu/libz.so
которого не существует, а не неработающая ссылка.
file {"/usr/lib/libz.so":
ensure => link,
target => "/usr/lib/${architecture}-linux-gnu/libz.so",
}
Puppet использует Facter для получения системных фактов, и, запустив facter в командной строке, я получаю следующее:
root@somehost:/root# facter
architecture => amd64
facterversion => 1.6.5
hardwareisa => x86_64
(....)
Бег lscpu
Я получил:
root@tsomehost:/root# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
(....)
Мой вопрос: откуда Facter получает факты?
Решение
Документация Facter теперь включает документы о как раскрываются основные факты.
- архитектура использует аппаратную модель, которая вызывает
uname -m
а затем в Debian конвертируетсяx86_64
кamd64
- Аппаратное обеспечение звонки
uname -p
$hardwaremodel
возможно, это то, что вам нужно, однако я думаю, что он вернет x86_64, если вы использовали 64-битное ядро с 32-битной пользовательской средой, что, вероятно, не подходит для вашего варианта использования.
Другие советы
Какова ваша версия марионетки и лица?
Может быть, у вас есть <1.6.5 версия FACTER и, таким образом, имейте эту ошибку: http:// Проекты.puppetlabs.com/issues/11511
Попробуйте обновить, если сможешь.