В нашем стеке opsworks у нас есть стек с 2 серверами приложений - 1 Java и 1 PHP. В настоящее время каждый сервер приложений имеет по 1 экземпляру.
У нас также есть несколько приложений в этом стеке - 1 приложение развернуто на сервере / экземпляре приложений Java, а остальные развернуты на сервере / экземпляре PHP.
Когда мы развертываем приложение, в разделе «Дополнительно >>» отмечены оба сервера приложений. Нам интересно, есть ли способ настроить каждое приложение, чтобы развертывание для него по умолчанию выполнялось на сервере приложений, на котором он сейчас работает. Например, развертывание приложения PHP только на сервере приложений PHP.
Прямо сейчас это не является серьезной проблемой, потому что развертывание приложения, скажем, приложения PHP на обоих серверах приложений, означает, что развертывание сервера приложений PHP выполнено успешно, в то время как развертывание сервера приложений Java завершается неудачно (и довольно быстро), не влияя на успех PHP. Развертывание сервера приложений.
Это больше пример того, как убирать концы с концами.
Ошибка развертывания - это рецепты opsworks или ваши собственные? У большинства рецептов развертывания opsworks есть защита, гарантирующая, что он работает только в экземплярах на уровне. Например, в рецепте развертывания java он защищает, что рецепты запускаются только в том случае, если тип приложения Ява.
node[:deploy].each do |application, deploy|
if deploy[:application_type] != 'php'
Chef::Log.debug("Skipping deploy::php application #{application} as it is not an PHP app")
next
end
# deployment actions for application types in this layer
end
Я воспроизвел охранника выше. Это, конечно, предполагает, что приложения PHP находятся на уровне PHP, а приложение Java - на уровне Java.