Вопрос

Я все еще новичок в 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 теперь включает документы о как раскрываются основные факты.

$hardwaremodel возможно, это то, что вам нужно, однако я думаю, что он вернет x86_64, если вы использовали 64-битное ядро ​​с 32-битной пользовательской средой, что, вероятно, не подходит для вашего варианта использования.

Другие советы

Какова ваша версия марионетки и лица?

Может быть, у вас есть <1.6.5 версия FACTER и, таким образом, имейте эту ошибку: http:// Проекты.puppetlabs.com/issues/11511

Попробуйте обновить, если сможешь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top