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