Отказ от ответственности: Я являюсь одним из разработчиков Puppet.
Он выполнит его в последовательном, но непредсказуемом порядке, за исключением явных или неявных зависимостей в коде. Явные зависимости - это вещи, которые вы указываете с помощью метапараметров subscribe
или require
. Неявные зависимости исходят от функции autorequire, которая делает такие вещи, как автоматическое применение файловых ресурсов в разумном порядке.
Причина этого заключается не в том, что язык декларативный, а в том, что язык декларативный, потому что порядок не имеет значения для большинства вещей в базовом проблемном пространстве.
Например, между управлением ssh и управлением постфиксами очень мало связей - вы можете выполнять работу в любом порядке или даже в одно и то же время, и все будет работать одинаково.
Это освобождает нас, чтобы улучшить вещи во многих отношениях, что «все в линейном порядке» не делает. Мы работаем, например, для пакетной установки пакетов, сохраняя при этом все явные зависимости вне пакетов.
Итак, порядок выполнения и зависимости следуют основной проблеме, и мы сохранили это свойство, чтобы иметь возможность делать более удивительные вещи.
Цель - это именно то, что вы говорите в конце: что вы заявляете, что хотите, и мы заботимся о всех деталях ее получения. Со временем мы надеемся, что будем гораздо разумнее относиться к логическим зависимостям, поэтому вы должны сказать еще меньше, чтобы получить это.
Не могли бы вы определить, что такое * согласованный, но непредсказуемый заказ *? У нас много проблем, когда Puppet 2.6 просто перезагружает шаги и из-за некоторых недостающих зависимостей он терпит неудачу. Это непростительно. Могу ли я заставить какую-то перетасовку, чтобы мы могли проверить ее правильно? Я также слышал, что новая версия дает фиксированный заказ. – lzap
Итак, скажем, у меня есть пакет для установки, который зависит от существующего репозитория в yum.repos.d. Как я могу обеспечить наличие установленного репозитория до того, как он попытается установить пакет? – Mojo