I have an application that consists of several server types, most of which are nearly the same, differing only in one top-level application package. Usually it’s the application step that’s the most time-consuming, since it could involve a database data load/update.
(Think of a java/tomcat/apache/mysql application with a differently named tomcat application rpm per server-type)
I need to update these nearly-identical server-types concurrently - fastest possible deployment speed is a critical business requirement.
I envisioned the following Ansible deployment architecture:
playbook (targeting an environment i.e. lab vs test vs staging vs prod etc., invoked with a large enough -f)
- task java
- task apache
… many other common tasks and sub-tasks - task application <parameter?>
And then somehow get the “application” task to deploy the application that corresponds to the specific application type.
First, am I going about this correctly - my goal being to maximize concurrency, and at the same time share as much code as possible?
Second, if this is reasonable, can you suggest how best to achieve the “application” task i.e. narrow it down to a particular application sub-type?
And if this isn’t a good path, can you suggest alternatives that achieve the stated goals?
Thanks.