Я хочу сделать эквивалент через интерфейс командной строки, который щелкает стек, выбирает только экземпляры на определенном уровне и запускает команду «Выполнить рецепты» (или, альтернативно, запускает этап «Настроить жизненный цикл»).
Мне нужно сделать это программно, есть возможность сделать это на уровне стека, но это не помогает,
Пытаясь избежать чего-то вроде следующего, я, вероятно, в конечном итоге вытягиваю элементы слоя в массив, а затем нажимаю их независимо, как предлагается ниже. Не очень хорошо, поскольку мне придется добавить статическую информацию для информации о стеке и слое.
if deploy[:application_type] != 'php'
Chef::Log.debug("Skipping mod_php5_apache2::php application #{application} as it is not an PHP app")
next
конец
Вам нужно будет сделать это в два шага, сначала получить экземпляры в определенном слое, используя описать экземпляры установив --layer-id
аргумент, затем запустите свою команду в этих экземплярах, используя создать развертывание установив --instance-ids
аргумент.
Другой вариант - заставить ваши пользовательские рецепты ничего не делать, если они не выполняются на правильном слое или тип приложения неправильный. Этот метод довольно часто используется в кулинарных книгах по умолчанию, вот пример пропустить развертывание, если это не приложение PHP. Затем вы можете запустить свой рецепт во всех экземплярах, но он будет делать что-то только на определенных слоях.