I did not manage to find any tutorials, but I managed to get it work, and it actually works quite nicely. I don’t remember anymore what was the key thing to get it up and running, but in the end it was rather simple.
If I remember it correctly, the essential thing was to start using Consul and replace the swarm token with consul token. If you create a cluster purely on Swarm, it is a static construction (or at least was with the version I am using). You had to start all worker nodes with swarm join first and then swarm manage, but addition of nodes was not possible.
If you use consul, then you get a dynamic Swarm cloud and the ability to add and remove nodes without problems. And I do not run Swarm or Consul inside containers but on the cloud instance itself. I use Atlas tokens (free service, google it) to bootstrap my consul cluster.
The other issue I can remember, that is purely cloud related, was reseeding of docker and consul. I initially created a cloud image with all relevant appliations, spawned a couple of instances and hoped to get a nicely working Swarm cloud. Except that I didn’t. I got exactly one working node out of several.
The problem, as it appears, was that my cloud instance I used to create the image had already started docker and consul. When they start the first time, they create random id:s and other stuff. This was then replicated to all instances I spawned using this image, and a cluster refused to form as there were overlapping identifiers.
I had to do something like this in a script when starting a new cloud instance the first time (not sure if the sleeps are necessary, did not bother to test as it worked as it is):
sudo service consul stop
sudo rm -f /var/consul/* > /dev/null 2>&1
sudo service consul start
sudo service docker stop
sudo rm -f /etc/docker/key.json > /dev/null 2>&1
sudo service docker start
Hope this helps.