Seems like a perfectly good way to solve your problem. If you wanted something that was a little more "conventional" to act as your provisioner and coordinator you could use Ansible for what you're doing here.
You might find that it gives you a helpful model/template for setting up a group of machines, ensuring they're configured as you need, that your artifacts get deployed to them consistently, and also that your jobs run as you intended and the results can be collected and pushed someplace.
I suggest Ansible, rather than other similar tools, entirely because it's so simple in scope of responsibility. It's a pretty straight forward DSL for orchestrating servers (just pushing commands to them to execute) that has no additional dependencies besides SSH and Python. Since it seems like that's all you really need for this task, there's not a lot of reason to use bigger frameworks/platforms.
Or... just keep using your shell scripts. :-)