В соответствии с этот статья в puppet labs, я могу создавать собственные факты из сценариев оболочки.
Я создал bash-скрипт, который возвращает единственный факт, он упакован в каталог modules fact.d. Модуль включен в целевую систему через класс ENC. При вызове марионеточного агента на цели он возвращает пустой набор, при ручном запуске на агенте он правильно возвращает факт. У сценария есть разрешение на выполнение на главном сервере, но его нет на агенте.
Я видел отчет об ошибке, связанный с разрешениями и типами файлов, но это были окна, которые должны были быть исправлены в марионеточной версии 3.
Что я делаю не так?
Определение ENC:
---
classes:
facttest:
Сценарий оболочки:
#!/bin/bash
echo "test_fact1=$(hostname)"
Разрешения:
master: -rwxr-xr-x 1 root root ... modules/facttest/facts.d/testfact.sh
agent: -rw-r--r-- 1 root root ... /var/lib/puppet/facts.d/testfact.sh
Сообщение агента:
Fact file /var/lib/puppet/facts.d/testfact.sh was parsed but returned an empty data set
Информация о версии:
Puppet master: 3.5.1 (Debian)
Facter master: 2.0.1
Puppet agent: 3.6.1 (OpenSUSE)
Facter agent: 2.0.1
Это на самом деле ошибка в кукольном 3.6
, по-видимому.
Кроме того, обратите внимание, что использование агентов новее, чем главный, обычно не поддерживается.