Марионеточный класс / зависимости от узла

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

Следующая установка:

node foo:
  require base
  include somethingelse

class base:
  require sources // <- class defines package sources needed for everything

class somethingelse
  apt::builddep { 'foo': } // <- requires some package sources

К моему пониманию, узлу foo выполняется, но имеет требование к base, так марионеточные доходы, выполняющие это сначала. baseпервая строка требует sources таким образом, марионетка выполнит это сначала. builddep является последним.

Однако это делает полную противоположность. Источники становятся выполняемыми в любое время без любой логики (как ресурс без зависимостей). Много раз после builddep то, которое приводит к марионеточной ошибке начиная с источника, в котором она нуждается, еще не там.

Когда я определил зависимости от узла как так:

include "base"
include "somethingelse"

Class['base'] -> Class['somethingelse']

Или добавьте Class['sources'] как зависимость к builddep, я получаю цикл зависимости, подобный этому:

(Anchor[apt::source::puppetlabs] => Apt::Source[puppetlabs] => Class[Sources] => Class[Base] => Cron[execute-puppet] => Class[Base] => Class[somethingelse] => Apt::Builddep[foo] => Exec[apt-builddep-foo] => Exec[apt_update] => Class[Apt::Update] => Anchor[apt::source::puppetlabs])

Что я делаю неправильно? Кто-то может указать на меня в корректное направление? Важная вещь, что все в основе (включая источники) становится выполняемым перед классом somethingelse (и поэтому builddep)

Править

Сужение его. Проблема, которым builddep не требует, чтобы источники были там. Без любых требований выполняется builddep, прежде чем источники добавляются, но требует, чтобы Кв. - получила обновление. При добавлении требования к моему исходному классу я попадаю в цикл зависимости еще раз.

В настоящее время попытка этого: Apt::Source <| |> -> Apt::Builddep <| |> который приводит к

(Anchor[apt::source::puppetlabs] => Apt::Source[puppetlabs] => Apt::Builddep[foo] => Exec[apt-builddep-foo] => Exec[apt_update] => Class[Apt::Update] => Anchor[apt::source::puppetlabs])
1
задан 6 July 2014 в 06:17
1 ответ

Я пришел к выводу, что это жучок. builddep уведомляет apt-get update вместо того, чтобы требовать его, что, на мой взгляд, не имеет смысла. Вы хотите, чтобы apt-get update было выполнено до установки зависимостей сборки. Я исправил apt, чтобы потребовать apt-get update, что решает мой цикл сборки зависимостей. Отправил запрос pull request на apt, чтобы посмотреть, что говорят разработчики

.
2
ответ дан 3 December 2019 в 21:15

Теги

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