2015-01-02 2 views
0

У меня есть два модуля Puppet, «пользователи» и «sourcerepos» вызывают узлы, соответствующие выражению имени хоста.Условное упорядочение классов при использовании Hiera с Puppet 3.7.3

«Пользователи» создают всех пользователей, которые требуются в моей организации, а также выполняют базовую конфигурацию для каждого пользователя, например, размещение ~/.ssh/config и различных ключей внутри .ssh, необходимых для аутентификации против частных репозиториев Git.

«Sourcerepos» использует один из созданных пользователей для проверки нескольких сотен репозиториев Git и размещения их в ~/git-repos с помощью модуля puppetlabs/vcsrepos.

Модуль «Sourcerepos», очевидно, имеет зависимость от модуля «users», но установка «require users» в «Sourcerepos» не вызывает оценку всего класса, прежде чем он попытается проверить репозитории git.

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

Создание условного режима для определенного типа vcsrepo также не является жизнеспособным из-за необходимости выполнять его по-разному в зависимости от модуля или класса, который его вызывает.

I думаю Я понимаю, что отношения с кукольным дизайном, и для меня это неприятно из-за недостатка в том, как один (или оба) моих модулей разработаны. Я хотел бы помочь выяснить, как/почему.

+0

Можете ли вы опубликовать код, который показывает, что вы пробовали? Ваши описания немного расплывчаты. –

+0

возможно 'Class ['Users'] -> Class ['Sourcerepos']' будет делать трюк? Я не большой поклонник цепочки стрелок, возможно, если вы укажете какой-то пример кода, мы сможем помочь в устранении неполадок. https://docs.puppetlabs.com/puppet/latest/reference/lang_relationships.html#chaining-arrows – ptierno

ответ

0

Попробуйте использовать новую функцию contains() на ваших классах. Это обеспечит оценку полного класса, прежде чем перейти к следующему классу. В этом документе https://www.devco.net/archives/2012/12/13/simple-puppet-module-structure-redux.php показано, как вы можете использовать классы для включения зависимостей.

Смежные вопросы