Введение:
Мы используем марионетку для конфигурирования узлов через пользовательский факт, на который затем ссылаются в hiera. Факт может или находиться в золотом изображении в/etc/facter/fact.d/или через pluginsync (не имеет никакого значения, протестировал обоих),
Версии:
dpkg -l|grep puppet
hi facter 1.7.5-1puppetlabs1 amd64 Ruby module for collecting simple facts about a host operating system
hi hiera 1.3.4-1puppetlabs1 all A simple pluggable Hierarchical Database.
hi puppet 3.4.3-1puppetlabs1 all Centralized configuration management - agent startup and compatibility scripts
hi puppet-common 3.4.3-1puppetlabs1 all Centralized configuration management
Установка проста:
Puppetmaster:
cat hiera.yaml
:hierarchy:
- "aws/%{::aws_cluster}"
/etc/puppet/hieradata/aws/web.json
Узел EC2:
cat /etc/facter/facts.d/ec_cluster.sh
echo 'aws_cluster=web'
Таким образом, существует это золотое изображение ec2 включая факт aws_cluster. На это ссылаются в hiera и указывает классы и конфигурации для создания.
Проблема:
Когда мы загрузим экземпляр и позволим автоподписаться, первый показ не будет иметь подарка $aws_cluster на стороне клиента. Таким образом, это перестанет работать (который имеет смысл), высказывание
puppet-agent[2163]: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find data item classes in any Hiera data file and no default supplied at /etc/puppet/manifests/site.pp:33 on node ip-172-31-35-221.eu-west-1.compute.internal
Когда марионеточный агент перезапущен, все работает как ожидалось. Какие-либо подсказки на этом?
Наше предположение:
Обновление:
при попытке запустить его по/etc/rc.local он перестал работать также. Таким образом, должно быть различие между интерактивным и не интерактивными выполнениями. есть ли специальные переменные среды, которые должны быть установлены?
Извините, ребята, мы были на неправильном пути.
После дальнейшей отладки и протоколирования вывода rc.local из facter -p, мы увидели, что наш внешний факт требует учетных данных aws для успешного выполнения скрипта. Это автоматически происходит при входе в систему от имени root, но не при запуске во время загрузки.
Так что экспорт параметров env для мандатов aws решил проблему.
информация, которая не работает с парой значений ключа plan, должна была быть неверной во время отладки. sry
tl;dr: это не было кукольной ошибкой/проблемой