We could take an easier way and assume we only have 3 roles, as in
the current refactored code: controller, network, compute. The logic would then be:
- By default we install everything, so all in one
- If our host is not CONFIG_CONTROLLER_HOST but is part of CONFIG_NETWORK_HOSTS, we
apply the network manifest
- Same as above if our host is part of CONFIG_COMPUTE_HOSTS
Of course, the last two options would assume a first server is installed as controller.
This would allow us to reuse the same answer file on all runs (one per host as you
proposed), eliminate the ssh code as we are always running locally, and make some
assumptions in the python code, like expecting OPM to be deployed and such. A contributed
ansible wrapper to automate the runs would be straightforward to create.
What do you think? Would it be worth the effort?
+2 I like that proposal a lot! An ansible wrapper is then just an
example playbook in docs but could be done w/o ansible as well,
manually or using some other remote execution tooling of user's
choice.
Alan