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