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

Ansible кажется ориентированным на сервер. Может ли он быть ориентированным на приложения?

Новичок в Ansible и ищущий руководство и / или код в следующей дилемме.

Похоже, что Ansible ориентирован на сервер, заставляя вас думать с точки зрения сервера, к которому применяются роли, например «это веб-сервер и почтовый сервер, это сервер базы данных и т. д.». Я не могу придумать решение, согласно которому приложение A должно быть развернуто на сервере X.

Мне кажется более естественным думать с точки зрения приложения, например «приложение A является критически важным и должно работать на ServerBig, в то время как приложения B и C могут работать на ServerSmall-N». Я знаю, вы, вероятно, скажете, что мне следует сгруппировать серверы в критически важные и обычные, но я не хочу запускать приложение B на каждом нормальном сервере, а только на одном, вероятно, наименее используемом в данный момент. Также это не кажется естественным.

Можно ли сделать Ansible ориентированным на приложения? Если да, то есть ли в этом смысл? Должен ли я преобразоваться и увидеть свет?

То, что вы описываете как свой вариант использования («приложение A должно запускаться на ServerBig»), - это то же самое, что сказать «это веб-сервер и сервер электронной почты», за исключением того, что вы заменяете «веб» на «приложение A». ". Если у вас есть отдельные «классы» для приложения A, приложения B и приложения C, так же, как и для «веб-сервера», «почтового сервера» и «сервера базы данных», вы бы распределили их точно в так же.

То, что вы описываете в последней части своего вопроса, о запуске «приложения B» только на одном слегка загруженном компьютере, является не столько проблемой «управления конфигурацией», сколько проблемой динамического распределения ресурсов, которая является полностью другая проблема. В некоторых системах управления конфигурацией есть компоненты, которые делают это или, по крайней мере, пытаются это сделать, но на практике лучше использовать что-то, предназначенное для этой работы. Kubernetes, по-видимому, является «нынешней неприязнью» в этой области, если вам удобно пить Docker Kool-aid и постоянно использовать все контейнеры. В противном случае у меня нет конкретной рекомендации, потому что многое зависит от стратегии развертывания вашего приложения.