внешний факт, не доступный в самой первой выполненной марионетке

Введение:

Мы используем марионетку для конфигурирования узлов через пользовательский факт, на который затем ссылаются в 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/init.d/puppet запускается, чем по init?

Обновление:

при попытке запустить его по/etc/rc.local он перестал работать также. Таким образом, должно быть различие между интерактивным и не интерактивными выполнениями. есть ли специальные переменные среды, которые должны быть установлены?

1
задан 24 June 2014 в 12:56
1 ответ

Извините, ребята, мы были на неправильном пути.

После дальнейшей отладки и протоколирования вывода rc.local из facter -p, мы увидели, что наш внешний факт требует учетных данных aws для успешного выполнения скрипта. Это автоматически происходит при входе в систему от имени root, но не при запуске во время загрузки.

Так что экспорт параметров env для мандатов aws решил проблему.

информация, которая не работает с парой значений ключа plan, должна была быть неверной во время отладки. sry

tl;dr: это не было кукольной ошибкой/проблемой

0
ответ дан 4 December 2019 в 08:36

Теги

Похожие вопросы