Назад | Перейти на главную страницу

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

Введение:

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

Настройка проста:

Кукловод:

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 решил проблему.

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

tl; dr: это не была марионеточная ошибка / проблема