Hi everyone, I am a middleware engineer and am looking at possibilities to use Ansible for extremely complex middleware use-cases. I have read over some of the various projects at the Ansible Galaxy site. I wanted to ask the group if Ansible is flexible to dynamically generate playbooks, or dynamically generate variable files for every use-case. As a simple exmaple, all my use-cases need an ssl certificate signed by verisign where the cn of the certificate would match the hostname of the host. From what I have read so far I should become familiar with roles, where a role would be similar to an automated instruction set. Installing the middleware product onto a host seems to be a very basic role, I’m concerned using Ansible for complex middleware use-cases might run into limitations, or an enormous amount of yaml files. I’m hoping to get some feedback on limitations or infomation from people with experience using Ansible with middleware products (WebLogic, WebSphere, JBoss).
I use ansible to generate yaml files which are then passed to other playbooks. I haven’t found a need to dynamically generate an entire playbook since you can control behavior just by passing different variables to playbooks.
As well as getting to grips with roles, it would be well worth understanding what you can do with jinja2 templates, since the containers you mention all have lots of configuration in xml and properties files. Also, understand ansible’s notion of inventory and groups. Once you have a handle on inventory groups you can start applying changes to logical sets of servers.
Selecting which server to apply a cert to based on its hostname should be fairly straightforward.
We are using smaller containers than you and ansible works well for deploying lots of different server types that we use, and applying rolling updates to our clusters.
Really its going to depend on what you are trying to do. If you can go into more detail about what your ‘complex middleware use cases’ are maybe others will have more specific relevant experience to share.