Назад | Перейти на главную страницу

AWS OpsWorks - Как выполнить пользовательский рецепт из командной строки для определенного слоя?

Я хочу сделать эквивалент через интерфейс командной строки, который щелкает стек, выбирает только экземпляры на определенном уровне и запускает команду «Выполнить рецепты» (или, альтернативно, запускает этап «Настроить жизненный цикл»).

Мне нужно сделать это программно, есть возможность сделать это на уровне стека, но это не помогает,

Пытаясь избежать чего-то вроде следующего, я, вероятно, в конечном итоге вытягиваю элементы слоя в массив, а затем нажимаю их независимо, как предлагается ниже. Не очень хорошо, поскольку мне придется добавить статическую информацию для информации о стеке и слое.

 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. Затем вы можете запустить свой рецепт во всех экземплярах, но он будет делать что-то только на определенных слоях.