Hello 

I am currently deploying a new product and came across some problems to 
structure my Playbook and roles. I have three different solutions and hope 
to get some input which path might be the best.

The product is a webapp on a windows server. The following steps are needed 
to deploy (high level):
install javajdk
install tomcat
install win_service
configure java regkes
configure tomcat
install webapp
start service

I use static inventories for prod and stageing, group_vars, roles (created 
with ansible-galaxy) so there is some kind of structure ..


** Solution 1 **
put everything in one huge playbook. That does not sound well, but has the 
advantage that you know the variables from prev installations e.g. tomcat 
needs to know where JAVA_HOME is... that was with the javajdk installation, 
due to more than one java on the machines there is no global JAVA_HOME...

** Solution 2 **
break all out in small roles. Sounds great but roles should be independent 
from each other.I did not found a method to decouple tasks. Would it make 
sense to have single roles for e.g. install_tomcet, config_tomcat and set 
up a playbook which has the mentioned roles in sequence?  but how does on 
role know about e.g. a path name which is needed in the next roll. -> 
Installation sets the path, config needs to know.. I an really unsure to 
make roles independend.

** Solution 3 **
Kind of solution 2. Have a main playbook which contains only roles, Split 
as much as possible to roles. Have independent variable names in 
./roles/<roleName>/vars/main.yml  Somehow(?) find a place higher in der 
variable precedence with the playbook where all needed var definitions go. 
Inernallay either path a variable to the role or simply  overrule a 
rolevariable. 
e.b. a product has a service, the service name is generally part of a 
pathname for tomcat. 
the tomcat name should not depend on the service, so there should be a 
tomcat_install_path in the role but also a service_name with the product 
So in case the playbook for the product is called the servcie name should 
be part of the name, 
In case the tomcat_install is called with a total different deployment  
there should be no fiddling with a service name

I would go with Solution 3 but I have not yet found a way to set that up.

What is the experts opinion, is solution 3 doable, is one of the other once 
better or is there a solution 4 ??

Thanks a lot
Michael

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/f6230f88-c853-4eb8-a02b-6b886acd2827%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to